當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 嵌入式微處理器
[導(dǎo)讀]根據(jù)IEEE(國(guó)際電氣和電子工程師協(xié)會(huì))的定義,嵌入式系統(tǒng)(Embedded System)是指以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。

整理?|?付斌

公眾號(hào) | 嵌入式ARM




01

嵌入式的定義和舉例分析


官方定義:

根據(jù)IEEE(國(guó)際電氣和電子工程師協(xié)會(huì))的定義,嵌入式系統(tǒng)(Embedded System)是指以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。舉例來(lái)說(shuō),大到油田的集散控制系統(tǒng)和工廠流水線,小到家用VCD機(jī)或手機(jī),甚至組成普通PC終端設(shè)備的鍵盤、鼠標(biāo)、硬盤、Modem等均是由嵌入式處理器控制的。

這主要是從應(yīng)用上加以定義的,從中可以看出嵌入式系統(tǒng)是軟件和硬件的綜合體,還可以涵蓋機(jī)械等附屬裝置。

目前國(guó)內(nèi)一個(gè)普遍被認(rèn)同的定義是:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。

說(shuō)白了就是先設(shè)計(jì)硬件,然后根據(jù)需求編寫能在該硬件上運(yùn)行的軟件,就成了所謂的“智能硬件”。

嵌入式系統(tǒng)無(wú)疑是當(dāng)前最熱門最有發(fā)展前途的IT應(yīng)用領(lǐng)域之一。嵌入式系統(tǒng)用在一些特定專用設(shè)備上,通常這些設(shè)備的硬件資源(如處理器、存儲(chǔ)器等)非常有限,并且對(duì)成本很敏感,有時(shí)對(duì)實(shí)時(shí)響應(yīng)要求很高等。特別是隨著消費(fèi)家電的智能化,嵌入式更顯重要。

首先嵌入式技術(shù)主要分為嵌入式軟件和嵌入式硬件2大方向。?

嵌入式硬件方向

嵌入式硬件工程師主要工作職責(zé)是為產(chǎn)品設(shè)計(jì)硬件電路原理圖,設(shè)計(jì)硬件PCB板,選擇合適的元器件,焊接調(diào)試硬件電路板,保證硬件電路板的可靠性、穩(wěn)定性和抗干擾能力。因?yàn)楝F(xiàn)在集成電路發(fā)展迅速,大部分集成電路廠商都會(huì)提供參考電路,所以硬件電路原理圖的設(shè)計(jì)相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,硬件工程師工作的含金量主要體現(xiàn)在產(chǎn)品的可靠性和穩(wěn)定性設(shè)計(jì)、以及電磁兼容設(shè)計(jì),這才是硬件設(shè)計(jì)工程師的含金量所在。一個(gè)資深的嵌入式硬件工程師年薪都在15萬(wàn)~40萬(wàn)之間。?

要成為一個(gè)資深的嵌入式工程師相當(dāng)難,一方面要有非常扎實(shí)的理論知識(shí),同時(shí)也要有相當(dāng)?shù)哪欠N大型的、高頻CPU、多層PCB板的設(shè)計(jì)經(jīng)驗(yàn)。嵌入式硬件工程師要學(xué)的課程主要有模擬電路設(shè)計(jì)、數(shù)字電路設(shè)計(jì)、電磁波理論等。熟悉常用的放大電路、濾波電路、電源電路設(shè)計(jì)和分析。?

嵌入式軟件方向?

嵌入式軟件工程師的職責(zé)主要是根據(jù)產(chǎn)品的功能需求設(shè)計(jì)好軟件,讓硬件工作起來(lái)。嵌入式電子產(chǎn)品硬件部分,大部分都是相同的,核心的都是由CPU、RAM和FLASH 幾大部分組成,而軟件就千差萬(wàn)別了。產(chǎn)品的具體功能都是由軟件來(lái)實(shí)現(xiàn)的,一般來(lái)講一個(gè)產(chǎn)品的實(shí)現(xiàn),軟件設(shè)計(jì)的工作量是硬件設(shè)計(jì)的4~5倍。所以一般情況下,一個(gè)公司的軟件工程師數(shù)量是硬件硬件工程師的4~5倍,嵌入式軟件工程師需求比硬件工程師大很多,同時(shí)跟硬件工程師相比,嵌入式軟件工程師學(xué)起來(lái)相對(duì)容易些,所以這里21ic家重點(diǎn)和大家談一下嵌入式軟件工程的學(xué)習(xí)路線。 ?延伸閱讀:《 嵌入式有什么值得學(xué)習(xí)的軟硬件技術(shù)? 》、《 嵌入式軟件和硬件誰(shuí)更重要? 》。

02

嵌入式設(shè)計(jì)應(yīng)具備的基本技能


1、Linux 基礎(chǔ)

安裝Linux操作系統(tǒng)
Linux文件系統(tǒng)
Linux常用命令
Linux啟動(dòng)過(guò)程詳解?
熟悉Linux服務(wù)能夠獨(dú)立安裝Linux操作系統(tǒng),能夠熟練使用Linux系統(tǒng)的基本命令?
認(rèn)識(shí)Linux系統(tǒng)的常用服務(wù)安裝Linux操作系統(tǒng)?
Linux基本命令實(shí)踐?
設(shè)置Linux環(huán)境變量?
定制Linux的服務(wù)Shell?
編程基礎(chǔ)使用vi編輯文件?
使用Emacs編輯文件?
使用其他編輯器

2、Shell 編程基礎(chǔ)

Shell簡(jiǎn)介
認(rèn)識(shí)后臺(tái)程序Bash編程
熟悉Linux系統(tǒng)下的編輯環(huán)境?
熟悉Linux下的各種Shell?
熟練進(jìn)行shell編程熟悉vi基本操作?
熟悉Emacs的基本操作?
比較不同shell的區(qū)別?
編寫一個(gè)測(cè)試服務(wù)器是否連通的shell腳本程序?
編寫一個(gè)查看進(jìn)程是否存在的shell腳本程序?
編寫一個(gè)帶有循環(huán)語(yǔ)句的shell腳本程序

3、Linux下的C編程基礎(chǔ)

linux c語(yǔ)言環(huán)境概述?
Gcc使用方法?
Gdb調(diào)試技術(shù)?
AutoconfAutomake Makefile?代碼優(yōu)化?
熟悉Linux系統(tǒng)下的開(kāi)發(fā)環(huán)境?
熟悉Gcc編譯器?
熟悉Makefile規(guī)則編寫Hello,World程序?
使用 make命令編譯程序?
編寫帶有一個(gè)循環(huán)的程序?
調(diào)試一個(gè)有問(wèn)題的程序

4、嵌入式系統(tǒng)開(kāi)發(fā)基礎(chǔ)

