현재 위치 - 인적 자원 플랫폼망 - APP 자료 - 자체 학습 임베디드 프로세스는 무엇입니까?
자체 학습 임베디드 프로세스는 무엇입니까?
원본 링크: 웹 링크

임베디드 리눅스 학습 로드맵 저는 1999 의 대학이며 물리학을 전공하고 있습니다. 대학 1 학년 때, 반은 일반적으로 미래에 대한 불안으로 가득 차 있었고, 물리학을 배우고 나가면 무엇을 할 수 있을지 몰랐다. (윌리엄 셰익스피어, 햄릿, 공부명언) 너의 현재의 경험과 현재의 학습은 반드시 너의 미래의 생활에 영향을 줄 것이다. 졸업 후 우리는 해외유학을 떠나 금융으로 전학, 유학교교, 과학 연구, 칩 디자인, 프로그램 작성, 회사 개설 등 자신의 직업을 찾았다. 이것들은 모두 우리가 학교에서 배운 기본기 (수학, IT, 전자회로) 와 단련된 자습 능력을 빼놓을 수 없다.

그래서 당신들은 막막한 학생이고 전학을 원하는 프로그래머입니다. 미래에는 반드시 너의 자리가 있을 것이다. 좋든 나쁘든 현재의 노력과 축적에 달려 있다.

나는 몇 년 후에 어떤 업종이 유행할지 예측할 수 없고, 네가 이 문장 공부를 하면 큰돈을 벌 수 있다는 보장도 없다. 나는 단지 10 여 년의 경험을 가진 프로그래머일 뿐이다. 만약 네가 프로그래밍에 관심이 있다면, 나는 너에게 몇 가지 건의를 하고 싶다.

1. 프로그래머의 세 방향. 프로그래머의 방향은 일반적으로 전문 분야, 업무 영역, 운영 체제 영역의 세 가지 범주로 나눌 수 있습니다. 네가 그들을 이해한 후에, 너의 흥미에 따라 선택하라.

전문 분야에서 나는 건의를 할 수 없다.

비즈니스 (즉, 애플리케이션) 가 운영 체제와 완전히 별개인 것은 아닙니다.

(1) 물리적 제품을 개발할 때 우수한 어플리케이션을 작성하는 사람들은 일정 우선 순위 설정 및 특정 기능이 프로세스를 휴면시킬 수 있다는 것을 아는 것과 같은 운영 체제를 알아야 하는 경우가 있습니다.

(2) 애플리케이션을 쓰는 사람이 시스템 엔지니어로 승진할 때, 그는 위에서 아래로 모두 알아야 하고, 그리고 운영 체제 분야에 대한 지식이 필요하다. 그렇지 않으면, 당신은 어떻게 전체 시스템을 설계할 수 있습니까?

3 앱을 만드는 사람은 업계의 요구와 업무의 논리를 이해해야 한다. 그래서 지도자가 되는 사람들은 대부분 응용형이다. 일단 네가 한 업종에 들어가면, 업종을 바꾸기가 매우 어렵다.

(4) 운영 체제 분야에서는 모든 업종을 억압하고 있다. 그는 기본 시스템만 담당하고, 그가 위에서 개발한 업무는 그와 무관하다. 이 분야의 많은 사람들은 모두 기술 전문가이다.

⑤ 운영 체제와 사업 사이에는 경계가 없다. 운영 체제 경험이 있고, 다시 응용하면, 문제가 생기면 시스템의 근본 원인과 해결책을 알 수 있다. 업무 경험이 있으면 운영 체제를 다시 배울 수 있고, 곧 팀 자립 포털을 만들 수 있다. 적어도 CTO 는 문제없다.

1..1의 전문 분야는 다음 두 가지 범주로 나눌 수 있습니다.

1..1..1학술 연구

음성, 이미지 처리, 인공지능과 같은 작업에는 강력한 이론적 지식이 필요합니다. 나는 이런 사람을' 과학자' 라고 생각하는 경향이 있다. 그들은 이미 여러 해 동안 공부했고, 자주 학술 연구를 한다.

임베디드 분야에서는 일부 알고리즘을 사용하여 결과를 표현하고 일부 칩을 최적화해야 합니다. 이 부분의 일은 누군가가 완성할 수 있다.

1..1.2 엔지니어링 구현

이들 전문 분야의 개념은 이해하지만 심도 있는 연구는 하지 않은 사람들도 있다. 다양한 오픈 소스 자료를 사용하여 목표를 달성하고 제품을 만들 수 있습니다. 예를 들어 이미지 처리와 같이 opencv 에서 수백 개의 복잡한 함수를 사용하여 아바타를 인식하는 방법을 알고 있습니다. 때로는 이러한 기능을 특정 칩에 맞게 최적화할 수 있습니다.

전문 분야' 는 내가 좋아하는 것이 아니다. 만약 네가 이 일을 하고 싶다면, 나는 가장 좋은 입문 방법은 학교에서 대학원생과 박사 과정을 공부하는 것이라고 생각한다.

1.2 업무 영역, 즉 애플리케이션은 다음 두 가지 범주로 나눌 수 있습니다.

1.2. 1 인터페이스 표시

물론, 당신은 제품을 만들기 위해 좋은 인터페이스가 필요하지만, 이것은 중요하지 않지만, 발전 잠재력이 없다.

