深圳華清遠見Logo

0
在招課程

0
校區(qū)數量

 

咨詢電話:

深圳華清遠見告訴你零基礎怎樣學習嵌入式?

 

深圳華清遠見告訴你零基礎怎樣學習嵌入式?

 

大家眼中的嵌入式是什么呢?我們可能在大學焊過電路板、組裝過收音機、課程設計仿真過密碼鎖、計分器,學過匯編、了解C51,高大上點兒的畢業(yè)設計玩過傳感器,參加過競賽,做過一些智能機器人、智能家居、智能溫控大棚等項目,這難道就是嵌入式嗎?深圳華清遠見告訴你零基礎怎樣學習嵌入式!

嵌入式人工智能是一種軟硬結合的技術,通過智能算法在嵌入式終端設備上的運行,實現實時感知、人機交互、決策控制。廣泛應用于智能交通、智慧醫(yī)療、機器人、無人駕駛、智慧物流、工業(yè)自動化設計、智慧城市、航天軍工等細分領域。

深圳華清遠見教你如何零基礎學習嵌入式

01 嵌入式人工智能要學習哪些內容?

十幾年前的嵌入式開發(fā)受限于硬件處理器的性能,無法實現復雜的邏輯和功能,使得嵌入式產品功能單一。

現在嵌入式開發(fā)隨著處理器的成長要面對全新的挑戰(zhàn):計算性能和內存永遠不夠用、為了保障不丟幀要求高效的實時性、高級接口和協議棧的產生導致代碼的規(guī)模越來越大。

為了應對這些新的挑戰(zhàn),各大企業(yè)對工程師有以下幾個方面的要求:編程能力、處理器架構、操作系統(tǒng)、接口與驅動、Framework、應用編程與調試、硬件知識。

1. 編程能力

嵌入式工程師大類上屬于軟件工程師的范疇,編程技能是基本功,DJI、小馬智行、NINEBOT、石頭科技、OPPO、小米、地平線這些公司都對C/C++要求熟練掌握的程度。

除此以外對解釋型語言要求為至少熟悉一種腳本語言。了解Linux系統(tǒng),會使用Makefile工程管理工具等。

可見,C和C++仍舊是嵌入式開發(fā)絕對主流的語言。底層軟件這么多年來,一直是C的天下,在可預見的將來,不會改變。

隨著系統(tǒng)復雜度越來越高,越來越多的應用層軟件采用C++來編寫。Sehll主要用于制作工程管理工具,Python可以讓你和人工智能工程師愉快對話。

2. 處理器架構

美團、小馬智行、石頭科技、OPPO、VIVO都要求熟練掌握或者精通STM32單片機和ARM處理器架構,其它加分項有DSP、熟練使用ARM Cortex-A或M系列內核的SOC。

這部分我們需要了解Cortex-M和Cortex-A系列處理器架構。哈佛架構、馮諾依曼架構、多級流水線、是最簡單的問題。SIMD、MIMD、指令預取、亂序執(zhí)行這些概念也要搞懂。

3. 操作系統(tǒng)

大疆、美團、小馬智行、小米、地平線都要求熟悉Linux下的多進程多線程、網絡編程的開發(fā)和調試,內存、功耗、性能優(yōu)化等。

無人駕駛和無人機,這些對響應速度要求高的行業(yè),對實時操作系統(tǒng)也有不同程度的要求。

在這一部分我們需要掌握基本的操作系統(tǒng)知識,理論結合實際,熟悉一個RTOS,大多數的RTOS的復雜度遠小于Linux。

Linux擁有完善的生態(tài),相較于RTOSLinux的C庫配置已經很完善了。但是想要用好就有一定難度了,在這里需要了解內存管理、進程管理、多核、中斷、鎖、消息隊列,性能分析等等內容來應對開發(fā)工程中幀率下降、系統(tǒng)秒級卡死、相機丟幀等異常。

4. 接口與驅動

許多初涉嵌入式行業(yè)的人會狹隘的認為搞嵌入式就是寫驅動。

美團無人配送、小馬智行、石頭科技對CAN、SPI、I2C、UART這些常見的低速接口都要求熟悉,其它的像LCD、Touch、Camera、USB、BT/WIFI/GPS、IMU這些進入尋常百姓家的Sensor驅動開發(fā)經驗是妥妥的加分項。

低速接口的驅動,在廠家提供的BSP中一般都有,只需要仔細看手冊,搞清各接口所需的工作模式并做適當配置,該用中斷的時候用中斷,該用DMA的時候用DMA,即可。

5. Framework

中間件和協議棧的部分有一個特點,研發(fā)機器人的企業(yè)一般都會要求熟悉ROS,相機類的企業(yè)要求熟悉camera、codec、storage相關的pipeline。還有基本的協議棧也是必須了解和掌握的。

6. 應用編程與調試

美團無人配送、小馬智行、NINEBOT、小米都要求熟悉Linux或Unix系統(tǒng)編程,了解基本的編譯原理,需要掌握gdb、valgrind、strace、perf、coredump等調試手段,用好log系統(tǒng)。

只要掌握上面編程能力、操作系統(tǒng)、Framework這些內功心法,調試工具不過是招數。

7. 硬件知識

科技企業(yè)大多要求了解一定的硬件知識,基礎硬件知識的掌握程度,達到可以看懂原理圖并對常見的元器件有一定了解,熟悉模電數電知識即可?;旧鲜请娮庸こ填悓W生,所學專業(yè)課的內容。另外,要會使用示波器等測試儀器,會驅動常見的傳感器等。