嵌入式系統(tǒng)概述?
交叉編譯?
配置TFTP服務(wù)?
配置NFS服務(wù)?
下載Bootloader和內(nèi)核?
嵌入式Linux應(yīng)用軟件開(kāi)發(fā)流程熟悉嵌入式系統(tǒng)概念以及開(kāi)發(fā)流程?
建立嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境制作cross_gcc工具鏈?
編譯并下載U-boot?
編譯并下載Linux內(nèi)核?
編譯并下載Linux應(yīng)用程序

5、嵌入式系統(tǒng)移植

Linux內(nèi)核代碼?
平臺(tái)相關(guān)代碼分析?
ARM平臺(tái)介紹?
平臺(tái)移植的關(guān)鍵技術(shù)?
移植Linux內(nèi)核到 ARM平臺(tái)?
了解移植的概念?
能夠移植Linux內(nèi)核移植Linux2.6內(nèi)核到ARM9開(kāi)發(fā)板

6、嵌入式 Linux 下串口通信

串行I/O的基本概念?
嵌入式Linux應(yīng)用軟件開(kāi)發(fā)流程?
Linux系統(tǒng)的文件和設(shè)備?
與文件相關(guān)的系統(tǒng)調(diào)用?
配置超級(jí)終端和MiniCOM?
能夠熟悉進(jìn)行串口通信?
熟悉文件I/O?
編寫串口通信程序?
編寫多串口通信程序

7、嵌入式系統(tǒng)中多進(jìn)程程序設(shè)計(jì)

Linux系統(tǒng)進(jìn)程概述?
嵌入式系統(tǒng)的進(jìn)程特點(diǎn)?
進(jìn)程操作?
守護(hù)進(jìn)程?
相關(guān)的系統(tǒng)調(diào)用了解Linux系統(tǒng)中進(jìn)程的概念?
能夠編寫多進(jìn)程程序編寫多進(jìn)程程序?
編寫一個(gè)守護(hù)進(jìn)程程序?
sleep系統(tǒng)調(diào)用任務(wù)管理
同步與通信Linux任務(wù)概述任務(wù)調(diào)度?
管道 信號(hào) 共享內(nèi)存 任務(wù)管理 API?
了解Linux系統(tǒng)任務(wù)管理機(jī)制?
熟悉進(jìn)程間通信的幾種方式?
熟悉嵌入式Linux中的任務(wù)間同步與通信編寫一個(gè)簡(jiǎn)單的管道程序?qū)崿F(xiàn)文件傳輸?
編寫一個(gè)使用共享內(nèi)存的程序

8、嵌入式系統(tǒng)中多線程程序設(shè)計(jì)

線程的基礎(chǔ)知識(shí)?
多線程編程方法?
線程應(yīng)用中的同步問(wèn)題了解線程的概念?
能夠編寫簡(jiǎn)單的多線程程序編寫一個(gè)多線程程序

03

嵌入式軟件工程師學(xué)習(xí)流程


第一部分:Linux平臺(tái)搭建與環(huán)境熟悉

了解linux系統(tǒng);區(qū)分各種版本的Linux系統(tǒng),以便于拓展 Linux視野。

1、Linux 簡(jiǎn)介;
2、Linux 系統(tǒng)的主要特點(diǎn);
3、Linux 的組成;
4、主要的 Linux 版本;
5、嵌入式 Linux簡(jiǎn)介與發(fā)展

第二部分:虛擬機(jī)安裝和LINUX系統(tǒng)安裝

1、虛擬機(jī)安裝;
2、Linux系統(tǒng)的安裝;
3、Linux系統(tǒng)的常用軟件的安裝;
4、Linux快速入門
5、 熟悉運(yùn)用 Linux環(huán)境下,常用命令的操作與系統(tǒng)設(shè)置,如常用的 Shell;掌握基本的Shell 應(yīng)用

第三部分:嵌入式LINUX環(huán)境搭建

1、 建立嵌入式 Linux開(kāi)發(fā)環(huán)境
2、 熟悉嵌入式開(kāi)發(fā)平臺(tái)
3、 嵌入式 Linux開(kāi)發(fā)工具
4、 Linux下的調(diào)試技巧
5、 MAKE工程管理器
6、 硬件環(huán)境的搭建;arm-linux-gcc與 gcc安裝配置

第四部分:U-Boot

了解 U-Boot 的作用及工作流程;了解Bootloader 的代碼結(jié)構(gòu)、編譯過(guò)程;移植U-Boot;掌握常用的U-Boot命令。

1、 Bootloader介紹
2、 u-boot工程介紹
3、 u-boot的編譯使用
4、 u-boot源碼分析
5、 u-boot資源分配
6、 配置編譯u-boot
7、 u-boot移植過(guò)程
8、 u-boot常用命令操作
9、 添加u-boot新命令
10、設(shè)置u-boot環(huán)境變量
11、 u-boot驅(qū)動(dòng)添加如網(wǎng)卡:DM9000

第五部分:LINUX內(nèi)核移植

熟悉內(nèi)核的原碼結(jié)構(gòu)和kbuild Makefile語(yǔ)法;掌握和內(nèi)核、驅(qū)動(dòng)模塊編譯相關(guān)的原理及方法。

1、Linux內(nèi)核介紹
2、Linux內(nèi)核特點(diǎn)
3、Linux內(nèi)核源代碼結(jié)構(gòu)
4、Linux內(nèi)核選項(xiàng)解析
5、Linux內(nèi)核編譯鏈接
6、內(nèi)核模塊編譯、使用方法

第六部分:LINUX根文件系統(tǒng)

1、busybox 包移植、編譯
2、Linux跟文件系統(tǒng)制作過(guò)程
3、根文件系統(tǒng)介紹
4. nfs文件服務(wù)器系統(tǒng)搭建

第七部分:LINUX應(yīng)用學(xué)習(xí)

嵌入式Linux應(yīng)用開(kāi)發(fā)和系統(tǒng)開(kāi)發(fā)是嵌入式Linux中最重要的一部分,也是企業(yè)人才需求最廣的一部分。

主要目標(biāo)是精通嵌入式Linux下的程序設(shè)計(jì),熟練掌握嵌入式Linux的開(kāi)發(fā)環(huán)境、系統(tǒng)編程以及網(wǎng)絡(luò)編程,熟悉C++、QT編程并且深刻體會(huì)整個(gè)嵌入式Linux項(xiàng)目開(kāi)發(fā)流程,強(qiáng)化學(xué)員對(duì)Linux應(yīng)用開(kāi)發(fā)的能力。