현재 핫단어는 안드로이드 앱과 IOS 앱 개발입니다. 안드로이드와 IOS 라는 단어에 현혹되지 마세요. 이들은 이전 VC 및 VB 와 동일하지만 GUI 컨트롤 세트만 있습니다.

나는 내가 너를 불쾌하게 하지 않았으면 좋겠다. 나는 나의 이유가 있다.

프로그램에는 GUI 인터페이스가 필요하지만 프로그램의 내부 논리가 핵심입니다. Android 및 IOS 개발 도구는 GUI 개발을 단순화하고 이러한 컨트롤의 상호 작용 메커니즘을 제공하며 네트워크 전송과 같은 서비스를 캡슐화하고 제공합니다. 프로그램 내부의 비즈니스 논리, 비디오 이미지, 사운드 처리 등이다. , 모두 핵심입니다. 또한 서버측 데몬을 잊지 마십시오. 데이터를 보다 안전하게 저장하고, 고객의 개인 정보를 보호하고, 수백만 개의 동시 액세스를 처리하는 방법 등이 핵심입니다.

하지만 안드로이드와 IOs 앱을 사용하면 빨리 시작할 수 있습니다! 만약 당신이 4 학년 학생이라면, 직업을 찾고 싶다면, 1 또는 2 개월 동안 안드로이드나 IOS 를 공부한다면, 직업을 쉽게 찾을 수 있을 것이다. 결국 APP 의 수요는 항상 가장 크며, 현재 이 두 기술은 여전히 핫하다. 20 1 1 및 20 12 전후에 안드로이드 프로그래머의 초봉은 상당히 높았다가 떨어지기 시작했다. 안드로이드 앱의 기본 입문시간은 1 개월밖에 되지 않아 아는 사람이 늘고 있다. 20 13 년 및 20 14 년 IOS 개발 급여가 안드로이드보다 훨씬 높기 때문에 각종 IOS 교육도 노출됐다. 중국은 줄곧 빠른 템포가 부족하지 않은 인재로, 한동안 IOS 엔지니어도 배추 가격일 것으로 예상된다.

안드로이드와 IOS 를 이해하는 것은 기본적인 요구 사항일 뿐입니다. 당신이 5 1job 에 가서 안드로이드나 IOS 를 검색한다고 믿지 않으면, 다른 요구 사항은 직위 요구 사항에서 인정받을 것입니다.

1.2.2 비즈니스 로직

간단한 예를 들어, 천공 카드 소프트웨어를 만들려면 다음 사항을 고려해야 합니다.

(1) 정상적인 프로세스는 출근 카드를 찍는 것이다.

② 누군가가 잊어 버리면 어떡하지? 예외로 로그하고 관리자에게 푸시합니다.

(3) 휴가를 어떻게 처리합니까?

4 초과 근무를 어떻게 처리합니까?

좀 더 복잡한 예를 들어, 화상 회의 시스템에서 다양한 모듈을 연결하는 방법, 다양한 프로토콜과 호환되는 방법, 업계에 깊이 들어가지 않고서는 전혀 알 수 없습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 예술명언)

응용개발직은 항상 가장 많고 입사 문턱이 낮다. 기본적으로 C 언어를 할 줄 알고 면접에서 잘하는 한, 일반 회사는 당신에게 기회를 줄 것이다. 왜냐하면:

회사에 입사한 후에는 재교육을 받아야 한다: 그들의 업무 논리에 익숙하다.

2 당신이 해야 할 일은 기본적으로 모듈입니다. 틀은 이미 정해져 있습니다. 코드만 작성할 수 있습니다.

소프트웨어 회사에서 리더들은 기본적으로 앱을 쓰고 있습니다 (물론 마케팅도 있습니다). 앱을 쓰는 사람은 외부에서 시장을 연구하고 고객을 접대할 수 있고, 내부 관리 프로그래머가 개발을 완료할 수 있다. 만약 그가 지도자가 되지 못하게 한다면, 누가 할 수 있겠는가?

만약 당신의 야망이 앱을 쓰는 것이라면, 먼저 기본 기술을 연습하는 것이 좋습니다. 데이터 구조와 알고리즘이 필요합니다. 그리고 당신의 관심사에 따라 데이터베이스, 네트워크 프로그래밍 등을 선택하여 심도 있게 공부할 것을 제안합니다.

마지막으로 자신이 관심 있는 업종 심층 경작 10 년을 선택하였다. 앱 개발을 하는 사람이 어떤 업종을 선택해서 앞으로 업종을 바꾸기가 어렵다. 선 선택이 중요해요!

UCOS 는 1.3 운영 체제 분야에서 너무 간단합니다. VxWorks 는 너무 비싸고 전문적입니다. Windows 는 임베디드 시스템을 사용하지 않습니다. IOS 는 오픈 소스가 아니므로 운영 체제 분야에서만 Linux 를 할 수 있습니다.

리눅스는 임베디드 분야에서 독보적입니다!

안드로이드는요? QT 와 마찬가지로 안드로이드도 GUI 시스템입니다. 구글의 실력이 너무 강해서 안드로이드가 어디에나 있기 때문에 리눅스+안드로이드가 표준이 되는 경우가 많다. 여기서 우리는 몇 가지 API 를 배우고 인터페이스 프로그램을 개발하는 것이 아니라 Android 의 전체 시스템과 메커니즘에 대해 우려하고 있습니다. 운영 체제 영역에 포함된 내용은 간단히 말하면 좋은 시스템을 갖춘 전용 "컴퓨터" 를 만드는 것으로, 구체적으로 다음과 같이 나눌 수 있습니다.

