ARM 개발 단계 : 아이디어의 개발을 시청 한 후 더 명확 것

최소 시스템 보드를해야합니다 : 당신이 ARM 개발을 완료하지 않은 경우에, 나는 당신이 시작 모드 및 ARM 마이크로 컨트롤러 또는 DSP를 다른 있기 때문에, 모든 응용 프로그램이하고있는, 자주 발생하는 Tandaqiuquan을 시작하지 않는 것이 좋습니다 모든 종류의 문제, 단지 작은 시스템 보드 플래시, SRAM이나 SDRAM, CPU, JTAG에 천으로, 그리고 확장 인터페이스를 떠나, 신호를 재설정하는 것이 좋습니다. 제대로 작동하려면 시스템을 최소화하여 작업이 절반 완료, 당신은 이미 아주 쉬운 일이 당신에게 말하고 이러한 배선 하드웨어, 경험이 있다면 좋은 주변 장치 인터페이스 표준 인터페이스는 기본적으로 ARM 있습니다. 2. 작은 다음 섹션을 포함하여 개시 될 수있는 코드에 따라 상기 제 하드웨어 주소를 작성하는 코드를 기록 인 에이블 포트 초기화, 마스크 가능 인터럽트는 SRAM으로 복사 프로그램, 완전한 재 매핑 코드; 핸들러 구성은 C 언어에 연결된 입구 인터럽트. 어쩌면 당신은 당신이 개발 보드를하고 있지 않기 때문에 부트 로더, 많은 것들을 수 있지만 이러한 복잡한 절차에 의해 문제가되지 않는 프로그램의 몇 가지 예를 제공 참조하여 작업이 응용 프로그램을 만들기 위해, 프로그램의 작은 부분을하는 것입니다 아래로 실행할 수 있습니다. 3. ARM 호환 코어하지만, 각 칩은 고유의 특성을 가지고 있지만 프로그램을 작성할 때이 칩을 사용하는 정보를주의 깊게 연구는, 우리는 이러한 문제를 고려해야합니다. 특히 여기에 여자는 항상 변화에 대해 이야기 더 혼란 다른 사람의 샘플 프로그램 수정을하려면, 심리적 의존이 없습니다. 4. 오픈 소스 프로그램 ARM에서 자신의 응용 프로그램을 향상시키기 위해 운영 시스템 프로그램, 많은 일부 봐, 우리가 다른 사람의 프로그램을 살펴 봐야 등 리눅스, UC / OS-II, 이들은 모두 좋은 원래의 코드입니다. 당신이 하드웨어에 대한 경우 5. 각 제조 업체 칩 보드 실질적으로 개략적으로 DEMO 있습니다. 첫 번째 회로도 소화. 그래서 당신은 설계, 자원을 할당하는 아주 좋은 생각을 한 후. DATSHEET 장치는 잘 소화해야합니다. 6. 운영 체제 메커니즘을 이해하기위한 최고의 소프트웨어를 수행합니다. 물론, 이것은 소프트웨어 엔지니어를위한 케이크 한 조각이다. 하지만 하드웨어는 조금 힘든 탄생합니다. Q : 최소 시스템 보드는 2 층 또는 4 층 좋다합니까? , 4 층 기판의 선택 전력 및 접지의 문제뿐만 아니라 : A : 네 층 보드 및 33 옴 저항에만 두 층 AT91 판, 다른 층의 적어도 4 수 44b0 접지 및 전력 처리 판은 두 될 수 고속 디지털 회로 트레이스 임피던스 필요한 바닥 판 임피던스 제어되지 않는다. 33 옴 저항은 일반적으로 구동 측에 적용될뿐만 아니라, 임피던스 정합의 역할 재생되고, 제 1 배선 레이아웃 데이터 어드레스 라인, 및 고속 회선을 확보 할 필요가, 높은 주파수에서 상기 PCB의 트레이스 전송 선로로 간주 할 때. 전송선 전송선 이론 알고 학습 전송선 임피던스 돌연변이 (불일치)의 어딘가가 발생하면, 신호의 반사가 발생하면, 반사 된 신호는 정상적인 회로에 영향을 미칠 것이다 일본어 심각한 방해, 특성 임피던스 일. 4 층 기판을 사용하는 경우 그 중 하나는 두 개의 신호 계층을 분리하므로, 상기 외부 층은 일반적으로 외부 층 트레이스 가까이 그면에 형성되어 더 중요하다, 신호 라인 각각 두 중간 전력 및 접지 평면을 가지고, 상기 "마이크로"로 (마이크로) 전송 라인, 임피던스는 상대적으로 고정되어 있지만, 산출 할 수있다. 2 층 보드를 들어 그렇게하는 것이 더 어렵다. 주로 라인의 선폭에 상기 전송 라인 임피던스, 기준면과의 거리 및 계산을위한 다수의 기존 방법과 수식에 관련된 재료의 동장 유전 특성의 두께. 시리즈에서 33 옴 저항 후 통상 구동에 끝 (33 옴 사실, 반드시 몇 옴 내지 오십 육십 유럽하는 특정 회로에 따라 보유), 효과가있는 송신기의 상하 직렬 출력 임피던스는 임피던스 매칭 라인 신호 (용액 일치하지 않는 종단 임피던스를 가정)이 반영되도록 다시 반사되지 않는다 (흡수)가 영향을받지 않도록 수신단 신호. 수신 측에서, 예를 들면, 병렬 접속 된 저항과 일치 할 수 있지만, 비교적 작은 갖춘 디지털 시스템에서,보다 번잡하고 많은 시간 소스 매칭 쉽게 할 바와 같이, 이러한 어드레스 버스로서, 과충전 부족하다. 여기 셔틀 주파수가 회로보고의 주파수보다 높은 주파수에서 매우 높은 클럭 속도는, 더 중요한 것은 신호의 하강 시간을 확인하는 것입니다 필요는 없다 고 말했다. 일반적으로는 상승 (또는 하강) 시간 - 주파수 회로 및 1NS 시간이 증가하는 경우, 그것은 그 회로 설계 고려 수단은 1000MHz의 역수 등 상승 시간의 대체로 절반 역수에 의해 추정 될 수는 500MHz의 주파수 대역 Yaoan이며 . 때로는 의도적으로 시간의 가장자리, 많은 고속 IC는, 리눅스 리눅스 자체에 내장 된 조정. 구성 툴 체인 세트가 포함되어 있습니다 자신을 교차 개발 환경과 임베디드 시스템의 운영 환경을 설정하기 쉬운 출력 드라이브의 기울기를 느리게하고, 할 수있다 임베디드 시스템 개발 시뮬레이션 도구에 걸쳐 장벽 (ICE)입니다. 사람들이 자신을 설계하고 실제 하드 실시간 시스템 및 Linux에서 소프트 실시간 시스템을 쉽게 실현 될 수 개발을 할 수 있도록 완전히 커널을 엽니 다. 강력한 네트워크 지원은 임베디드 TCP / IP 네트워크 프로토콜 스택의 개발 될 것입니다 리눅스 네트워크 프로토콜 스택을 사용하는 것을 가능하게한다. 리눅스는 모든 필요한 커널과 사용자 인터페이스의 실질적으로 완전한 삽입을 제공, 그것은다면입니다. 그것은 포함 된 작업과 사용자 인터페이스를 처리 할 수 ​​있습니다. 작은 임베디드 리눅스 시스템은 세 가지 기본 요소가 필요합니다 : 임베디드 리눅스 리눅스는 확장 할 수 임베디드 시스템의 시뮬레이션 툴 (ICE)의 발전에 자신의 자신에 임베디드 시스템을위한 교차 개발 환경 및 실행 환경을 설정하기 쉬운 툴 체인 세트와 장벽을 구축하고있다. 사람들이 자신을 설계하고 실제 하드 실시간 시스템 및 Linux에서 소프트 실시간 시스템을 쉽게 실현 될 수 개발을 할 수 있도록 완전히 커널을 엽니 다. 강력한 네트워크 지원은 임베디드 TCP / IP 네트워크 프로토콜 스택의 개발 될 것입니다 리눅스 네트워크 프로토콜 스택을 사용하는 것을 가능하게한다. 리눅스는 모든 필요한 커널과 사용자 인터페이스의 실질적으로 완전한 삽입을 제공, 그것은다면입니다. 그것은 포함 된 작업과 사용자 인터페이스를 처리 할 수 ​​있습니다. 작은 임베디드 리눅스 시스템은 세 가지 기본 요소가 필요합니다 : 임베디드 리눅스 리눅스는 확장 할 수 임베디드 시스템의 시뮬레이션 툴 (ICE)의 발전에 자신의 자신에 임베디드 시스템을위한 교차 개발 환경 및 실행 환경을 설정하기 쉬운 툴 체인 세트와 장벽을 구축하고있다. 사람들이 자신을 설계하고 실제 하드 실시간 시스템 및 Linux에서 소프트 실시간 시스템을 쉽게 실현 될 수 개발을 할 수 있도록 완전히 커널을 엽니 다. 강력한 네트워크 지원은 임베디드 TCP / IP 네트워크 프로토콜 스택의 개발 될 것입니다 리눅스 네트워크 프로토콜 스택을 사용하는 것을 가능하게한다. 리눅스는 모든 필요한 커널과 사용자 인터페이스의 실질적으로 완전한 삽입을 제공, 그것은다면입니다. 그것은 포함 된 작업과 사용자 인터페이스를 처리 할 수 ​​있습니다. 작은 임베디드 리눅스 시스템은 세 가지 기본 요소가 필요합니다 :가이드 도구 리눅스 마이크로 커널, 메모리 관리, 프로세스 관리 및 트랜잭션 처리가 구성 당신이 뭔가를하고 싶은 작은 남아 있으면 추가해야합니다, 초기화 프로세스를 : 하드웨어 드라이버는 하나 개 이상의 응용 프로그램에 필요한 기능을 제공 . 기능을 추가, 당신은이 필요할 수 있습니다 :파일 시스템 (아마도 ROM 또는 RAM에), * TCP / IP 우리는 네 단계로 커널, 시스템 시작, 드라이버, X-창 MicroWindows를 간소화해야 임베디드 리눅스의 실제 개발을 설명하는 다음 네트워킹 스택. 핵심 커널 구성을 간소화 일반적으로 사용되는 명령은 다음과 같습니다 : 설정, 출발, 청소, mrproper, zImage에, bzImage 행, 모듈, modules_install 라합니다. 약간 명령 설명. 의 설명에 예제를 사용하자 : 나는 맨드레이크는 2.2.15를 동봉 된 사용하고 있습니다. 나는 구성 파일이 데이터에 의존 완전히 얻을 수정 프로그램 한 줄의 코드도 변경되지 않았습니다. 첫째, 설정은 모든 옵션이 너무 지불 제거 할 수 있습니다합니다. 플로피 수행, SMP, MTRR이없는, 모든 블록 장치은 기존의 IDE 장치를 떠나, 제거되고, 모든 문자 장치가 제거 된 모든 파일 시스템은 미닉스를 떠나, 제거, 소리없는 네트워킹, SCSI를 않습니다 지원. 날 믿어, 내가 모든 옵션이 제거 넣었습니다. 이렇게하면, 나는 188K의 마음을 얻었다. 그것을 충분히 작은? OK, 이동과 결합의 -O3에서 다음 두 파일을 보내 주시기 바랍니다, -O2는 -Os로 대체. ./Makefile. / 아치 / I386 / 커널 / 메이크 결과, 9K 전체의 핵심 작은, 179K가됩니다. 그러나 리눅스의 핵심 기능은 연주하기 어려운 것, 그래서 다시 가서 네트워크를 추가하기로 결정했다. 일반에 다시 추가 네트워크 지원, 핵심 K. 189이되고, 다시 컴파일 는 TCP / IP 스택에 10K 플러스는 사업에 얻을 것으로 보인다. 아무 드라이버 스택은 모든 헛된 없다, 그래서 보통의 RTL8139 드라이버 임베디드 보드, 다시 195K를 추가했다. 당신이 DOS 파일 시스템을해야하는 경우 213K의 크기가된다. EXT2의 미닉스 교체를 사용하는 경우, 크기는 222K로 성장한다. 리눅스 메모리는 약 600K ~ 800K 사이에 필요로했다. 시리얼 C 라이브러리 어려움이 있기 때문에 1메가바이트 메모리는 켜져 있지만, 덜 유용 할 수있다. 메모리 2MB의 뭔가를 할 수있을 수 있습니다,하지만 당신은 4메가바이트하려는하거나보다 완벽한 시스템을 수행하기 전에 더. 리눅스 파일 시스템은 약 23 만, 상당히 크기 때문에 볼륨의 3 분의 1을 차지한다. 메모리 관리는 80K의 합과 같은 다른 핵심 부분을 차지한다. TCP / IP 스택은 드라이버가 120K를 차지, 65K를 차지했다. 시스템 V IPC는 제거 할 수 있습니다 필요한 경우 21K를 들어, 코어 파일이 10K에 대한 더 작은 수 있습니다 차지하고있다. 당신이 코어의 크기를 자르려 경우,이 이동해야? 대답은 분명하다, 물론, 파일 시스템입니다. 리눅스 VFS는 파일 시스템 버퍼 캐시의 디자인, 디렉토리 캐시는 시스템의 효율성을 증가 단순화합니다. 그러나 이러한 임베디드 시스템은 단순히 매우 유용하지 않습니다. 그들은 제거 할 수있는 경우에 대한 20K 코어는 즉시 줄일 수있다. 당신이 드라이버의 파일 시스템 유형에 직접 기록 전체 VFS를 건너 뛰면 약 230K 50K로 감소 할 수 있어야합니다. 전체 코어는 약 100K로 축소. 시스템 부팅 순서를 부팅하고 관련 문서, 핵심 소스 코드 디렉토리에 여전히 다음 문서를 참조하십시오 ./arch/$ARCH/boot/ bootsect.s ./arch/$ARCH/boot/setup.s ./init/ main.c의 bootsect. S와 setup.S이 프로그램은 리눅스 자신의 부트 스트랩 프로그램을 포함하여 리눅스 커널의 첫 번째 프로그램이지만, 전이 프로그램의 설명에, 먼저 (동작을 설명 여기십시오 "를 의미해야 할 때 일반 IBM의 PC 부팅 열려 PC 전원 "). PC에 일반적 열면 전원이 메모리 어드레스 FFFF 의해 결정된다 : 0000이 실행 (이 주소는 일반적 FFFFFh에 FEOOOh으로 ​​ROM의 BIOS에서 ROM의 BIOS에 있어야) 시작, 여기서 콘텐츠는 점프 명령, 점프 중에 롬 바이오스에있는 다른 위치로 일련의 동작을 실행하기 시작한다. 즉시 시스템 테스트 코드 후, 제어는 부트 프로그램 (ROM 부트 스트랩 루틴)의 ROM에 전달된다. 메모리를 읽을 곳으로 같은 메모리에 디스크로부터이 프로그램을 제로의 첫 번째 섹터, 트랙 제로 - 절대 위치 :? 0000 07C0 (즉 07C00h AT) IBM PC 시리즈의 특징이다. 그리고, 그것은 리눅스 부팅 디스크의 부트 섹터에있는 리눅스 bootsect 프로그램입니다. 잘 알려진 MS DOS와 리눅스 부팅 섹션은 피상적 인 비교가 될 수 있습니다. 부트 프로그램의 MS DOS 책임이 메모리에 IO.SYS의 디스크 부트 섹터에 위치하고 있으며, DOS 및 IO.SYS는 커널 --MSDOS에 책임이 있습니다. SYS는 메모리 작업에로드. 그리고 리눅스는 설정 및 메모리에로드 리눅스 커널의 부트 섹터에있는 bootsect 프로그램의 책임입니다, 다음 설정을 제어 할 수 있습니다. 드라이버 리눅스 시스템은 시스템에 디바이스 드라이버가 제공하는 엔트리 포인트의 세트는 하나 개의 구조로 설명 될 것이다. 장치 드라이버 엔트리 포인트는 시스템에 등록으로 제공 될 때 디바이스 드라이버 초기화되도록 적절한 시간에 시스템 콜. 리눅스 시스템, register_chrdev ()에 호출하여 시스템에 등록 된 문자 디바이스 드라이버. 리눅스에서는 또한 직접 코어 시스템 소스 코드를 수정하기 위해, 장치 드라이버가 외부에서 코어에 첨가하고, 디바이스 드라이버 모듈로로드 될 수 있고, 이는 코어의 일부가 시스템 관리자에 의해 동적으로 로딩 . 또한 동적으로 시스템 관리자가 언로드 모듈을로드 할 수 있습니다. 리눅스는 모듈 (A * .o 인 파일이 존재하는 링크없이) 오브젝트 파일로 GCC로 컴파일, C로 작성 할 수 있습니다. 이 명령 줄에서의 gcc -c 매개 변수를 추가해야합니다. 성공적으로 시스템에 장치 드라이버를 등록한 후 (register_chrdev ()에 성공을 호출 한 후), 특정 파일에 매핑 된 장치의 mknod 명령을 사용할 수 있습니다. 다른 프로그램이 특정 파일이 라인에서 작동하는 한,이 장치를 사용합니다. 상기 X 윈도우는 계층 적 구조를 이용하여 설계 방법의 MicroWindows MicroWindows 대체. 그것은 다른 레이어가 실용적인 응용 프로그램에 맞게 할 수 있습니다. 프로그램이 실제 하드웨어 장치 및 기타 맞춤형 장비에 액세스 할 수 있도록 가장 낮은 수준에서, 그것은 드라이브 화면, 마우스 / 터치 스크린과 키보드를 제공합니다. 중간 계층, 휴대용 그래픽 엔진, 드로잉 선, 영역을 작성 다각형 렌더링, 클리핑 및 색상 모드가있다. 상위 수준에서, 그것은 그래픽 응용 프로그램에 대해 다른 API를 제공한다. API는 수도 있고 바탕 화면 및 창 모양을 제공하지 않을 수 있습니다. 현재 MicroWindows 윈도우에서 Win32 / 주춤 GDI 나노-X API를 지원합니다. 다른 응용 프로그램 MicroWindows에 쉽게 이식 할 수 있도록 API는 Win32 및 X 윈도우 시스템과의 긴밀한 호환성을 제공합니다. 오 파일)이 존재한다. 이 명령 줄에서의 gcc -c 매개 변수를 추가해야합니다. 성공적으로 시스템에 장치 드라이버를 등록한 후 (register_chrdev ()에 성공을 호출 한 후), 특정 파일에 매핑 된 장치의 mknod 명령을 사용할 수 있습니다. 다른 프로그램이 특정 파일이 라인에서 작동하는 한,이 장치를 사용합니다. 상기 X 윈도우는 계층 적 구조를 이용하여 설계 방법의 MicroWindows MicroWindows 대체. 그것은 다른 레이어가 실용적인 응용 프로그램에 맞게 할 수 있습니다. 프로그램이 실제 하드웨어 장치 및 기타 맞춤형 장비에 액세스 할 수 있도록 가장 낮은 수준에서, 그것은 드라이브 화면, 마우스 / 터치 스크린과 키보드를 제공합니다. 중간 계층, 휴대용 그래픽 엔진, 드로잉 선, 영역을 작성 다각형 렌더링, 클리핑 및 색상 모드가있다. 상위 수준에서, 그것은 그래픽 응용 프로그램에 대해 다른 API를 제공한다. API는 수도 있고 바탕 화면 및 창 모양을 제공하지 않을 수 있습니다. 현재 MicroWindows 윈도우에서 Win32 / 주춤 GDI 나노-X API를 지원합니다. 다른 응용 프로그램 MicroWindows에 쉽게 이식 할 수 있도록 API는 Win32 및 X 윈도우 시스템과의 긴밀한 호환성을 제공합니다. 오 파일)이 존재한다. 이 명령 줄에서의 gcc -c 매개 변수를 추가해야합니다. 성공적으로 시스템에 장치 드라이버를 등록한 후 (register_chrdev ()에 성공을 호출 한 후), 특정 파일에 매핑 된 장치의 mknod 명령을 사용할 수 있습니다. 다른 프로그램이 특정 파일이 라인에서 작동하는 한,이 장치를 사용합니다. 상기 X 윈도우는 계층 적 구조를 이용하여 설계 방법의 MicroWindows MicroWindows 대체. 그것은 다른 레이어가 실용적인 응용 프로그램에 맞게 할 수 있습니다. 프로그램이 실제 하드웨어 장치 및 기타 맞춤형 장비에 액세스 할 수 있도록 가장 낮은 수준에서, 그것은 드라이브 화면, 마우스 / 터치 스크린과 키보드를 제공합니다. 중간 계층, 휴대용 그래픽 엔진, 드로잉 선, 영역을 작성 다각형 렌더링, 클리핑 및 색상 모드가있다. 상위 수준에서, 그것은 그래픽 응용 프로그램에 대해 다른 API를 제공한다. API는 수도 있고 바탕 화면 및 창 모양을 제공하지 않을 수 있습니다. 현재 MicroWindows 윈도우에서 Win32 / 주춤 GDI 나노-X API를 지원합니다. 다른 응용 프로그램 MicroWindows에 쉽게 이식 할 수 있도록 API는 Win32 및 X 윈도우 시스템과의 긴밀한 호환성을 제공합니다. API. 다른 응용 프로그램 MicroWindows에 쉽게 이식 할 수 있도록 API는 Win32 및 X 윈도우 시스템과의 긴밀한 호환성을 제공합니다. API. 다른 응용 프로그램 MicroWindows에 쉽게 이식 할 수 있도록 API는 Win32 및 X 윈도우 시스템과의 긴밀한 호환성을 제공합니다.

추천

출처blog.51cto.com/14355585/2414439