1、Linux系統(tǒng)中的進(jìn)程的概念,在應(yīng)用程序中線程與父子進(jìn)程的創(chuàng)建與應(yīng)用
2、線程之間、進(jìn)程之間的通信
3、進(jìn)程間通信基本概念
4、管道(PIPE)
5、信號(hào)(SIGNAL)
6、內(nèi)存映射(MAPPED MEMORY)
7、消息隊(duì)列(MESSAGE QUEUE)
8、信號(hào)量(SEMAPHORE)
9、共享內(nèi)存(SHARE MEMORY)@
10、tcPip協(xié)議在應(yīng)用程序中的編程開(kāi)發(fā)(SOCKET套接字編程開(kāi)發(fā))
10.1. ISO/OSI七層協(xié)議模型與IP網(wǎng)絡(luò)四層模式
10.2.TCP/IP協(xié)議簇
10.3. 基于嵌入式Linux的TCP/IP網(wǎng)絡(luò)結(jié)構(gòu)
10.4. 基于嵌入式Linux的SOCKET編程
10.5.UDP與TCP的區(qū)別
10.6. UDP SERVER-CLIENT關(guān)系程
11、文件讀寫與存儲(chǔ)

04

嵌入式軟件工程師的內(nèi)功修煉


所謂嵌入式軟件開(kāi)發(fā),抽象的講,就是在專用的硬件平臺(tái)借助宿主機(jī)交叉編譯環(huán)境通過(guò)編程、編譯、鏈接下載、調(diào)試達(dá)到目標(biāo)需求;往細(xì)了分,嵌入式軟件開(kāi)發(fā)可分為嵌入式驅(qū)動(dòng)設(shè)計(jì)師(向下根據(jù)接口協(xié)議驅(qū)動(dòng)硬件設(shè)備,向上提供應(yīng)用API),嵌入式系統(tǒng)設(shè)計(jì)師(編寫固件程序,設(shè)計(jì)操作系統(tǒng)內(nèi)核或文件系統(tǒng),根據(jù)不同硬件平臺(tái)移植操作系統(tǒng),優(yōu)化系統(tǒng)功能),嵌入式界面設(shè)計(jì)師(嵌入式硬件平臺(tái)的上位機(jī)GUI設(shè)計(jì),人機(jī)交互),嵌入式應(yīng)用設(shè)計(jì)師(裸機(jī)或操作系統(tǒng)移植調(diào)度驅(qū)動(dòng)API按照一定的算法邏輯實(shí)現(xiàn)相應(yīng)的需求功能),嵌入式算法設(shè)計(jì)師(把相關(guān)數(shù)學(xué)算法設(shè)計(jì)成軟件程序精準(zhǔn)優(yōu)化系統(tǒng)功能,如PID控算、卡爾曼濾波算法、低通濾波等)。

C語(yǔ)言就是嵌入式軟件的內(nèi)功,21ic家也曾經(jīng)多次強(qiáng)調(diào)。相信大家都看過(guò)武俠小說(shuō)或電視,金老前輩的甚是出名,里面有“天下武功出少林”一說(shuō),為什么呢?

就是因?yàn)樯倭钟幸槐尽兑捉罱?jīng)》,“掃地僧”也就是當(dāng)時(shí)江湖的大神,學(xué)了易筋經(jīng)的人想再學(xué)其他武功可謂是游刃有余,就像《射雕英雄傳》的郭靖郭大俠因?yàn)樾逕捔巳娼恬R鈺道長(zhǎng)的內(nèi)功,再學(xué)洪七公、老頑童等的外功就很簡(jiǎn)單了,而C語(yǔ)言就是所有各種編程語(yǔ)言(像Python、Java、C++、PHP、JavaScript等等)里面的“易筋經(jīng)”,達(dá)到精通C的境界,再學(xué)其他就很簡(jiǎn)單了,因?yàn)镃要整明白,必須了解底層、明白計(jì)算機(jī)系統(tǒng)的運(yùn)行機(jī)制,當(dāng)然一個(gè)沒(méi)學(xué)過(guò)匯編的人不能真正掌握C語(yǔ)言的真諦。

在如今Python、Java編程語(yǔ)言火熱的市場(chǎng)前景下,資深工程師的建議是,在學(xué)校讀書真心想搞IT技術(shù),從C語(yǔ)言學(xué)起,會(huì)受益終生的。

學(xué)習(xí)C語(yǔ)言難嗎?資深工程師表示:不難。真正懂得用C語(yǔ)言難嗎?--難,但是按照心法不斷去實(shí)踐會(huì)化解“難”這顆頑石?,F(xiàn)在對(duì)C語(yǔ)言水平層次的定義有幾階:入門、掌握、熟悉、精通?,F(xiàn)在很多一線的軟件工程師都是至多在“熟悉”的水平階上。

內(nèi)功心法:用數(shù)學(xué)思維抽象化去學(xué)習(xí),多編程、多調(diào)試、多實(shí)際應(yīng)用,多看高手寫的優(yōu)秀代碼,可以嘗試去寫寫RTOS內(nèi)核;知錯(cuò)就改,溫故知新,不斷學(xué)習(xí)

內(nèi)功大綱:結(jié)構(gòu)體、數(shù)組、指針、函數(shù)、內(nèi)存管理

  1. 深度理解ANSI標(biāo)準(zhǔn)定義的C語(yǔ)言預(yù)處理指令用法,文件結(jié)構(gòu)問(wèn)題
  2. 明確定義及聲明,深度解析C語(yǔ)言的32個(gè)關(guān)鍵字,sizeof是關(guān)鍵字
  3. 標(biāo)準(zhǔn)C語(yǔ)言的20個(gè)基本符號(hào)深度熟練怎么用,還有表達(dá)式的優(yōu)先級(jí)問(wèn)題
  4. 深度理解內(nèi)存管理與內(nèi)存泄漏問(wèn)題,野指針的問(wèn)題,棧、堆、靜態(tài)區(qū)的問(wèn)題
  5. 深度解析指針和數(shù)組的內(nèi)存布局,它們之間的相互訪問(wèn)形式以及地址的強(qiáng)制轉(zhuǎn)換 ,還有多維數(shù)組和多級(jí)指針問(wèn)題
  6. 深度理解函數(shù)設(shè)計(jì)的原則和技巧,養(yǎng)成良好的編程風(fēng)格和編程習(xí)慣

順便提提軟件面試一般考察的問(wèn)題,也就是面試官想通過(guò)面試了解的問(wèn)題:

  1. 在需求實(shí)現(xiàn)的前提下,看你的編程風(fēng)格;
  2. 編程邏輯不可能一步到位,很多時(shí)候需要不斷修改,看你出錯(cuò)問(wèn)題的處理能力;
  3. 對(duì)你代碼算法復(fù)雜度進(jìn)行分析,是否提高系統(tǒng)性能。

05

嵌入式軟硬件界限又不是那么深