① 제품 하드웨어 계획:

요구 사항, 성능 및 비용에 따라 기본 칩을 선택하고 하드웨어 개발자가 설계한 주변 장치와 일치시킵니다.

(2) 운영 체제를 제작 및 설치하고 단일 보드 드라이버를 작성합니다.

③ 맞춤형 유지 보수, 업그레이드 및 기타 시스템 프로그램.

④ 안드로이드와 같은 GUI 시스템도 구성 및 설치할 수 있습니다.

⑤ 응용 프로그램 개발자를위한 개발 환경 구성.

⑥ 시스템 관점에서 문제를 해결한다.

이 영역을 흔히 "기본 시스템" 또는 "개발 주도" 라고 합니다.

먼저 두 가지 일반적인 오해를 해결하십시오.

이 직업은 드라이버를 쓰는 것입니까?

위에 나열된 6 가지를 보면 드라이버 개발이 포함되어 있지만 드라이버 개발보다 훨씬 더 많다고 말해야 합니다.

② 우리는 여전히 드라이브를 써야합니까? 원래 공장이 없나요? 아니면 그냥 바꾸면 되나요?

종종 원래 칩 드라이버가 잘 작동한다고 말하는 사람들이 있습니다. 가져가서 바꾸면 됩니다. (존 F. 케네디, 칩, 칩, 칩, 칩, 칩, 칩) 하드웨어가 원본 마더보드와 정확히 같고 원본 소스 코드에 버그가 없는 경우 성능을 최적화하고 비용을 절감하며 일부 특색 있는 제품을 제작하지 않으려는 것이 옳다.

하지만 이 혁신이나 죽음의 시대에, 이것이 가능할까요? ! 두 가지 이유가 있습니다.

(1) 코드만 수정해도 수정 가능한 전제는 이해입니다. 가장 좋은 이해 방법은 처음부터 몇 개의 드라이버를 작성하는 것이다.

② 시스템에 대한 심층적 인 사용자 정의가 필요한 경우가 많습니다.

과거에는, 연발과 휴대폰은 인터페이스 교체를 통해서만 선적할 수 있었지만, 지금은 짝퉁 공장이 이미 일괄 쓰러졌다. 모든 사람이 수정하지 않고 원본 계획을 사용할 때, 그들은 결국 원가를 쟁취할 수밖에 없다.

예를 들어, 심천에는 두 개의 교통 카메라와 감시 카메라 제조업체가 있는데, 그들은 나에게 네 가지 프로젝트를 하라고 했습니다.

① 제조업체가 제공한 SD 카드의 드라이버 성능을 향상시키고 DMA 를 사용합니다.

② 플래시 모델을 교체하면 시스템에 문제가 자주 발생하여 드라이버 버그를 수정해야 합니다.

③ 터치 스크린이 제대로 클릭되지 않아 원인을 찾았습니다. 나중에 바이 패스 커패시턴스로 인한 것으로 밝혀졌습니다.

(4) 비용 절감, 4 개의 DDR 을 2 개의 DDR 로 변경, bootloader 를 통해 DDR 초기화를 변경해야 합니다.

이 품목들은 매우 긴급하기 때문에 우리가 그것들을 처리할 수 없다면 우리는 물건을 보낼 수 없다. 이럴 때 왜 공장을 찾지 않습니까? 당신이 중흥 화웨이와 같은 큰 고객이 아니라면, 누가 당신을 신경쓰겠습니까?

중흥에서 일할 때, 쓰기 구동 시간은 거의 없었고, 대부분 디버깅: 시스템 튜닝, APP 엔지니어 및 하드웨어 엔지니어가 문제를 발견하는 데 도움을 주었습니다. 우리가 제조업체와 인터넷에서 얻은 많은 소스 코드는 표준이며, 물론 직접 사용할 수 있습니다. 하지만 당신의 제품을 최적화하는 것이 더 좋을 것 같다. 예를 들어, 카메라 드라이버와 DMA 드라이버를 결합하여 DMA 를 통해 카메라 데이터를 DSP 로 직접 전송할 수 있습니다. 우리는 소프트웨어와 하드웨어 사이의 다리 역할을 할 수 있다. 물리적 제품의 경우 소프트웨어 또는 하드웨어에 문제가 있을 수 있으며, 기본 시스템 엔지니어는 일반적으로 문제를 더 쉽게 파악할 수 있습니다.

하드웨어 및 소프트웨어 응용 프로그램에서 해결할 수 없는 문제가 발생할 경우 기본 소프트웨어의 관점에서 조언과 도구를 제공합니다. 또 다른 옵션: 칩 성능이 규정 준수 여부, 사용 가능한 BSP 가 완벽한지 여부 등이 있습니다. , 이것은 전체 방안을 담당하는 사람에게만 고려될 수 있으며, 그들은 밑바닥을 이해해야 한다.

운영 체제 분야에서는 지식에 대한 많은 요구 사항이 있습니다.

① 회로도를 이해하기 위해 하드웨어 지식을 이해하십시오.

