大家好,我是雜燴君。
一位朋友問(wèn)了這樣一個(gè)問(wèn)題:
嵌入式技術(shù)的范疇很廣,不同地行業(yè)可能涉及到不同地技術(shù)。如:
機(jī)器人行業(yè)應(yīng)用的相關(guān)技術(shù)可能有:傳感器數(shù)據(jù)采集處理、電機(jī)控制、ROS機(jī)器人操作系統(tǒng)、規(guī)劃與運(yùn)動(dòng)控制、WiFi藍(lán)牙等無(wú)線通信、圖像識(shí)別、語(yǔ)音識(shí)別等。
智能家居行業(yè)應(yīng)用的相關(guān)技術(shù)可能有:WiFi藍(lán)牙等無(wú)線通信、MQTT等物聯(lián)網(wǎng)相關(guān)協(xié)議、物聯(lián)網(wǎng)操作系統(tǒng)、物聯(lián)網(wǎng)安全、傳感器數(shù)據(jù)采集處理、物聯(lián)網(wǎng)云平臺(tái)等。
汽車(chē)電子行業(yè)設(shè)計(jì)的相關(guān)技術(shù)可能有:傳感器數(shù)據(jù)采集處理、物聯(lián)網(wǎng)通信技術(shù)、語(yǔ)音識(shí)別、電機(jī)控制、BMS電池管理、總線通信協(xié)議等。
不同的嵌入式產(chǎn)品,需要的技術(shù)不全一樣。但所需的基礎(chǔ)技術(shù)都是差不多的。
每項(xiàng)技術(shù)可能有著相應(yīng)的開(kāi)發(fā)崗位,這些崗位實(shí)際可能不全叫嵌入式軟件崗,但這些崗位大多都是嵌入式軟件工程師 + 特定知識(shí)的學(xué)習(xí)之后就可以勝任。如:
嵌入式軟件基礎(chǔ) + 電控知識(shí) = 電控軟件開(kāi)發(fā)工程師
嵌入式軟件基礎(chǔ) + AI技術(shù) = 嵌入式 AI 應(yīng)用開(kāi)發(fā)工程師
嵌入式軟件基礎(chǔ) + 音視頻技術(shù) = 嵌入式音視頻開(kāi)發(fā)工程師
嵌入式軟件基礎(chǔ) + 底層知識(shí) = 嵌入式驅(qū)動(dòng)開(kāi)發(fā)工程師
學(xué)嵌入式要學(xué)到什么程度才好找工作呢?
我認(rèn)為是這些點(diǎn):
編程語(yǔ)言
基本掌握嵌入式必備的編程語(yǔ)言。C語(yǔ)言為主,C++為輔。在資源有限的情況下,大多數(shù)嵌入式產(chǎn)品還是使用C語(yǔ)言為主的,特別是底層驅(qū)動(dòng)開(kāi)發(fā)。上層應(yīng)用開(kāi)發(fā)大多用C,在一些資源比較充足的平臺(tái)中,也會(huì)選擇使用C++來(lái)進(jìn)行開(kāi)發(fā)。
補(bǔ)充編程語(yǔ)言的知識(shí)時(shí),除了掌握語(yǔ)言本身的知識(shí)之外。還需要同時(shí)學(xué)習(xí):編譯、構(gòu)建、調(diào)試等方面的相關(guān)知識(shí)。這類(lèi)很重要的知識(shí)一般C語(yǔ)言課程都沒(méi)教:
芯片
基本掌握嵌入式處理器的基礎(chǔ)知識(shí)。嵌入式處理器種類(lèi)很多:MCU(微控制器)、MPU(微處理器)、DSP(數(shù)字信號(hào)處理器)等。MCU,也就是我們常說(shuō)的單片機(jī)。
初學(xué)期,重點(diǎn)放在單片機(jī)的學(xué)習(xí)這一塊。
理解整體框圖、掌握基礎(chǔ)外設(shè)如:GPIO、UART、TIM、ADC、DAC、I2C、SPI的裸機(jī)編程及相關(guān)原理、應(yīng)用。
操作系統(tǒng)
基本掌握操作系統(tǒng)相關(guān)知識(shí)。
先了解學(xué)習(xí)RTOS,如RT-Thread等。學(xué)習(xí)操作系統(tǒng)內(nèi)核知識(shí):線程調(diào)度、時(shí)鐘管理、線程間同步、線程間通信、內(nèi)存管理、設(shè)備管理等,并掌握基本的使用。
再熟悉Linux操作系統(tǒng)的基本使用。
再學(xué)習(xí)Linux下的應(yīng)用開(kāi)發(fā)知識(shí):多線程編程、多進(jìn)程編程、文件I/O編程、網(wǎng)絡(luò)編程等。
開(kāi)發(fā)工具
基本掌握必備的開(kāi)發(fā)工具。
VScode、VS、Sourceinsight、Vim的使用。
gcc、gdb的使用。
git的使用。
對(duì)比工具、串口工具、網(wǎng)絡(luò)工具的使用。
解決問(wèn)題的能力
上面幾點(diǎn)都可以通過(guò)一些技術(shù)資料進(jìn)行學(xué)習(xí)。這一點(diǎn)則需要需要在實(shí)戰(zhàn)中鍛煉,比如自己找一些小項(xiàng)目來(lái)做,一來(lái)可以把上面列出的幾點(diǎn)內(nèi)容給完整地串起來(lái),二是在做項(xiàng)目的過(guò)程中會(huì)遇到很多問(wèn)題,通過(guò)不斷解決這些實(shí)際問(wèn)題可以積累一些解決問(wèn)題的經(jīng)驗(yàn)。
工作之后,知識(shí)儲(chǔ)備該有的都有了,大家最后拼的也都是解決問(wèn)題的經(jīng)驗(yàn)、能力。
我覺(jué)得牢牢地掌握這些99.99999%的概率都會(huì)用得上的嵌入式軟件基礎(chǔ)對(duì)找工作才比較有利。其它一些技術(shù)可以再用的時(shí)候再去了解、學(xué)習(xí)。
特別是一些行業(yè)相關(guān)知識(shí),可以入行之后再進(jìn)行學(xué)習(xí)。如果你一開(kāi)始的目標(biāo)就很明確,要在某一行、某一個(gè)方向進(jìn)行深耕,也可以提早學(xué)習(xí)相關(guān)知識(shí),早些積累一些優(yōu)勢(shì)。