嵌入式系統(tǒng)的應(yīng)用范圍可以粗略分為兩大類:

(1)電子系統(tǒng)的智能化(工業(yè)控制,現(xiàn)代農(nóng)業(yè)、家用電器、汽車電子、測(cè)控系統(tǒng)、數(shù)據(jù)采集等等);

(2)計(jì)算機(jī)應(yīng)用的延伸(MP3、手機(jī)、通信、網(wǎng)絡(luò)、計(jì)算機(jī)外圍設(shè)備等)。從這些應(yīng)用可以看出,要完成一個(gè)以MCU為核心的嵌入式系統(tǒng)應(yīng)用產(chǎn)品設(shè)計(jì),需要有硬件、軟件及行業(yè)領(lǐng)域相關(guān)知識(shí)。硬件主要有MCU的硬件最小系統(tǒng)、輸入/輸出外圍電路、人機(jī)接口設(shè)計(jì)。軟件設(shè)計(jì)有固化軟件的設(shè)計(jì),也可能含PC機(jī)軟件的設(shè)計(jì)。行業(yè)知識(shí)需要通過(guò)協(xié)作、交流與總結(jié)獲得。

概括地說(shuō),學(xué)習(xí)以MCU為核心的嵌入式系統(tǒng),需要以下軟件硬件基礎(chǔ)知識(shí)與實(shí)踐訓(xùn)練:

1:硬件最小系統(tǒng)(包括電源、晶振、復(fù)位、寫入調(diào)試接口);
2:通用I/O(開(kāi)關(guān)量輸入/輸出,涉及各種二值量檢測(cè)與控制);
3:模數(shù)轉(zhuǎn)換A/D(各種傳感器信號(hào)的采集與處理,如紅外、溫度、光敏、超聲波、方向等等);
4:數(shù)模轉(zhuǎn)換D/A(對(duì)模擬量設(shè)備利用數(shù)字進(jìn)行控制);
5:通信(串行通信接口SCI、串行外設(shè)接口SPI、集成電路互聯(lián)總線I2C,CAN、USB、嵌入式以太網(wǎng)、ZigBee技術(shù)等);
6:顯示(LED、LCD等等);
7:控制(控制各種設(shè)備,包含PWM等控制技術(shù));
8:數(shù)據(jù)處理(圖形、圖像、語(yǔ)音、視頻等處理或識(shí)別);
9:各種具體應(yīng)用。

事實(shí)上,萬(wàn)變不離其宗,任何應(yīng)用都可以歸入這幾類。而應(yīng)用中的硬件設(shè)計(jì)、軟件設(shè)計(jì)、測(cè)試等都必須遵循嵌入式軟件工程的方法、原理與基本原則。所以,嵌入式軟件工程也是嵌入式系統(tǒng)知識(shí)體系的有機(jī)組成部分,只不過(guò),它融于具體項(xiàng)目的開(kāi)發(fā)過(guò)程之中。21ic家多次強(qiáng)調(diào),雖然嵌入式工程師有軟件和硬件工程師的分別,但是其實(shí)對(duì)于嵌入式工程師來(lái)說(shuō),兩手都要硬,只不過(guò)相關(guān)領(lǐng)域工程師的深淺不同。更多相關(guān)內(nèi)容可以在21ic中國(guó)電子網(wǎng)查閱查看。

以上實(shí)踐訓(xùn)練涉及硬件基礎(chǔ)、軟件基礎(chǔ)及相關(guān)領(lǐng)域知識(shí)。計(jì)算機(jī)語(yǔ)言、操作系統(tǒng)、開(kāi)發(fā)環(huán)境等均是完成這些目的的工具。有些初學(xué)者,容易把工具的使用與所要達(dá)到的真正目的相混淆。例如,有的學(xué)習(xí)者,學(xué)了很長(zhǎng)時(shí)間的嵌入式操作系統(tǒng)移植,而不進(jìn)行實(shí)際嵌入式系統(tǒng)產(chǎn)品的開(kāi)發(fā),到了最后,做不好一個(gè)嵌入式系統(tǒng)小產(chǎn)品,偏離了學(xué)習(xí)目標(biāo),甚至放棄了嵌入式系統(tǒng)領(lǐng)域。這就是進(jìn)入了嵌入式系統(tǒng)學(xué)習(xí)誤區(qū)的情況,下面對(duì)此做一些分析。

06

嵌入式系統(tǒng)的學(xué)習(xí)誤區(qū)


關(guān)于嵌入式系統(tǒng)的學(xué)習(xí)方法,因?qū)W習(xí)經(jīng)歷、學(xué)習(xí)環(huán)境、學(xué)習(xí)目的、已有的知識(shí)基礎(chǔ)等不同,可能在學(xué)習(xí)順序、內(nèi)容選擇、實(shí)踐方式等方面有所不同。但是,應(yīng)該明確哪些是必備的基礎(chǔ)知識(shí),哪些應(yīng)該先學(xué),哪些應(yīng)該后學(xué),哪些必須通過(guò)實(shí)踐才能獲得的,哪些是與具體芯片無(wú)關(guān)的通用知識(shí),哪些是與具體芯片或開(kāi)發(fā)環(huán)境相關(guān)的知識(shí)。

由于微處理器與微控制器種類繁多,也可能由于不同公司、不同機(jī)構(gòu)出于自身的利益,給出一些誤導(dǎo)性宣傳,特別是我國(guó)嵌入式微控制器制造技術(shù)的落后及其他相關(guān)情況,使得人們對(duì)微控制器的發(fā)展,在認(rèn)識(shí)與理解上存在差異。導(dǎo)致一些初學(xué)者,進(jìn)入了嵌入式系統(tǒng)的學(xué)習(xí)誤區(qū),浪費(fèi)了寶貴的學(xué)習(xí)時(shí)間。下面分析初學(xué)者可能存在的幾個(gè)誤區(qū)。