(2) 영어는 칩 설명서를 잘 읽을 수 있다.

③ 드라이버 작성 및 이식 능력.

④ 운영 체제 자체에 대해 어느 정도 알고 있으면 각종 어려운 문제를 해결할 수 있다.

⑤ 안드로이드의 내부 메커니즘을 이해한다.

⑥ 어셈블리, c 언어, C++ 및 자바.

확실히 큰 구덩이다. 흥미와 끈기가 없는 사람은 신중하게 선택해야 한다.

하루 종일 공부하더라도 이 일행은 입문하는데 반년 이상이 걸린다. (윌리엄 셰익스피어, 햄릿, 공부명언)

2 그 지위는 분명히 앱보다 못하다.

그리고 당신은 1 또는 2 년의 경험이 없습니다. 회사에 채용된 후 앱을 만들기 시작한다.

장점은 다음과 같습니다.

1 잘 배웠어, 업계가 죽일 거야, 포장하고 싶어; 자신의 제품이 되고 싶으면 자신의 제품을 만들어라.

② 신청한 사람들에 비해 끊임없이 변화하는 수요 때문에 매일 야근을 하지 않는다.

문턱이 높으니 당연히 임금도 상대적으로 높다.

운영 체제 분야에서는 다음과 같은 사람들에게 적합하다고 생각합니다.

(1) 하드웨어 엔지니어는 소프트웨어 엔지니어로 전업하기를 원하며 기본 소프트웨어부터 시작하는 것이 더 좋습니다.

(2) 마이크로 컨트롤러 엔지니어, 업그레이드하고 싶습니다. 리눅스의 밑바닥을 아는 사람은 반드시 단일 칩 마이크로 컴퓨터를 이해하지만, 단일 칩 마이크로 컴퓨터를 아는 사람은 반드시 리눅스를 이해하는 것은 아니다.

③ 시간이 넉넉한 학생: 2 학년 또는 3 학년 학생이라면 상반기 기본 임베디드 리눅스를 배우는 것이 좋다.

4 회사에서 APP 를 쓰고 있지만 시스템 엔지니어로 승진하려면 밑바닥을 배워야 한다. (존 F. 케네디, 공부명언) (알버트 아인슈타인, Northern Exposure (미국 TV 드라마), 시스템명언)

⑤ 자신이 창업하여 실물 제품을 만드는 엔지니어를 원한다. 돈이 있다면 어떤 기술을 배울 필요가 없지만, 만약 당신이 제품을 만들 돈이 없다면, 리눅스의 밑바닥은 배워야 한다.

6 리눅스 앱을 만드는 사람, 네, 그들도 공부해야 합니다.

이 섹션에서는 커널을 시작하는 데 사용되는 bootloader, Linux 의 파일 시스템 (1 프로그램, 디렉토리 사용), APP 및 드라이버 호출 관계, 도구 체인, 이러한 개념만으로도 충분합니다.

이 문서의 기본 운영 체제는 Linux 이며 임베디드 Linux+Android 시스템을 배우는 방법에 대해 설명합니다.

1.4 내장형 Linux+Android 시스템에는 어떤 내용이 포함되어 있습니까? 서두르지 말고 마음대로 예를 들어 보세요.

누가 컴퓨터를 켤 때 이러한 인터페이스를 표시했습니까?

BIOS 입니다. 그것은 무엇을 하는 것입니까? 일부 자체 테스트를 수행한 다음 하드 드라이브에서 windows 를 읽고 시작합니다.

마찬가지로 이 BIOS 는 임베디드 Linux 의 부트 로더에 해당합니다. 이 부트 로더는 리눅스 커널을 읽고 시작하기 위해 새로 고쳐집니다.

② windows 를 시작하는 목적은 무엇입니까?

물론 앱을 실행하여 인터넷을 하고 채팅을 한다.

이 온라인 프로그램과 채팅 프로그램은 어디에 있습니까?

CD 와 D 디스크에 있습니다.

따라서 windows 는 먼저 드라이브 C 와 드라이브 D 를 인식해야 합니다. 우리는 Linux 의 루트 파일 시스템이라고 부릅니다.

(3)③windows 는 드라이브 C 와 드라이브 D 를 인식할 수 있으므로 하드 드라이브를 읽고 쓸 수 있는 능력이 있어야 합니다.

이런 능력을 추진력이라고 한다. 물론 하드 드라이브뿐만 아니라 네트워크 카드, USB 등 하드웨어도 있습니다. 포함된 Linux 는 Flash 에서 응용 프로그램을 읽고 실행할 수 있으며 Flash 드라이버가 있어야 합니다. 물론 Flash 뿐만이 아닙니다.

간단히 말해 임베디드 LINUX 시스템은 부트, 커널, 드라이버, 루트 파일 시스템 및 어플리케이션의 다섯 가지 모듈로 구성됩니다. 응용 프로그램의 경우 C/C++, Android 로 나눌 수 있습니다.

따라서 내장형 Linux+Android 시스템은 다음 6 개 부분으로 구성됩니다.

① 부트 로더

② 리눅스 커널

③ 드라이버

④ C/C++ 로 작성된 응용 프로그램

⑤ 안드로이드 시스템 자체

6.⑥ 안드로이드 애플리케이션

