ARM9 개발판의 임베디드 리눅스 및 ARM 개발판에 대한 시작 권장사항
첫째, 기본 마이크로 컨트롤러 프로그래밍을 배우십시오.
하드웨어를 배우는 사람들에게는 먼저 하드웨어의 기본 사용 방법에 대한 감성적인 인식이 있어야 하고, 그 하드웨어의 제어 방식을 깊이 이해해야 하며, Linux 시스템을 처음 배우고 이식을 배우면 곧 깊은 소용돌이에 빠질 수밖에 없다. 제가 처음 ARM 을 배우기 시작했을 때 ARM7 (주로 당시 ARM9 는 여전히 비쌌음) 을 선택했습니다. ARM7 을 배울 때 여전히 51 단일 칩 마이크로 컴퓨터를 배우고 ADS 를 사용하여 프로그래밍했습니다. 첫 번째 실험은 led 제어였습니다. 한동안 ARM 을 배운 사람들은 이렇게 어리석게 웃을 것이다. 사실 그렇지도 않다. 나는 이 과정이 훨씬 좋아질 것이라고 생각한다. 아무리 복잡한 시스템을 만들어도 결국 이런 밑바닥의 하드웨어 제어에 구현되기 때문이다. 그래서 이러한 하드웨어 제어에 대한 감성적인 인식이 있으면 훨씬 좋다. 단일 칩 마이크로 컴퓨터의 프로그래밍을 배우면서 이 하드웨어의 구조와 제어 원리를 잘 이해해야 한다. 이를 나는 그를 이해하드웨어라고 부른다. 하드웨어를 이해하는 것은 이 하드웨어가 어떻게 이렇게 많은 자원을 구성하는지, 이 자원들이 어떻게 CPU 와 프로그래밍에 의해 제어되는지 이해하는 것이다. 예를 들어, S3C2410 에는 AD 변환기, GPIO (범용 IO 포트), NAND 플래시 컨트롤러가 있습니다. 이러한 것들은 모두 제어할 수 있는 레지스터가 있습니다. 이 레지스터들은 모두 주소가 있습니다. 그렇다면 이 주소들은 무슨 뜻입니까? 레지스터를 통해 이러한 주변 장치의 작동을 제어하는 방법은 무엇입니까? 또한 norflash 내부의 각 유닛은 이 칩의 메모리에 해당 주소 단위를 가지고 있습니다. 그러면 이 주소들은 방금 말한 레지스터 주소와 어떤 관련이 있습니까? 그들은 같은가요? Norflash 에 해당하는 nandflash 내부 저장 장치는 선형적으로 배출되지 않습니다. S3C2410 은 NAND 플래시 주소를 메모리 공간에 어떻게 매핑합니까? 아니면 단순히 낸드 플래시를 어떻게 사용해야 할까요? 또한 ADS 를 사용하여 ARM9 행을 프로그래밍할 때 초기화된 어셈블리 파일을 사용해야 하는데, 이 파일은 도대체 무슨 소용이 있는가? 그 안에 있는 코드는 무슨 뜻인가요? 이거 안 해도 되나요? 이런 것들은 모두 하드웨어에 대한 이해이고, 이런 것들을 이해하면 하드웨어에 대한 깊은 이해가 있다. 이는 앞으로 더 깊은 공부에 큰 도움이 될 것이다. 만약 이 단계를 건너뛰면, 나는 앞으로 배울수록 더 혼란스러울 것이라고 믿는다. 이 글은 심오하고 헤아릴 수 없다고 생각한다. (윌리엄 셰익스피어, 햄릿, 독서명언) 왜냐하면 너의 기초는 잘 맞지 않았기 때문이다.
둘째, 리눅스 시스템을 이용하여 몇 가지 기본적인 실험을 한다.
판자 한 세트를 살 때 일반적으로 리눅스의 실험 루틴을 제공하고, 한동안 잘 해 보세요. 이 과정도 의미가 있습니다. 또한 더 많은 학습을 위해 감성적 인식을 쌓는 것입니다. 리눅스를 사용해 본 적이 없는 사람이 리눅스의 프로그래밍을 잘 배울 수 있다고 상상할 수 있습니까? (데이비드 아셀, Northern Exposure (미국 TV 드라마), 예술명언) 수첩의 루틴에 따라 안에 있는 실험을 잘 해 보세요. 인형들이 걸음마를 배우고 약한 편이지만, 많은 고수들이 이 과정을 거치게 될 것 같아요. 이와 관련하여 Dell Deep Blue Technology 는 현재 해당 루틴을 제공할 계획이 없습니다. 주로 개발판 공급자가 풍부한 루틴을 제공하고 있습니다. 우리는 반복 작업을 하지 않고, 그들이 가지고 있지 않은 가장 가치 있는 것만 제공합니다.
셋째, 완전한 Linux 시스템의 작동 과정을 연구한다.
소위 완전한 리눅스 시스템에는 어떤 부분이 포함되어 있습니까? 세 부분: 부트 로더, 리눅스 커널, 루트 파일 시스템. 그렇다면 이 세 부분은 어떻게 서로 협력하여 이 시스템을 구성할까요? 각자 무슨 소용이 있습니까? 세 가지의 관계는 무엇입니까? 어떻게 연락하나요? 시스템의 실행 프로세스는 무엇입니까? 이 문제를 정확히 파악하면 전체 시스템의 운영에 대해 잘 알고 있으며, 다음 단계에 이 리눅스 시스템을 만드는 데 또 다른 중요한 기초를 놓을 수 있습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 성공명언) 이 방면의 자료를 소개하면 인터넷에서 몇 톤을 발굴할 수 있으니 스스로 잘 연구해 보세요.
넷째, 시스템 이식을 시작합니다.
앞서 언급한 리눅스는 세 부분으로 이루어져 있고, 그들 사이의 관계와 역할도 알고 있습니다. 이제 여러분이 해야 할 일은 스스로 이런 것들을 만드는 법을 배우는 것입니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 예술명언) 물론 나는 너에게 이 코드들을 작성하라고 할 수 없다, 이것은 실현되지 않는다. 사실 이 세 사람은 모두 인터넷에서 해당 소스 코드를 다운로드할 수 있지만, 이 소스 코드를 다운로드하여 컴파일하면 시스템에서 실행할 수 없고, 그가 너의 판자에서 실행할 수 있을 때까지 많은 수정이 필요하다. 이 수정 과정을 이식이라고 한다. 이식 과정에서 배워야 할 것이 많고, 알아야 할 관련 지식도 많다. 이 과정을 마치면 이미 초창기의 고수라는 것을 알게 될 것이다. (존 F. 케네디, 공부명언) 이 과정에서 연구 정신이 있다면 소스 코드를 보고 싶을 것이다. 많은 책들이 Linux 소스 코드를 어떻게 읽는지 소개하고 있습니다. 저는 목적 없이 Linux 소스 코드를 보러 가는 것을 제창하지 않습니다. 허삼다말로 말하면 의미가 없습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 독서명언) 이식을 할 때, 소스 코드를 보러 가야 할 때 기본적인 좋은 책을 찾아야 한다고 생각합니다. 여기 좋은 책인' Linux 커널의 분석과 프로그래밍' 을 추천합니다. 이것은 linux-2.6.11 커널에 대한 책입니다. 매우 깊습니다. 먼저 자신의 C 언어 프로그래밍 수준을 높이는 것이 좋습니다. 각 부분의 이식 인터넷에서도 많은 톤의 자료를 찾을 수 있습니다. 스스로 연구해 보세요. 하지만 자신의 경험을 소개하는 많은 것들이 어느 정도 보류되어 있다는 것을 상기시켜야 합니다. 당신은 그가 말한 대로 하는 것이 항상 문제가 있습니다. 하지만 그는 당신에게 어떻게 해결할지 말하지 않을 것입니다. 이때 자신에게 의지해야 합니다. 만약 자신이 믿을 수 없다면 나를 찾아 함께 연구해 보세요. 나도 당신의 문제를 해결할 수 있다고 장담할 수 없습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 믿음명언) 이 단계의 최종 목적은 소스 코드의 공식 홈페이지 (모두 외국, 비애) 에서 표준 소스 코드 패키지를 다운로드하여 수정하여 판자에서 실행하는 것이다. 아르키메데스의 말을 도용하다. "인터넷 케이블 하나 주세요. 리눅스를 고칠 수 있어요."
다섯째, 리눅스 드라이버 작성을 연구합니다.
이식 시스템은 최종 목적이 아니며, 최종 목적은 제품 개발, 프로젝트, 드라이버 개발을 하는 것이다. Linux 의 드라이버는 다양하다고 할 수 있습니다. linux2.4 와 linux2.6 의 작성에는 상당한 차이가 있습니다. 즉, linux2.6 과 같지만 버전마다 드라이버가 다르기 때문에 Linux 용 드라이버를 작성하는 것은 그리 쉬운 일이 아니며 최신 버전의 드라이버 작성에는 충분한 참고 자료가 없습니다. 그럼 제 제안은 아주 새로운 버전의 커널을 사용하고 이식하는 것입니다. 이렇게 하면 구동을 배우는 프로그래밍에 충분한 자료가 있을 것입니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 스포츠명언) 이 부분의 추천서는 또 다른 문장' 임베디드 리눅스를 배우는 책 몇 권 추천' 을 참고할 수 있다. 여섯째, 응용 프로그램 작성을 연구합니다. 작품을 만들어 프로젝트를 하는 것은 드라이버를 작성하는 것 외에 마지막으로 앱을 작성해야 한다. 현재 추세는 그래픽 애플리케이션 개발이며 그래픽 애플리케이션에서 가장 많이 사용되는 것은 qt/e 라이브러리입니다. 나는 줄곧 이 라이브러리를 사용하여 자신의 앱을 개발해왔지만, 나는 네가 국산 미니게이스 라이브러리를 사용할 수 있기를 바란다. 주걸륜 도용 광고어는' 국산 지원, 미니구 지원' 이다. MiniGUI 의 프로그래밍은 Windows 의 VC 프로그래밍과 비슷하며, 비교적 쉽게 시작할 수 있습니다. 효과는 상당히 좋습니다. ARM7 프로그램을 개발하기 위해 사용했습니다. 문제는 공부할 수 있는 가장 좋은 기회라는 것을 기억하십시오