如果說(shuō),學(xué)習(xí)嵌入式系統(tǒng)不是為了開(kāi)發(fā)其應(yīng)用產(chǎn)品,那就沒(méi)有具體目標(biāo)了,許多諸如學(xué)習(xí)方法問(wèn)題也就不必談了。實(shí)際上,這正是許多人想學(xué),又不知從何開(kāi)始學(xué)習(xí)的關(guān)鍵問(wèn)題所在,不知道自己學(xué)習(xí)的具體目標(biāo)。于是,看了一些培訓(xùn)廣告,看了書店中書架上種類繁多的嵌入式系統(tǒng)的書籍,或上網(wǎng)以“嵌入式系統(tǒng)”為關(guān)鍵詞進(jìn)行查詢,然后參加培訓(xùn)或看書,開(kāi)始“學(xué)習(xí)起來(lái)”。對(duì)于有計(jì)算機(jī)閱歷的人,往往選擇一個(gè)嵌入式操作系統(tǒng)就開(kāi)始學(xué)習(xí)了。不好聽(tīng)的比喻,有點(diǎn)象“瞎子摸大象”,只了解其一個(gè)側(cè)面。這樣如何能對(duì)嵌入式產(chǎn)品的開(kāi)發(fā)過(guò)程有個(gè)全面了解呢?針對(duì)許多初學(xué)者選擇“xxx嵌入式操作系統(tǒng)+xxx處理器”的嵌入式系統(tǒng)入門學(xué)習(xí)模式,我認(rèn)為是不合適的。我的建議是:首先把嵌入式系統(tǒng)軟件與硬件基礎(chǔ)打好了,再根據(jù)實(shí)際需要,選擇一種實(shí)時(shí)操作系統(tǒng)(RTOS)進(jìn)行學(xué)習(xí)實(shí)踐。要記住:RTOS是開(kāi)發(fā)某些類嵌入式產(chǎn)品的輔助工具,是手段,不是目的。許多類嵌入式產(chǎn)品,并不需要RTOS。所以,一開(kāi)始就學(xué)習(xí)RTOS,并不符合學(xué)習(xí)“由淺入深、循序漸進(jìn)”的學(xué)習(xí)規(guī)律。

RTOS本身由于種類繁多,實(shí)際使用何種RTOS,一般需要工作單位確定?;A(chǔ)階段主要學(xué)習(xí)RTOS的基本原理與在RTOS之上的軟件開(kāi)發(fā)方法,而不是學(xué)習(xí)如何設(shè)計(jì)RTOS。以開(kāi)發(fā)實(shí)際嵌入式產(chǎn)品為目標(biāo)的學(xué)習(xí)者,不要把過(guò)多的精力花在設(shè)計(jì)或移植RTOS上面。正如很多人使用Windows操作系統(tǒng),而設(shè)計(jì)Windows操作系統(tǒng)只有Microsoft。許多人“研究”Linux,但不使用它,浪費(fèi)時(shí)間了,人的精力是有限的,學(xué)習(xí)必須有所選擇。

硬件與軟件的困惑

以MCU為核心的嵌入式技術(shù)的知識(shí)體系必須通過(guò)具體的MCU來(lái)體現(xiàn)、實(shí)踐與訓(xùn)練。但是,選擇任何型號(hào)的MCU,其芯片相關(guān)的知識(shí)只占知識(shí)體系的20%,80%是通用知識(shí)。但是80%的通用知識(shí),必須通過(guò)具體實(shí)踐才能進(jìn)行,所以學(xué)習(xí)嵌入式技術(shù)要選擇一個(gè)系列的MCU。但不論如何,系統(tǒng)含有硬件與軟件兩大部分,它們之間的關(guān)系如何?

有些學(xué)者,僅從電子角度認(rèn)識(shí)嵌入式系統(tǒng)。認(rèn)為“嵌入式系統(tǒng)=MCU硬件系統(tǒng)+小程序”。這些學(xué)者,大多學(xué)習(xí)背景是具有良好的電子技術(shù)基礎(chǔ)知識(shí)。實(shí)際情況是,早期MCU內(nèi)部RAM小、程序存儲(chǔ)器外接,需要外擴(kuò)各種I/O,沒(méi)有象現(xiàn)在這樣USB、嵌入式以太網(wǎng)等較復(fù)雜的接口,因此,程序占總設(shè)計(jì)量小于50%,使人們認(rèn)為嵌入式系統(tǒng)(單片機(jī))是“電子系統(tǒng)”,以硬件為主、程序?yàn)檩o。但是,隨著MCU制造技術(shù)的發(fā)展,不僅MCU內(nèi)部RAM越來(lái)越大,F(xiàn)lash進(jìn)入MCU內(nèi)部改變了傳統(tǒng)的嵌入式系統(tǒng)開(kāi)發(fā)與調(diào)試方式,固件程序可以被更方便地調(diào)試與在線升級(jí),許多情況與開(kāi)發(fā)PC機(jī)程序方便程度相差無(wú)幾,只不過(guò)開(kāi)發(fā)環(huán)境與運(yùn)行環(huán)境不是同一載體而已。這些情況使得嵌入式系統(tǒng)的軟件硬件設(shè)計(jì)方法發(fā)生了根本變化。

有些學(xué)者,僅從軟件開(kāi)發(fā)角度認(rèn)識(shí)嵌入式系統(tǒng),甚至有的僅從嵌入式操作系統(tǒng)認(rèn)識(shí)嵌入式系統(tǒng)。這些學(xué)者,大多具有良好的計(jì)算機(jī)軟件開(kāi)發(fā)基礎(chǔ)知識(shí),認(rèn)為硬件是生產(chǎn)廠商的事,沒(méi)有認(rèn)識(shí)到,嵌入式系統(tǒng)產(chǎn)品的軟件與硬件均是需要開(kāi)發(fā)者設(shè)計(jì)的。我常常接到一些關(guān)于嵌入式產(chǎn)品穩(wěn)定性的咨詢電話,發(fā)現(xiàn)大多數(shù)是由于軟件開(kāi)發(fā)者對(duì)底層硬件的基本原理不理解造成的。特別是,有些功能軟件開(kāi)發(fā)者,過(guò)分依賴于底層硬件的驅(qū)動(dòng)軟件設(shè)計(jì)完美,自己對(duì)底層驅(qū)動(dòng)原理知之甚少。實(shí)際上,一些功能軟件開(kāi)發(fā)者,名義上再做嵌入式軟件,實(shí)際上,僅僅使用嵌入式編輯、編譯環(huán)境而已,本質(zhì)與開(kāi)發(fā)通用PC機(jī)軟件沒(méi)有兩樣。