Android 와 Linux 사이의 연결은 너무 커서 Linux 를 공부한 후 Android 학습을 중단할 이유가 없다. 대부분의 지능형 장치에서는 Linux 운영 체제가 실행됩니다. 안드로이드가 설치되어 있거나 안드로이드 휴대폰과 연결될 수 있습니다. 이제 리눅스+안드로이드가 표준으로 자리잡았습니다.

2. 임베디드 리눅스 운영 체제를 배우는 방법 이 문서에서는 당신이 제로 기반이라고 가정하고, 실용성을 지향하며, 가장 빠른 시간 내에 시작할 수 있도록 합니다. 나는 또한 내가 깊이 연구하고 싶을 때 참고할 수 있는 자료를 첨부할 것이다.

실제 작업에서 Dell 은 운영 체제 자체를 너무 깊이 연구하고 수정하지 않고 운영 체제를 중심으로 개발되었습니다.

1 운영 체제는 프로세스 관리, 스토리지 관리, 파일 관리, 디바이스 관리 등의 기능을 갖추고 있으며, 이러한 핵심 기능은 매우 안정적이고 안정적이며 기본적으로 코드를 수정할 필요가 없습니다. 우리는 우리 자신의 하드웨어에 대한 드라이버만 개선하면 된다.

② 학습 구동에는 창고 관리 및 프로세스 스케줄링과 같은 다른 지식이 반드시 포함되어야 합니다. 드라이버를 깊이 이해하면 운영 체제의 다른 부분에 대한 이해도 깊어집니다.

③Linux 커널에 있는 대부분의 코드는 장치 드라이버로, Linux 커널은 다양한 드라이버로 구성되어 있다고 생각할 수 있다.

그러나 이 분야의 대가가 되려면 Linux 운영 체제 자체를 깊이 이해하고 소스 코드를 연구해야 합니다.

바쁜 일과 여가 시간 동안 이 책들을 읽을 수 있습니다.

① 조형의 리눅스 코어 전체 노트를 추천한다. 비교적 얇다. 나중에 또' 리눅스 커널 전체 분석' 이 나왔는데 너무 두껍다. 싫으면 앞을 잊는다.

(2) 마오와 후가 리눅스의 핵심 소스 코드에 대한 시나리오 분석. 이 책은 상하 두 권으로 나뉘어 매우 두껍다. 그것을 사전으로 삼자: 어떤 일을 더 깊이 이해하고 싶다면, 한 장만 보면 된다. (존 F. 케네디, 독서명언)

다른 좋은 책들이 많이 있지만, 나는 별로 읽지 않았고, 더 이상 건의도 없었다.

빠른 입문과 입문을 위해 위의 책을 먼저 읽을 필요 없이 먼저 이 문장 따라 공부한다.

2. 1 입문 로드맵은 당신이 0 기초라고 가정하고 다음과 같은 입문 로드맵을 계획하고 있습니다. 앞의 지식은 뒤의 지식의 기초이므로 순서대로 공부하는 것이 좋습니다. 각 섹션은 반드시 철저한 연구가 필요하지 않습니다. 다음 섹션에서 설명합니다.

2.2 드라이버 학습 전 기본 사항 2.2. 1 C 언어

이공계 전공이라면 c 언어를 가르치는 것 같아요. 나는 C 어학 시험에서 90, 100 을 시험한 많은 사람을 보았는데, 컴퓨터에 오르자마자 바보가 되었다. 나는 그들이 컴퓨터에 프로그램을 쓴 적이 있다고 의심한다.

이론이 아무리 좋더라도, 만약 네가 실천하지 않으면 일을 할 수 없다면, 회사는 왜 너를 고용해야 하는가?

반면에, 실천에서 C 언어를 배우려면, 우리는 연습하고, 쓰고, 써야 한다!

기본 문법을 익히면 컴퓨터에서 C 언어 연습을 할 수 있다.

몇 가지 C 프로그램을 작성하면 베어 메탈 개발의 다음 단계로 들어갈 수 있습니다.

① 너무 깊을 필요는 없다.

빠른 시작으로, "안녕, 세상!" 이라고 쓸 수만 있다면 , 버블 정렬을 쓸 수 있고, 몇 가지 기본적인 문법 작업을 할 수 있어, 잠시 쓰기에 충분하다.

포인터 조작은 중점이고, 많이 연습한다.

데이터 구조에 대해 너무 많이 배울 필요는 없습니다. 연결된 테이블의 조작만 익히면 됩니다. 대기열과 다이트리와 같은 다른 것은 배울 필요가 없습니다. 파일 작업, 멀티 스레드 프로그래밍, 네트워크 프로그래밍 등과 같은 함수 사용법을 배울 필요가 없습니다. 이러한 지식은 Linux 응용 프로그램을 작성할 때 사용되지만 운영 체제에서 학습을 구동할 때는 필요하지 않습니다!

영원히 앞으로 나아가서 모르는 C 언어 문제에 부딪히면 다시 공부하러 오겠습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 언어명언)

후속' 베어 메탈 개발' 에서는 C 언어를 계속 연습할 것이며, 이는 더욱 실용적일 것입니다.

C 언어는 코드 작성에서 개선되었습니다.

② Visual Studio 나 Linux 에서 배울 수 있다. 후자는 몇 가지 컴파일 명령을 익혀야 한다. 우리는 당분간 C 언어 자습서를 제공하지 않는다. C 언어 책을 찾고 인터넷에서 무료 C 언어 비디오 (주로 환경 구축 방법에 따라 다름) 를 찾아 독학할 수 있다.