02 零基礎如何入門?

嵌入式人工智能專業(yè)是綜合了計算機硬件技術,計算機軟件技術以及電子電路技術、人工智能的一門綜合學科,所涉及的內涵和知識非常廣泛。

1. C語言基礎

在開始學習嵌入式之前,首先要打好基礎,其中最重要的是C語言基礎,要至少達到能單獨編寫調試一個500行的小項目(大概是一個本地員工管理系統(tǒng)的代碼量),能夠了解C語言的基本語法規(guī)則,基本語句的使用,理解指針概念并能靈活使用各種指針。

在學習C語言的過程中,指針的概念比較難理解,但是如果對計算機組成原理有了解的話,地址和 指針,源碼和可執(zhí)行程序,軟件通過寄存器控制硬件這些概念都會變得很清晰。

那學習C語言使用什么環(huán)境?

首選方案,Windows安裝虛擬機,虛擬機運行Linux操作系統(tǒng),編輯器選擇vim,命令行運行gcc編譯器編譯環(huán)境。

為什么要用Linux操作系統(tǒng)呢

從上文中的各大企業(yè)對研發(fā)工程師的要求可以看出,Linux操作系統(tǒng)在嵌入式行業(yè)中的地位是任何操作系統(tǒng)不可比擬的。許多公司為了保護自己的代碼產權,開發(fā)用的主機直接運行Linux操作系統(tǒng),并在命令行終端來控制主機。

出于未來工作中盡快適應這種開發(fā)環(huán)境,所以可以在入門的時候就直接體驗和見識酷炫的Linux操作系統(tǒng)。

但是入門階段并不需要刻意背過Linux的各種使用命令、Linux各種服務器的配置,還原備份各種操 作等,只要會基本文件相關的命令,會使用vim編輯器和gcc編輯器即可。

大約一周的時間即可熟悉Linux系統(tǒng),你會體會到Linux和Windows系統(tǒng)的不同,擺脫對圖形化界面的依賴。

當學會了C語言編程后,你需要掌握操作系統(tǒng)相關的知識,多線程多進程編程、網絡編程。通過實踐學習一些接口函數完成一些小項目比如銀行家算法、網絡聊天室等。對操作系統(tǒng)的知識有一個初步的感性認識。

2. MCU和CPU

以上的所有編程學習都是在單一的環(huán)境下進行的。即開發(fā)環(huán)境和運行環(huán)境都是一樣的都在Ubuntu下進行。難道嵌入式開發(fā)就是如此嗎,說好的軟硬件可裁剪呢?

別急,緊接著我們就需要加入MCU和CPU的學習,要學習ARM是什么,不同系列的MCU開發(fā)方式不同,ARM Cortex™-A 系列應用型處理器,可向托管豐富OS平臺和用戶應用程序的設備提供全方位的解決方案,從超低成本手機、智能手機、移動計算平臺、數字電視和機頂盒到企業(yè)網絡、打印機和服務器解決方案,是作為學習嵌入式的合適的素材。

現在嵌入式的學習資源豐富,選擇合適的Cortex™-A 系列的開發(fā)板后,根據裸板開發(fā)、系統(tǒng)移植、驅動開發(fā)這樣的順序學習。

裸板開發(fā)的學習主要是感受一下如何通過編程實現控制硬件。系統(tǒng)移植中我們會發(fā)現搭載Linux操作系統(tǒng)的板子功力大增,交叉編譯工具鏈的出現使得我們對架構兩個字有了更深入的認識。

剛剛還在懷念在Ubuntu下編寫C代碼運指如飛的感覺,現在可以繼續(xù)編寫Linux風格的C代碼了。

3. 驅動開發(fā)

前面裸板開發(fā)和驅動移植的學習目的是面對接下來的驅動大魔頭,學習驅動開發(fā)我們需要有一個空杯心態(tài),需要有主動理解Linux內核設計理念的意識(但是不要鉆牛角尖),時刻把握Linux下一切皆文件的宗旨和分層的思想。

當我們在這一階段點亮開發(fā)板上的一盞明燈,恭喜你,一只腳踏進嵌入式開發(fā)的大門了。

4. C++和Qt

體會了最基本的驅動開發(fā)后,嵌入式學習還未結束,但是之后的學習我們有了一些選擇的主動權,當我們看到一些有意思的嵌入式小項目,我們可以理解它的實現思

而最好的學習方法是自己實踐完成一些小項目,你也許不滿足之前所學,為什么不能把黑乎乎的命令行終端優(yōu)化成精美的液晶屏顯示,C++和Qt的學習就在所難免了。

5. Python人工智能

那么,如果你已經可以實現一個小型的嵌入式項目了,但是如果大火的人工智能技術可以加入到這個小項目中,想必一定非??犰牛覀兛梢园汛舭宓挠脩艚缑孑斎敫某蓤D像識別或者人臉識別。

6. STM32

一個產品級的項目考慮的不僅僅是功能的實現,還要考慮功耗、成本。

 





有問必答,專業(yè)學習規(guī)劃師為您免費咨詢解答
課程底價、品牌對比、師資力量、學習時間、課程內容、報考政策...想了解什么?就來咨詢學習規(guī)劃師吧!
登錄后發(fā)表評論
評論
 
 
預約試聽