而底層硬件驅(qū)動(dòng)軟件的開(kāi)發(fā),若不全面考慮高層功能軟件對(duì)底層硬件的可能調(diào)用,也會(huì)使得封裝或參數(shù)設(shè)計(jì)得不合理或不完備,導(dǎo)致高層功能軟件的調(diào)用困難。從這段描述可以看出,若把一個(gè)嵌入式系統(tǒng)的開(kāi)發(fā)孤立地分為硬件設(shè)計(jì)、底層硬件驅(qū)動(dòng)軟件設(shè)計(jì)、高層功能軟件設(shè)計(jì),一旦出現(xiàn)了問(wèn)題,就可能難以定位。實(shí)際上,嵌入式系統(tǒng)設(shè)計(jì)是一個(gè)軟件、硬件協(xié)同設(shè)計(jì)工程,不能象通用計(jì)算機(jī)那樣,軟件、硬件完全分開(kāi)來(lái)看,要在一個(gè)大的框架內(nèi)協(xié)調(diào)工作。?面對(duì)學(xué)習(xí)嵌入式系統(tǒng)以軟件為主還是以硬件為主,或是如何選擇切入點(diǎn),如何在軟件與硬件之間取得一些平衡。對(duì)于這個(gè)困惑的建議是:要想成為一名真正的嵌入式系統(tǒng)設(shè)計(jì)師,在初學(xué)階段,必須重視打好嵌入式系統(tǒng)的硬件與軟件基礎(chǔ)。以下是從事嵌入式系統(tǒng)設(shè)計(jì)二十多年的一個(gè)美國(guó)學(xué)者John Catsoulis 在《Designing Embedded Hardware》一書中關(guān)于這個(gè)問(wèn)題的總結(jié):嵌入式系統(tǒng)與硬件緊密相關(guān),是軟件與硬件的綜合體,沒(méi)有對(duì)硬件的理解就不可能寫好嵌入式軟件,同樣沒(méi)有對(duì)軟件的理解也不可能設(shè)計(jì)好嵌入式硬件。

嵌入式系統(tǒng)產(chǎn)品種類繁多,應(yīng)用領(lǐng)域各異。在2.1小節(jié)中,我們把嵌入式系統(tǒng)的應(yīng)用范圍粗略分為電子系統(tǒng)的智能化與計(jì)算機(jī)應(yīng)用的延伸兩大類,從初學(xué)者角度,可能有分別從這兩個(gè)角度片面認(rèn)識(shí)嵌入式系統(tǒng)的問(wèn)題。因此,一些從電子系統(tǒng)智能化角度認(rèn)識(shí)嵌入式系統(tǒng)的學(xué)習(xí)者,可能會(huì)忽視編程結(jié)構(gòu)、編程規(guī)范、軟件工程的要求、操作系統(tǒng)等知識(shí)的積累。另一些從計(jì)算機(jī)應(yīng)用的延伸角度認(rèn)識(shí)嵌入式系統(tǒng)的學(xué)習(xí)者,可能會(huì)把通用計(jì)算機(jī)學(xué)習(xí)過(guò)程中的概念與方法生搬硬套到嵌入式系統(tǒng)的實(shí)踐中,忽視嵌入式系統(tǒng)與通用計(jì)算機(jī)的差異。

實(shí)際上,在嵌入式系統(tǒng)學(xué)習(xí)與實(shí)踐的初始階段,應(yīng)該充分了解嵌入式系統(tǒng)的特點(diǎn),根據(jù)自身的已有知識(shí)結(jié)構(gòu),制定適合自身情況的學(xué)習(xí)計(jì)劃。目標(biāo)應(yīng)該是打好嵌入式系統(tǒng)的硬件與軟件基礎(chǔ),通過(guò)實(shí)踐,為成為良好的嵌入式系統(tǒng)設(shè)計(jì)師建立起基本知識(shí)結(jié)構(gòu)。學(xué)習(xí)過(guò)程,可以通過(guò)具體應(yīng)用系統(tǒng)為實(shí)踐載體,但不能拘泥于具體系統(tǒng),應(yīng)該有一定的抽象與歸納。例如,有的初學(xué)者開(kāi)發(fā)一個(gè)實(shí)際控制系統(tǒng),沒(méi)有使用實(shí)時(shí)操作系統(tǒng),但不要認(rèn)為實(shí)時(shí)操作系統(tǒng)不需要學(xué)習(xí)。又例如,有的初學(xué)者以一個(gè)帶有實(shí)時(shí)操作系統(tǒng)的樣例為藍(lán)本進(jìn)行學(xué)習(xí),但不要認(rèn)為,任何嵌入式系統(tǒng)都需要使用實(shí)時(shí)操作系統(tǒng),甚至把一個(gè)十分簡(jiǎn)明的實(shí)際系統(tǒng)加上一個(gè)不必要的實(shí)時(shí)操作系統(tǒng)。因此,片面認(rèn)識(shí)嵌入式系統(tǒng),可能導(dǎo)致學(xué)習(xí)困惑。應(yīng)該根據(jù)實(shí)際項(xiàng)目需要,鍛煉自己分析實(shí)際問(wèn)題、解決問(wèn)題的能力。這是一個(gè)比較長(zhǎng)期的學(xué)習(xí)與實(shí)踐過(guò)程,不能期望通過(guò)短期培訓(xùn)完成整體知識(shí)體系的建立,應(yīng)該重視自身實(shí)踐,全面地理解嵌入式系統(tǒng)的知識(shí)體系。

嵌入式系統(tǒng)的大部分初學(xué)者需要選擇一個(gè)微控制器(MCU)進(jìn)行入門級(jí)學(xué)習(xí),面對(duì)眾多廠家生產(chǎn)的微控制器系列,不知如何是好。

首先是關(guān)于位數(shù)問(wèn)題,目前主要有8位、16位、32位,面對(duì)嵌入式系統(tǒng)應(yīng)用的多樣性,不同位數(shù)的MCU各有應(yīng)用領(lǐng)域,這一點(diǎn)與通用微機(jī)有很大不同。你做一個(gè)遙控器,不需要使用一個(gè)32位MCU,可能一個(gè)MCU芯片價(jià)格已經(jīng)超過(guò)遙控器價(jià)格需求。對(duì)于首次接觸嵌入式系統(tǒng)的學(xué)習(xí)者,可以根據(jù)自己的知識(shí)基礎(chǔ)選擇入門芯片的位數(shù)。建議大多數(shù)初學(xué)者,可以選擇一個(gè)8位MCU作為快速入門芯片,了解一些匯編與底層硬件知識(shí),之后再選一個(gè)16位或32位芯片進(jìn)行學(xué)習(xí)實(shí)踐。

關(guān)于芯片選擇的另一個(gè)誤區(qū),認(rèn)為有“主流芯片”存在,嵌入式系統(tǒng)也可以形成芯片壟斷。這完全是一種誤解,是套用通用計(jì)算機(jī)系統(tǒng)的思維模式,而忽視了嵌入式系統(tǒng)應(yīng)用的多樣性。

關(guān)于學(xué)習(xí)芯片選擇還有一個(gè)誤區(qū),是系統(tǒng)的工作頻率。誤認(rèn)為選擇工作頻率高的芯片進(jìn)行入門學(xué)習(xí),表示更先進(jìn)。實(shí)際上,工作頻率高可能給初學(xué)者帶來(lái)學(xué)習(xí)過(guò)程中的不少困難。