2. 2. 2 PC Linux 의 기본 작동:

PC Linux 의 경우 소프트웨어를 쉽게 설치할 수 있는 Ubuntu 를 추천합니다.

Dell 의 작업 모드는 일반적으로 Windows 에서 코드를 읽고 읽은 다음 컴파일을 위해 PC Linux 에 코드를 업로드하는 방식입니다. 사실, Ubuntu 의 데스크톱 시스템은 이미 매우 사용하기 쉬우므로 다양한 스마트폰을 빠르게 사용할 수 있습니다. Ubuntu 의 데스크톱 시스템도 빠르게 시작할 수 있다고 믿습니다. 생산성을 높이기 위해 일반적으로 명령줄을 사용하여 Ubuntu 를 조작합니다.

걱정하지 마세요. 미리 이러한 명령을 익히기만 하면 됩니다. 매우 간단합니다. 간단히 나열해 보겠습니다.

① 디스크: 디렉토리 변경 (디렉토리 변경)

Cd 디렉토리 이름? //카탈로그 디스크 입력 .. // CD "2 점": 이전 카탈로그 CD 로 돌아가기-//CD "짧은 가로": 이전 디렉토리로 돌아갑니다.

②pwd: 작업 디렉토리 인쇄 (현재 디렉토리를 인쇄하여 현재 작업 디렉토리의 절대 경로를 표시합니다.)

③mkdir: 디렉토리 만들기 (디렉토리 만들기)

Mkdir ABC // 폴더 만들기 abcmkdir -p a/b/c // 폴더 a 를 만들고 a 아래에 폴더 b 를 만든 다음 b 아래에 폴더 c 를 만듭니다.

④rm: 삭제 (디렉토리 또는 파일 삭제)

Rm? 파일//파일 삭제 RM -rf dir 명명 파일? //dir 이라는 디렉토리를 삭제합니다.

⑤ls: List: 목록 (디렉토리의 내용 나열)

⑥ 설치: 설치

Mount -t NFS -o nolock, vers = 2192.168.1../kloc-;

⑦chown: 소유자 변경 (변경 파일의 소유자, 소유자)

Chown book: 책/일 -R? ///work 디렉토리 및 모든 해당 내용에 대해 소유자는 book 사용자로, 그룹은 book 으로 변경됩니다.

⑧chmod: 패턴을 바꾸세요. 다음 예는 매우 간단하고 거칠습니다.

Chmod 777 /work -R? ///work 디렉토리 및 모든 해당 컨텐츠에 대한 사용 권한을 읽기 가능, 쓰기 가능 및 실행 가능으로 변경합니다.

Linux 에서 가장 일반적으로 사용되는 편집 명령은 사용하기가 약간 복잡합니다. 스스로 용법을 검색해 주세요.

이러한 명령을 연습하려면 Ubuntu 데스크톱 시스템으로 들어가 터미널을 열고 명령을 입력할 수 있습니다. 또는 SecureCRT, putty 등의 도구를 사용하여 원격으로 Ubuntu 에 로그인한 후 연습합니다.

하드웨어 지식

하드웨어 지식을 배우는 목적은 구조도, 통신 프로토콜 및 칩 설명서를 이해하는 것입니다. 회로도를 설계하고 싶지 않고 회로 기판을 설계하고 싶지 않습니다.

정통 방법의 경우 다음과 같이 배워야 합니다.

(1) 마이크로컴퓨터의 원리를 배우고, 컴퓨터의 구성과 다양한 부품의 상호 작용 원리를 이해하다.

② 디지털 회로를 배우고, 다양한 문 회로의 원리와 용도를 이해하고, 논리 연산 (및, 또는 등) 을 습득한다. ).

③ 아날로그 회로? 나는 이것을 배울 필요가 없다. 적어도 나는 직장에서 필요하지 않다. 이제 나는 모두 잊었다.

제 개인적인 경험으로 볼 때, 이 수업은 매우 유용하지만,

원리는 유용하고 실전성은 강하지 않다.

예를 들어, 마이크로컴퓨터의 원리는 x86 시스템을 기반으로 하며, ARM 보드와는 큰 차이가 있는데, 물론 원리는 같다.

임베디드 프로그래밍을 접할 때까지 나는 이 수업들을 이해하지 못했다.

(2) 모든 책이 그렇게 두껍고 내용이 많아서 공부시간이 너무 길어서 독학이 어려워요.

이러한 캠퍼스 교재의 부족과 실제 개발 과정에서 사용할 지식점과 함께' 취학 전 _ 도식 보기 방법' 시리즈를 선보였습니다.

취학 전 1 과 1 _ _ GPIO 와 문 회로의 구조도에 대해 어떻게 생각하세요? 야생형 이하선염 바이러스

유치원 1 Section 2. 1 _ 도식 프로토콜 인터페이스 UART.wmv 는 어떻게 보십니까

취학 전 1 섹션 2.2 _ 구조도 프로토콜 인터페이스 I2C.wmv 는 어떻게 보십니까

취학 전 1 섹션 2.3 _ 구조도 프로토콜 인터페이스 SPI.wmv 는 어떻게 보십니까

