누가 나에게 단편기를 어떻게 배우는지, 무엇을 먼저 배우는지, 어떻게 시작하는지 가르쳐 줄 수 있습니까?
임베디드 학습 경로는 길고 흥미로운 과정입니다. 흥미로운 것은 지식 축적으로 인한 성취감이다. 소프트웨어에 비해 긴 학습 경로에는 일정한 문턱이 있다.
하지만 혼자 공부하지 마세요. 위의 학습 경로는 길고 난이도는 점점 깊어져요. 항상 한 사람이 이해하지 못하는 것도 있고 이해하기 어려운 것도 있다. 너는 토론할 사람이 필요하다. 주의는 토론이지, 맹목적으로 다른 사람을 요구하는 것이 아니다. 문제가 생기면 먼저 인터넷을 통해 정보를 조회해야 하고, 먼저 생각하는 법을 배우고, 다른 사람에게 물어봐야 한다. 그래서 실생활에서 같은 방향의 사람 한두 명을 찾아 함께 공부할 것을 강력히 건의합니다. 학교에서는 더욱 편리하며, 게다가 단일 칩 동아리에도 학습 분위기가 있을 것입니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 학교명언)
1, 기초 수업
1..1c 언어
구체적인 세부 사항은 여기서 설명하지 않겠습니다. 결국 인터넷에는 C 언어로 된 책과 동영상 자습서가 많이 있어서 학습 자원이 충분합니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 공부명언)
하지만 C 언어 기반을 튼튼하게 하는 것이 가장 쉬운 방법은 고등학교 수능: 제해전술에 대처하는 것이다. 사실 C 언어서 뒤의 C 연습문제를 하고, 스스로 두드리고, 스스로 생각하고, 다시 디버깅하는 것이다. 이렇게 하면 너의 기초 코딩 능력을 크게 단련할 수 있다. 나는 C 언어 교재 뒤의 연습 문제가 너무 간단해서 LeetCode 로 바꿀 수 있다고 생각한다.
1.2 디지털 회로
솔직히 말해서, 구체적인 세부 사항은 기억이 나지 않지만, 가장 기본적인 것은, 너는 어떻게 비문으로 조합 논리를 실현할 수 있는지 알아야 한다는 것이다. 조합 논리의 출력은 다음 논리의 입력으로 순차 회로를 구성하고 타이밍 논리의 분석 방법을 파악하는 입력으로 피드백됩니다. 또한 데이터 잠금 클래스 정전 데이터가 손실되지 않는 회로 원리를 파악해야 합니다.
개인들은 학습계전은 주로 인류 문명이 발전함에 따라 PNN 매듭이 일방적인 전도성을 가지고 있다는 사실을 알게 되면서 다이오드로 만들었다는 점을 이해하는 것이라고 생각한다.
다이오드의 단방향 전도성으로 인해 비문 회로가 형성되었다. (다이오드가 NAND 논리문을 어떻게 구성하는지 이해) 사람들이 NAND 논리를 만든 후, 세계의 논리가 단지 그 기초 위에서 복잡해졌다는 것을 알게 되었다. (윌리엄 셰익스피어, Northern Exposure (미국 TV 드라마), 과학명언) 가산기, 변위기, 인코더, 디코더 등에 필요한 조합 논리는 모두 AND NOR 문을 통해 수행할 수 있습니다 (도어 회로를 통해 조합 논리를 설계하는 방법 파악).
그러나 실생활의 논리는 종종 조합 논리만큼 간단하지 않고 입력은 출력으로 변환됩니다. 종종 이전 출력은 다음 처리에 영향을 줍니다. 타이밍 논리의 출현은 이렇게 도입되었고 시계의 개념도 가져왔다. (조합 논리의 출력 피드백을 다음 시계의 입력으로 파악하여 타이밍 회로를 분석하는 방법).
위의 내용은 모두 실시간 출력입니다. 즉, 가져오는 동안 해당 출력을 얻을 수 있으며, 입력을 사용할 수 없게 되면 출력이 손실됩니다. 데이터를 저장할 방법이 없습니다. 그래서 사람들은 문 회로를 통해 데이터를 잠글 수 있는 RS 트리거와 PROM 메모리를 만들었습니다. 메모리의 회로 원리와 버스 타이밍을 통해 액세스하는 방법을 파악합니다.
위 내용을 정확히 이해한 후 마이크로컴퓨터의 원리를 배우면 CPU 의 핵심 단위는 복잡한 타이밍 논리이고 주변 자원은 조합 논리 또는 타이밍 논리에 둘러싸인 블랙박스라는 것을 알 수 있습니다.
1.3 코드 호스팅
Git 도구 및 GitHub 사용. 나중에 사용할 수 있도록 Github 에 코드 사본을 보관하십시오. 천천히, 당신은 자신의 코드가 최고의 음표라는 것을 알게 될 것이다. Git 튜토리얼은 간단하고 이해하기 쉬운 Liao Xuefeng 의 git 자습서를 추천합니다. 중국에서는 gitee 를 고려해 볼 수 있습니다.
복잡한 논리의 경우 코드 주석에 필요한 주석이 있어야 한다는 작은 조언을 해 주세요. 코드 스타일은 통일규범을 통일해야 하고, 코드는 뇌군처럼 자신감을 가져야 한다. "내 코드는 시처럼 우아하다." 코드 스타일 서식 지정 도구. 많은 편집기에는 VSCode 와 같은 고유한 코드 서식 지정 함수가 있습니다. CoolFormat 을 사용하여 수동으로 포맷할 수도 있습니다.
2. 입문 과정
2. 1 단일 칩 마이크로 컴퓨터
현재 Proteus 시뮬레이션 소프트웨어는 확실히 매우 강력하다는 것이 이치에 맞는다. 5 1 서적, 자습서, 인스턴스 학습에 적합합니다. 하지만 정말 공부하면 타오바오에 가서 물리적 개발판과 모듈을 찾을 것을 제안한다. 만약 학생당의 경제능력이 보통이라면, 한가한 물고기에 가서 중고판을 사면 우편요금이 50 을 넘지 않는다.
왜 실물을 사는 것을 건의합니까? Proteus 시뮬레이션은 시뮬레이션이기 때문에 많은 하드웨어에서 전압 및 신호 타이밍에 대한 요구 사항은 실제 회로만큼 엄격하지 않거나 충분히 엄격하지 않습니다. 이는 타이밍이 슬레이브 요구 사항을 충족하지 않아도 I2C 통신이 정상적일 수 있지만 동일한 프로그램을 물리적 단일 칩에 배치하면 I2C 통신이 불가능할 가능성이 높습니다.
그나저나 5 1 주로 무엇을 배우나요? 간단한 학습 단계:
프로젝트 만들기, 컴파일 방법, 다운로드 방법, sbit, sfr 등 5 1 단일 디스크별 레지스터 데이터 구조 이해
5 1 단일 칩 마이크로 컴퓨터의 IO 모듈을 배우고, IO 조명 (작동등), 디지털 튜브 제어, 8 * 8 도트 매트릭스 모듈 및 키 입력을 제어합니다.
5 1 단일 칩 인터럽트 모듈을 배우고 가장 간단한 외부 인터럽트로 시작하여 인터럽트로 키 이벤트를 식별합니다.
학습 5 1 단일 칩 타이머 모듈, 1s 타이밍, 간단한 디지털 스톱워치, IO 포트에서 PWM 파 출력.
5 1 단일 칩 직렬 모듈 학습, 직렬 수평 표준, TTL, RS232, USB 수평 표준 파악, 직렬 파형 구성 파악, 전송 속도, 다중 호스트 통신 등의 개념 파악
5 1 의 기초 모듈을 다 배우면 확장 모듈을 배울 수 있다. I/O 포트는 I2C 프로토콜, SPI 프로토콜 및 온도 센서의 DS 18B20 단일 버스 프로토콜과 같은 특정 모듈에 맞게 사용자 정의된 프로토콜과 같은 다양한 저속 버스 프로토콜을 시뮬레이션하는 데 사용할 수 있습니다. 학습 과정에서 이 프로토콜에 해당하는 모듈을 구입하여 배울 수 있으며, I2C 용 EEPROM 및 mpu6050, SPI 용 플래시 등 온라인 자습서가 많은 모듈을 구입할 수 있습니다.
이것을 배우면 LED 회전, 차 추적, 리모컨 등 작은 일을 할 수 있다. 처음부터 온라인 자습서를 따라 공부의 첫 단계는 항상 모방으로 시작한다. 먼저 모방하고, 이해하고, 향상시키고, 결국 흡수를 자신의 능력으로 전환한다.
대부분의 곳에서 이해하고 이해할 수 있도록 이 과정을 더 많은 시간을 할애할 것을 제안한다. 결국 기본이고, 뒤의 공부는 위에서 펼쳐진다. 기초가 좋으니 뒤에 유추 작용이 있다.
2.2 마이크로 컴퓨터 원리 (선택 사항)
보통 친구들은 이때부터 STM32 를 배우기 시작하지만, STM32 를 배우기 전에 먼저 8086 프로세서의 디자인을 살펴보는 것이 좋습니다. 즉 마이크로컴퓨터 원리를 배우는 과정입니다. 나는 여전히 필요하다고 생각한다. CPU 가 명령을 수행하는 방법, 주소 버스, 데이터 버스, 제어 버스를 통해 내부 레지스터 및 외부 메모리에 액세스하는 방법, 인터럽트에 응답하는 방법, 인터럽트에 응답하는 방법 등 마이크로컴퓨터의 원리를 대략적으로 이해할 수 있습니다. 인터럽트의 구체적인 내부 처리 프로세스.
2.3STM32
그런 다음 STM32 를 안심하고 공부할 수 있습니다. 5 1 보다 복잡합니다. 하지만 당황하지 마세요. 본질은 5 1 과 같습니다. 단, 기능 모듈이 더 복잡해지고 모듈 수가 늘어났습니다. 그러나 모듈은 조합 논리 또는 순차 논리 회로일 뿐, 모듈 레지스터는 논리 회로의 입력입니다.
2.4 데이터 구조 및 RTOS
베어 메탈 프로그램이 끝나면 RTOS 소형 임베디드 운영 체제와 wildfire 및 punctual atom 의 서적 및 비디오 자습서를 배울 수 있습니다. RTOS 를 배우기 전에 수요가 있는 학생은 데이터 구조 학습 여부를 고려할 수 있습니다. 반드시 깊이 배울 필요는 없습니다. 최소한 대기열과 스택 구조를 이해해야 합니다. C 로 구현하는 것이 가장 좋습니다.
2.5PCB 그래픽 및 &DIY 에 관한 토막글
이런 간단한 판자의 경우 중국산 LCEDA 를 사용하는 것이 좋습니다. AltiumDesigner 는 비교적 전문적이지만 유료 소프트웨어이며, KiCAD 를 대신합니다.
STM32 의 기능 모듈은 매우 많다. 자연을 모두 배우면 가장 좋지만, 막 배우면 점점 재미없을까 봐 두렵다. (비디오 자습서를 보고, 소스 코드를 분석하고, 스스로 실현하고, 다음 지식점을 시작하는 것도 위의 세 단계다.) 시간이 오래되면 사람들이 버티지 못할까 봐 점점 공부의 열정을 소모하게 된다. 그래서 저는 STM32 를 배우는 것이 프로젝트 지향적이라는 것을 제안합니다. 물론 GPIO, 인터럽트, I2C, LCD, Touch, ADC, 타이머 등 일부 기본 주변 장치는 먼저 익혀야 한다.
일을 위주로 하는 이상 당연히 스스로 판자를 쳐야 한다. 보드 플레이어, 칼리창씨는 최근 활동을 하고 있습니다. 정말 싸다. 5 위안은 5 위안이고, 전국에 있습니다. 바둑판 놀이를 하려면 AltiumDesigner 소프트웨어를 배우고 자신의 가젯을 만들어야 한다. 인터넷에도 AD 에 대한 정보가 많이 있습니다. 저는 곽천상의 광고 AD6.9 동영상을 보면서 시작했습니다. 현재 국내 이침입 EDA 는 이미 프로페셔널판이 나왔으니 간단한 회로 기판을 그려도 문제없다.
3, 완벽한 코스 (리눅스)
마이크로 컨트롤러 학습은 거의 비슷하며 임베디드 리눅스를 배우기 시작할 수 있습니다. 세분화하면 임베디드 리눅스 드라이버 개발과 임베디드 리눅스 애플리케이션 개발로 세분화될 수 있습니다.
3. 1 Ubuntu 소개
Ubuntu 를 설치하고 Linux 의 기본 사용법을 배웁니다. 저는 대규모 오픈 온라인 코스 네트워크의 Linux 인재 양성 프로그램 시리즈 비디오를 보았는데, 주로 다음과 같은 내용에 초점을 맞추고 있습니다.
리눅스 기본 작업, 일반적으로 사용되는 명령.
리눅스 c 프로그래밍, gcc 로 컴파일 할 수 있습니다.
진호가 나와 함께 마케펠을 쓰는 것을 추천한다.
셸 스크립트.
파이썬 스크립트 시작에 관심이 있습니다.
3.2Linux 드라이버
리눅스의 기본 용법으로 프로세서 배우기 시작, S3C2440 프로세서, 개발판학 구입, 웨이동산 동영상 추천, 웨이동산학 따르기, 1 위, 2 위, 3 위, 졸업 비디오.
주요 학습 내용은 다음과 같습니다.
베어 메탈 드라이브, 그것을 단일 칩 마이크로 컴퓨터로 이해하면 된다. 본질은 똑같다. 다만 5 1, STM32 처럼 IDE 로 링크를 컴파일하는 것이 아니라, Makefile 의 교차 컴파일 도구로 수동으로 링크를 컴파일한다. Uboot 시작, 일반 부트 프로세스 학습, ubootcmd, bootcmd, 환경 변수, 플래시 쓰기 등에 익숙함.
이곳의 커널 구동, 커널 구동, 베어 메탈 드라이브는 여전히 큰 차이가 있다. MCU 드라이버는 상대적으로 SOC 설명서와 구성 레지스터만 알고 있지만, 커널 드라이버는 많은 수의 SOC 호스트와 많은 주변 장치 공급업체와 호환되기 위해 종종 소프트웨어 추상화 계층을 가지고 있습니다. 커널에서는 하위 시스템이라고 합니다. 서브시스템의 내용이 많기 때문에 자신의 업무와 관련된 연구를 신중하게 선택할 수 있으며, 게걸스럽게 씹지 마라.
3.3Linux 드라이버 마이그레이션
Rootfs 제작, busybox 기반 커널 파일 시스템 제작
Uboot 이식, 커널 이식.
4, 커리큘럼 (소프트웨어) 개선
특정 임베디드 기반을 통해 실제 작업에서 많은 하드웨어 관련 드라이버 코드가 재료 공급업체에서 제공된다는 것을 알 수 있습니다. 예를 들어, 저는 상하이에서 휴대전화 개발을 했었습니다. 고통SOC 방안의 구동 서브시스템은 매우 완벽했습니다. 고통에서 온 기준과 LCD (화면), TP (터치), Sensor (카메라), 지문, 각종 센서와 같은 해당 휴대폰 재료 공급자가 있습니다.
4. 1 데이터 구조
기본 대기열, 체인표, 링 버퍼는 모두 기본기이므로 여러분 스스로 실현할 것을 권장합니다. 내가 전에 말한 것을 잊지 마라, 내가 쓴 코드는 최고의 주석이다. Gitee 와 github 를 유지하는 것을 잊지 마십시오. 이 코드들은 자주 사용되고, 지속적인 사용에서는 결함이 서서히 수정되고, 코드의 견고성이 향상될 것이다.
4.2 디자인 패턴
나는 먼저 착지할 것을 제안한다. 나는 자바 버전을 보고 있다. 자바 문법을 먼저 배우고 볼 수 있다. 코드 디자인 아이디어는 언어에 구애받지 않고 좋은 책은 읽을 만하다.
5, 축적과 사고
5. 1 지식 시스템 라이브러리
천천히, 내가 세분화 된 분야, 오디오 및 비디오 개발 분야에 들어갔을 때, 나는 많은 경우, 나는 단지 일반적인 개발 능력에만 정통한 것이 아니라, 내가 위에서 말한 드라이브 개발 및 소프트웨어 사업 개발 기술이라는 것을 알게 될 것이다. (존 F. 케네디, Northern Exposure (미국 TV 드라마), 예술명언) 많은 업무는 모두 네가 전문 지식을 아는 것에 달려 있어, 아마도 수월할 것이다. 그렇지 않으면 너는 코드 속의 데이터 구조까지 왜 이렇게 설계해야 하는지 이해할 수 없다.
그래서 전문 분야에 들어가면 축적된 지식을 천천히 정리하고 천천히 축적해 볼 수 있다. 처음에는 반쯤 알고, 블로그를 베껴 쓰고, 공식 합의서를 번역할 수도 있다. 하지만 지식은 이렇습니다. 처음 체계화되기 전에 약간의 지식이 있는 것은 정상이다. 일단 일정한 양에 이르면 익숙해진다. 지식이 얽히면 융회가 관통하는 느낌이 매우 기묘하다. (윌리엄 셰익스피어, 햄릿, 지식명언)
그래서 공부하는 과정에서 노트를 쓰는 좋은 습관을 기르는 것이 좋습니다. 그 방면을 깊이 연구하고 싶다면 계속 학습을 축적하고, 체계적으로 정리하고, 천천히 정통한 그날을 기다릴 수 있다. 현재 저는 showdoc 문서 라이브러리를 만들기 위해 언어 조류 지식 기반을 사용하고 있습니다.
5.2 파일 사양 및 코드 모듈화 (구성 요소)
많은 오픈 소스 소프트웨어에는 상세한 문서가 포함되어 있으며, 이 소프트웨어가 무엇인지, 무슨 소용이 있는지, 어떻게 사용하는지, 주의사항에 이르기까지 모두 명확하게 적혀 있습니다. 일부 오픈 소스 소프트웨어조차도 내부 구현 세부 사항을 소개합니다.
앞서 말씀드린 바와 같이, 제가 쓴 코드는 최고의 메모입니다. 우리는 내가 썼던 코드를 끊임없이 보완하여 기능적으로 독립된 코드 모듈을 천천히 분리할 수 있다. 나중에 다른 프로젝트에서 재사용하는 것이 편리하다.
중용, 결국 좋은 기억력은 썩은 문필보다 못하다. 코드의 핵심 사상은 한두 달 더 기억할 수 있다. 핵심 사상은 말할 것도 없고, 어떻게 쓰는지도 기억하지 못할 수도 있다. (윌리엄 셰익스피어, 햄릿, 독서명언) 그제서야 나는 코드 지원 문서의 도입의 중요성을 깨달았다. 결국, 코드를 처음 개발할 때, 생각이 분명하고 동시에 문서를 쓰는 것이 훨씬 편리할 것이며, 필기도 매우 또렷하게 기록되어 있다. (윌리엄 셰익스피어, 윈스턴, 코드명언)