實(shí)際嵌入式系統(tǒng)設(shè)計(jì)不是追求芯片位數(shù)、工作頻率、操作系統(tǒng)等因素,而是追求穩(wěn)定可靠、維護(hù)、升級(jí)、功耗、價(jià)格等指標(biāo)。而初學(xué)者選擇入門芯片,是通過(guò)某一MCU作為藍(lán)本獲得嵌入式系統(tǒng)知識(shí)體系的通用基礎(chǔ),其基本原則是:入門時(shí)間較快、硬件成本較少,知識(shí)要素較多,學(xué)習(xí)難度較低。

07
基礎(chǔ)階段的學(xué)習(xí)建議

基于以上討論,21ic家總結(jié)了渴望學(xué)習(xí)嵌入式系統(tǒng)的學(xué)子提出幾點(diǎn)基礎(chǔ)階段的學(xué)習(xí)建議:

(1)嵌入式系統(tǒng)軟件硬件密切相關(guān),一定要打好軟件硬件基礎(chǔ)。其實(shí),只要找到正確的方法,加上努力,任何理工科學(xué)生,甚至非理工科學(xué)生,都能學(xué)好嵌入式系統(tǒng)。

(2)選擇一個(gè)芯片及硬件評(píng)估板(入門芯片最好是簡(jiǎn)單一點(diǎn),例如8位MCU)、選擇一本好書(最好有規(guī)范的例子)、找一位好老師(最好是有經(jīng)驗(yàn)且熱心的)。硬件評(píng)估板的價(jià)格一定要在1000元以下,不要太貴,最好能有自己動(dòng)手的空間。不花一分硬件錢,要想學(xué)好嵌入式系統(tǒng)不實(shí)際。因?yàn)?,這是實(shí)踐性很強(qiáng)的學(xué)科。好書,可以使你少走彎路,不會(huì)被誤導(dǎo),要知道有的書是會(huì)使人進(jìn)入學(xué)習(xí)誤區(qū)的。好老師也可以是做過(guò)一些實(shí)際項(xiàng)目的學(xué)長(zhǎng)(一定要找做過(guò)幾個(gè)成功項(xiàng)目的學(xué)長(zhǎng)或老師做指導(dǎo),否則,經(jīng)驗(yàn)不足也可能誤導(dǎo)),有教師指導(dǎo),學(xué)習(xí)進(jìn)程會(huì)加快(人工智能學(xué)科里有個(gè)術(shù)語(yǔ)叫無(wú)教師指導(dǎo)學(xué)習(xí)模式與有教師指導(dǎo)學(xué)習(xí)模式,無(wú)教師指導(dǎo)學(xué)習(xí)模式比有教師指導(dǎo)學(xué)習(xí)模式復(fù)雜許多)。

(3)許多人怕硬件,其實(shí)嵌入式系統(tǒng)硬件比電子線路好學(xué)多了。只要深入理解MCU的硬件最小系統(tǒng),對(duì)I/O口、串行通信、鍵盤、LED、LCD、SPI、I2C、PWM、A/D(包括一些傳感器)、D/A等逐個(gè)實(shí)驗(yàn)理解,逐步實(shí)踐。再通過(guò)自己做一個(gè)實(shí)際的小系統(tǒng),底層硬件基礎(chǔ)就有了。各個(gè)硬件模塊驅(qū)動(dòng)程序的編寫是嵌入式系統(tǒng)的必備基礎(chǔ)。學(xué)習(xí)嵌入式系統(tǒng)的初期,這個(gè)過(guò)程是必須的。

(4)至于嵌入式實(shí)時(shí)操作系統(tǒng)RTOS,一定不要一開(kāi)始就學(xué),這樣會(huì)走很多彎路,也會(huì)使你對(duì)嵌入式系統(tǒng)感到畏懼。等你軟件硬件基礎(chǔ)打好了,再學(xué)習(xí)就感到容易理解。實(shí)際上,眾多嵌入式應(yīng)用,并不一定需要操作系統(tǒng)。也可以根據(jù)實(shí)際項(xiàng)目需要再學(xué)習(xí)特定的RTOS。一定不要被一些嵌入式實(shí)時(shí)操作系統(tǒng)培訓(xùn)班宣傳所誤導(dǎo),而忽視實(shí)際嵌入式系統(tǒng)軟件硬件基礎(chǔ)知識(shí)的學(xué)習(xí)。

(5)要避免片面地單純從“電子”或“計(jì)算機(jī)軟件”角度認(rèn)識(shí)嵌入式系統(tǒng)。前面說(shuō)過(guò),嵌入式系統(tǒng)是軟件與硬件的綜合體。因此,要逐步從MCU的最小系統(tǒng)開(kāi)始,一點(diǎn)一點(diǎn)理解硬件原理及底層硬件驅(qū)動(dòng)編程方法。要通過(guò)規(guī)范的例子,理解軟件工程封裝、可復(fù)用等思想。通過(guò)規(guī)范編程,積累底層構(gòu)件(Component),也就是一個(gè)一個(gè)模塊,但是要封裝得比較好,可復(fù)用。

(6)注重實(shí)驗(yàn)與實(shí)踐。這里說(shuō)的實(shí)驗(yàn)主要指通過(guò)重復(fù)或驗(yàn)證他人的工作,目的是學(xué)習(xí)基礎(chǔ)知識(shí),這個(gè)過(guò)程一定要經(jīng)歷。實(shí)踐是自己設(shè)計(jì),有具體的“產(chǎn)品”目標(biāo)。如果你能花500元左右自己做一個(gè)具有一定功能的小產(chǎn)品,且能穩(wěn)定運(yùn)行1年以上,就可以說(shuō)接近入門了。

(7)關(guān)于入門芯片的選擇。不要選太復(fù)雜的微控制器作為入門芯片,不能超越學(xué)習(xí)過(guò)程。不要一下子學(xué)習(xí)幾種芯片,可以通過(guò)一個(gè)芯片入門并具有一個(gè)實(shí)踐經(jīng)驗(yàn)后,根據(jù)實(shí)際需要選擇芯片開(kāi)發(fā)實(shí)際產(chǎn)品。注意,不要把微處理器(MPU)與微控制器(MCU)概念相混淆,微處理器只是微控制器的內(nèi)核。

(8)關(guān)于操作系統(tǒng)的選擇??梢缘鹊侥憔哂幸欢▽?shí)踐后,選擇一個(gè)簡(jiǎn)單容易理解原理的進(jìn)行學(xué)習(xí),不要一開(kāi)始就學(xué)習(xí)幾種操作系統(tǒng),理解了基本原理,實(shí)踐中確有實(shí)際需要再學(xué)習(xí)也不遲。人總是要不斷學(xué)習(xí)的。

(9)關(guān)于匯編與C語(yǔ)言的取舍。隨著MCU對(duì)C編譯的優(yōu)化支持,對(duì)于匯編可以只了解幾個(gè)必須的語(yǔ)句,直接使用C語(yǔ)言編程。但必須通過(guò)第一個(gè)程序理解芯片初始化過(guò)程、中斷機(jī)制、程序存儲(chǔ)情況等區(qū)別于PC機(jī)程序的內(nèi)容。另外,為了測(cè)試的需要,最好掌握一門PC機(jī)編程語(yǔ)言。