취학 전 1 Section 2.4 _ 도식 프로토콜 인터페이스 NAND Flash.wmv 는 어떻게 보십니까?

취학 전 1 섹션 2.5 _ 도식 프로토콜 인터페이스 LCD.wmv 는 어떻게 보십니까

유치원반 1 3 절 _ _ 메모리 인터페이스가 다이어그램과 같다고 생각합니다. 야생형 이하선염 바이러스

취학 전 1 4. 1 섹션 _ 구조도 S3C24 10 개발판 분석에 대해 어떻게 생각하십니까? 야생형 이하선염 바이러스

취학 전 1 섹션 4.2 _ 구조도 S3C2440 개발판 분석 방법. 야생형 이하선염 바이러스

취학 전 1 4.3 절 _ 구조도 S3C64 10 개발판 분석 방법. 야생형 이하선염 바이러스

중학교 물리 수업의 회로 지식만 가지고 있더라도, 이 동영상을 통해 회로도와 몇 가지 일반적인 통신 프로토콜을 이해할 수 있기를 바랍니다. 더 많은 하드웨어 지식을 습득하고 싶다면, 이 비디오들을 색인으로 사용하여 자신이 부족한 지식을 알려 줄 수도 있습니다.

이 비디오에서 언급한 하드웨어 지식은' 베어 보드 개발' 시리즈 비디오에서 사용될 것이며, 그러면 우리는 서로를 살펴보고 이해를 넓힐 수 있다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 예술명언)

2.2.4 Windows 에서 단일 칩 개발을 배우고 싶습니까?

많은 학교에서 단일 칩 마이크로 컴퓨터 과정을 개설했습니다. 많은 사람들이 5 1 단일 칩 마이크로 컴퓨터와 AVR 단일 칩 마이크로 컴퓨터로 시작합니다. 이제 새로운 STM32 단일 칩 마이크로 컴퓨터가 임베디드 분야에 접근하기 시작했고, keil 및 MDK 와 같은 Windows 기반 개발 소프트웨어를 사용하고 있습니다.

문제가 생겼습니다. Windows 에서 단일 칩 개발을 배우시겠습니까?

이것이 당신의 전공을위한 필수 과목이라면, 배우러 가십시오.

② 전공이 기계 제어와 같은 단일 칩 마이크로 컴퓨터와 밀접한 관련이 있다면 공부하러 가자.

(3) 단일 칩 마이크로 컴퓨터를 시작하고 더 넓은 임베디드 리눅스를 배우고 싶다면 Windows 에서 단일 칩 마이크로 컴퓨터를 배우는 것을 포기하십시오!

그 이유는 다음과 같습니다.

①Windows 마이크로 컨트롤러 학습이 충분히 깊지 않습니다.

Windows 에는 keil 및 MDK 와 같은 아주 좋은 그래픽 인터페이스 마이크로 컨트롤러 개발 소프트웨어가 있습니다.

다음과 같은 많은 기술적 세부 사항을 캡슐화합니다.

메인 함수에서만 코드를 작성하지만 전원이 켜진 후 1 코드가 어떻게 실행되는지 알 수 없습니다.

인터럽트 처리기를 쓸 수는 있지만 어떻게 호출되는지 알 수 없습니다.

프로그램이 플래시 메모리에서 메모리를 읽는 방법을 모릅니다.

메모리가 어떻게 분할되고 사용되는지 모르겠습니다. 스택이 어디에 있는지, 스택이 어디에 있는지 모르겠습니다.

플래시 메모리와 메모리 사용을 줄이기 위해 프로그램을 줄이고자 할 때, 당신은 손을 댈 수 없습니다.

새 파일을 작성할 때 자동으로 프로젝트에 추가되지만 그 메커니즘을 전혀 알지 못합니다.

잠깐, 잠깐

② ARM+Linux 기반 베어 메탈 학습을 통해 더 깊이 배우고 후속 Linux 학습에 더 적합합니다. 리눅스의 단일 칩 마이크로 컴퓨터 학습이지만 모든 것이 원시적입니다. 모든 코드는 직접 작성해야 합니다. 프로젝트에 추가된 문서는 직접 관리해야 합니다.

물론, 직장에서 우리는 Windows 에서 더 편리한 도구를 사용하는 경향이 있지만, 학습 단계에서는 프로그램의 정수를 배우기를 원한다.

모든 것은 처음부터 코드를 작성하고 코드를 관리하며, 우리는 더 많은 것을 배울 수 있다.

칩의 전원 켜기 및 시동 과정과 1 코드가 어떻게 작동하는지 알아야 합니다.

플래시 메모리에서 메모리로 프로그램을 읽는 방법을 알아야 합니다.

스택이 어디에 있는지, 스택이 어디에 있는지 등 메모리가 어떻게 계획되고 사용되는지 알아야 합니다.

코드 재배치를 이해해야합니다.

장면을 보호하고, 인터럽트 포털로 점프하고, 인터럽트를 호출하고, 인터럽트가 발생한 후 장면을 복원하는 방법을 알아야 합니다.

주 함수는 우리가 쓴 1 함수가 아니라는 것을 알 수 있습니다.

칩 전원을 켜면 프로그램이 어떻게 실행되는지 알 수 있습니다.

함수 호출 중에 매개 변수가 전달되는 방법을 알 수 있습니다.

인터럽트가 발생할 때 각 레지스터의 값은 신중하게 처리해야 한다는 것을 알 수 있습니다.