(10)要明確自己的學(xué)習(xí)目的,并注意學(xué)習(xí)方法。關(guān)于學(xué)習(xí)目的要明確是打基礎(chǔ),還是為了適應(yīng)某些工作而進(jìn)行的短訓(xùn);而學(xué)習(xí)方法方面,要根據(jù)學(xué)習(xí)目的選擇合適的學(xué)習(xí)途徑,注意理論學(xué)習(xí)與實(shí)踐、通用知識(shí)與芯片相關(guān)知識(shí)、硬件知識(shí)與軟件知識(shí)的平衡,要在理解軟件工程基本原理基礎(chǔ)上理解硬件構(gòu)件與軟件構(gòu)件等基本概念。

以上建議,僅供參考。?當(dāng)然,以上只是基礎(chǔ)階段的學(xué)習(xí)建議,要成為良好的嵌入式系統(tǒng)設(shè)計(jì)師,還需要在實(shí)際項(xiàng)目中鍛煉,并不斷學(xué)習(xí)與積累經(jīng)驗(yàn)。如果還沒(méi)有看夠,可以在21ic中國(guó)電子網(wǎng)的專欄進(jìn)行查閱。

附:嵌入式 Arm Linux 入門必讀書籍推薦


1、Linux基礎(chǔ)入門

  • 《笨辦法學(xué) Linux?》
  • 《嵌入式 Linux 基礎(chǔ)教程》
  • 《Linux 就該這么學(xué)》
  • 《Linux C 編程一站式學(xué)習(xí)》
  • 《嵌入式 Linux 開(kāi)發(fā)教程》
  • 《鳥(niǎo)哥的 Linux 私房菜》
  • 《Linux 自學(xué)大全》
  • 《ARM嵌入式?Linux 系統(tǒng)開(kāi)發(fā)從入門到精通》
  • 《ARM Linux 入門與實(shí)踐》

2、Linux 系統(tǒng)環(huán)境

  • 《LINUX命令行與SHELL腳本編程大全》第三版
  • 《Shell 編程大全》
  • 《Shellbook》
  • 《Shell 命令行操作》

3、Git 版本管理

  • 《GitHub 入門與實(shí)踐》
  • 《Pro Git》第二版

4、C 語(yǔ)言和匯編

  • 《C 和 指針》
  • 《C 語(yǔ)言深度剖析》
  • 《高質(zhì)量C++編程指南》
  • TheCprogramminglanguage《C程序設(shè)計(jì)語(yǔ)言》?
  • Ctrapsandpitfalls《C陷阱與缺陷》?
  • ExpertCLanuage《專家C編程》?
  • WritingCleanCode-----MicrosoftTechiniquesforDevelopingBug-freeCPrograms《編程精粹--Microsoft編寫優(yōu)質(zhì)無(wú)錯(cuò)C程序秘訣》?
  • ProgrammingEmbeddedSystemsinCandC++《嵌入式系統(tǒng)編程》?
  • 《高質(zhì)量C++/C編程指南》林銳?

5、Arm 體系結(jié)構(gòu)

  • 《ARM 嵌入式系統(tǒng)開(kāi)發(fā)-軟件設(shè)計(jì)與優(yōu)化》
  • 《ARM系列處理器應(yīng)用技術(shù)完全手冊(cè)》
  • ARM 官方文檔
  • 編程指南:
    • 《The_Definitive_Guide_to_ARM_Corte_M3&M4》
    • 《Arm Cortex-A 編程指南》
    • 《Armv8-A 編程指南》

6、Linux 應(yīng)用編程

  • 《Linux 環(huán)境編程:從應(yīng)用到內(nèi)核》
  • 《GNU Linux 編程指南》
  • 《Linux 程序設(shè)計(jì)》
  • 《Linux 系統(tǒng)編程》
  • 《UNIX 環(huán)境高級(jí)編程》

6、Linux 內(nèi)核基礎(chǔ)原理

  • 《Linux 內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)》
  • 《Linux 設(shè)備驅(qū)動(dòng)程序》
  • 《深入 Linux 內(nèi)核架構(gòu)》
  • 《深入Linux 設(shè)備驅(qū)動(dòng)程序內(nèi)核機(jī)制》
  • 《Mastering Linux Kernel Development》

7、Linux 內(nèi)核開(kāi)發(fā)與實(shí)踐

  • 《Linux 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解》
  • 《精通 Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)》
  • 《嵌入式 Linux 基礎(chǔ)教程》
  • 《構(gòu)建嵌入式 Linux 系統(tǒng)》
  • 《深入 Linux 內(nèi)核架構(gòu)》
  • 《Linux 內(nèi)核完全注釋(帶源碼中文注釋)》
  • 《一幅漫畫解讀 Linux 內(nèi)核》
  • 《快速理解什么是 Linux 內(nèi)核》
  • 《嵌入式 Linux 框架的理解》

8、Linux應(yīng)用開(kāi)發(fā)

  • 《韋東山嵌入式 Linux 應(yīng)用開(kāi)發(fā)完全手冊(cè)》
  • 《Linux 學(xué)習(xí)資料(華為)》
  • 《樹(shù)莓派開(kāi)始,玩轉(zhuǎn) Linux》
  • 《書單:頂級(jí)Linux大神告訴你該看哪些書》
  • 《給編程初學(xué)者的7本書+高級(jí)Linux編程(開(kāi)源書下載)

9、操作系統(tǒng)理論與基礎(chǔ)

  • 《深入理解計(jì)算機(jī)系統(tǒng)》
  • 《Operating Systems:Three Easy Pieces》

【參考文獻(xiàn)】

1、《嵌入式Linux 學(xué)習(xí)經(jīng)驗(yàn)及推薦資料》
2、《嵌入式工程師:親身軟件內(nèi)功修煉心法》
3、《十年資深嵌入式大神教你如何從零開(kāi)始學(xué)習(xí)》

-END-


|?整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有?|

|?如有侵權(quán),請(qǐng)聯(lián)系刪除?|


【1】嵌入式研發(fā)10多年,工程師悟出這些道理

【2】當(dāng)談起嵌入式工程師,究竟在談些什么

【3】嵌入式工程師出路之我見(jiàn):就業(yè),技術(shù),行業(yè)...

【4】為什么嵌入式工程師會(huì)對(duì)8位MCU有誤解?

【5】嵌入式工程師結(jié)合經(jīng)歷聊硬件工程師和軟件工程師哪個(gè)更有前途?



免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

嵌入式ARM

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