잠깐, 잠깐

ARM+Linux 의 베어 메탈 개발을 파악한 후 Windows 아래의 단일 칩 개발로 돌아가면 얼마나 간단한가! 너는 이 도구들이 너에게 보여주지 않은 기술적 세부 사항을 완전히 이해할 것이다.

구동 =Linux 구동 소프트웨어 프레임워크 +ARM 개발 보드 하드웨어 운영, 간단한 베어 메탈 개발부터 시작하여 하드웨어 운영을 익힐 수 있습니다.

1 PC Linux 에서 프로그램을 컴파일하고 보드에 굽고 실행하는 방법을 익힙니다.

② bootloader 를 배울 수 있는 기반을 마련한다. 다양한 하드웨어 작업을 파악한 후, 다음 조합은 bootloader 다.

2.2.5 성능이 더 좋은 다른 개발판 대신 ARM9 S3C2440 개발판을 선택한 이유는 무엇입니까?

S3C2440 은 구식이고 ARM9 는 구식이라는 잘못된 개념이 있다.

이것은 옳지 않다. 당신이 소프트웨어 엔지니어라면 ARM9, ARM 1 1, A8, A9 는 우리에게 아무런 차이가 없습니다.

CPU 와 UART, USB, LCD 컨트롤러와 같은 여러 온칩 장치가 장착된 칩. 우리가 프로그램을 작성할 때, 우리는 CPU 를 언급하지 않고, 우리는 단지 그 슬라이스 위의 설비를 조작할 뿐이다.

그래서: 차이점은 CPU 코어가 아닌 온칩 장치에 있습니다. 차이점은 레지스터 작업이 다르다는 것입니다.

우리의 쓰기 드라이버는 CPU 의 코어를 포함하지 않기 때문에 CPU 이외의 장치만 조작하고 해당 장치의 레지스터만 읽고 씁니다.

S3C2440 은 가장 풍부한 리눅스 학습 자료와 1 번호 및 2 번 지원 비디오가 있으므로 추천합니다 .....

2.2.6 ARM+Linux 의 베어 메탈 개발을 어떻게 배울 수 있습니까?

베어 메탈 개발을 배우는 데는 두 가지 목적이 있습니다.

1 베어 메탈 프로그램의 구조를 파악하여 후속 U-Boot 를 준비합니다.

② 하드웨어 지식, 즉 구조도와 칩 설명서를 읽는 방법과 하드웨어를 조작하기 위한 코드를 작성하는 방법을 연습한다.

후자의 U-Boot 는 베어 메탈 프로그램의 모음으로 볼 수 있습니다. 베어 메탈 개발에서 모든 구성 요소를 한 번에 하나씩 파악한 다음 조립하여 U-Boot 을 얻을 수 있습니다.

후속 드라이버 개발에는 하드웨어 운영도 포함됩니다. 베어 메탈 개발에서 하드웨어 지식을 배울 수 있습니다.

참고: 베어 메탈 프로그램 구조와 bootloader 구현에 신경 쓰지 않는다면 먼저 이 섹션을 건너뛸 수 있습니다. 다음 구동 비디오에서는 관련 하드웨어에 대한 지식도 다시 설명하겠습니다.

두춘뢰의' ARM 아키텍처 및 프로그래밍' 과 웨동산의' 임베디드 리눅스 애플리케이션 개발 전체 매뉴얼' 이라는 두 권의 책을 추천한다. 후자는 국내 PC Linux 환경에서 개발된 ARM 베어 메탈 프로그램에 대한 1 책일 수 있습니다. 내가 틀렸다면 책을 적게 읽는 것을 용서해 주세요.

베어 메탈 개발의 경우 두 가지 비디오를 제공합니다.

① 환경 건설

학습 0 1 섹션 _ 인터페이스 배선이 방금 개발 보드에 닿았습니다. 야생형 이하선염 바이러스

단원 0, 섹션 2 _ 새로 개발한 보드에 대한 베어 보드 프로그램을 작성합니다. 야생형 이하선염 바이러스

0 과 3 절 _ 개발판에 접촉한 후 전체 시스템을 다시 태운다. 야생형 이하선염 바이러스

학습 0, 섹션 4 _ 개발판의 새로운 기능인 vmwae 및 ubuntu.wmv 를 사용합니다.

단원 0 5 _ 개발 보드에 방금 접촉한 U-Boot 를 패치, 컴파일 및 사용하고 소스 인사이트 프로젝트를 구축합니다. 야생형 이하선염 바이러스

단원 0, 섹션 6-방금 개발 보드에 접촉한 커널 U-Boot 를 패치, 컴파일 및 사용하고 소스 인사이트 프로젝트를 구축합니다. 야생형 이하선염 바이러스

단원 0, 섹션 7 _ 개발판의 루트 파일 시스템 및 파일럿 드라이버 제작 야생형 이하선염 바이러스

단원 0 8 절 _ TQ2440 및 MINI 2440 에 비디오 시스템 구축 야생형 이하선염 바이러스

단원 0 9 _win7 에서는 dnw 레코딩 대체 방법을 사용할 수 없습니다. 야생형 이하선염 바이러스

......................................................................... 완료되지 않았습니다.

원본 링크: 웹 링크

script type="text/javascript" src="/style/tongji.js">