a) 開(kāi)發(fā)平臺(tái)的熟悉,目前的嵌入式開(kāi)發(fā)大多數(shù)是在linux或者類linux下的環(huán)境下進(jìn)行的,那么linux的使用應(yīng)該熟悉吧,shell腳本得會(huì)寫(xiě)吧,配置文件得會(huì)改吧,GCC GDB 得會(huì)用吧,Make工具得會(huì)吧?
b) 比如項(xiàng)目管理工具的使用,都什么年代了,不會(huì)用CVS,也不會(huì)用SVN?請(qǐng)問(wèn),你還活在軟件時(shí)代的原始社會(huì)么?
c) 數(shù)據(jù)結(jié)構(gòu)和算法,搞軟件開(kāi)發(fā),不懂?dāng)?shù)據(jù)結(jié)構(gòu),不會(huì)算法優(yōu)化,不會(huì)衡量復(fù)雜度,太不靠譜了吧?當(dāng)然,這個(gè)不是要求啥算法都會(huì),啥數(shù)據(jù)結(jié)構(gòu)都記得住,最起碼得知道有那么種東西,有什么作用,這樣用到的時(shí)候好歹也能查啊
a) 數(shù)字電路,這個(gè)……主要是了解一些基本的電路知識(shí),如門電路、邏輯電路、存儲(chǔ)器、寄存器,為了更好的理解嵌入式芯片,存儲(chǔ)器,外圍設(shè)備等硬件的設(shè)計(jì),但往往在軟件開(kāi)發(fā)中未必能用的到。因?yàn)榇蟛糠钟布继峁┝撕芡暾能浖涌凇?br />
b) 操作系統(tǒng),這個(gè)說(shuō)的是平臺(tái)上選用的操作系統(tǒng)。嵌入式產(chǎn)品操作系統(tǒng)是在太多了。但操作系統(tǒng)的內(nèi)部設(shè)計(jì)原理都是殊途同歸。首先要去學(xué)習(xí)的是操作系統(tǒng)原理,去了解進(jìn)程通信、內(nèi)存管理、文件系統(tǒng)等幾個(gè)重要的部分,因?yàn)檫@些在軟件開(kāi)發(fā)尤其是內(nèi)核驅(qū)動(dòng)開(kāi)發(fā)時(shí)會(huì)用到。接下來(lái)可以去熟悉至少一種主流的操作系統(tǒng),Linux是一個(gè)很好的選擇,去了解它的內(nèi)核架構(gòu),設(shè)備驅(qū)動(dòng)架構(gòu),如何去編譯,裁剪,編寫(xiě)應(yīng)用程序,以及如何使用在具體的嵌入式產(chǎn)品上
c) 計(jì)算機(jī)的組成/微機(jī)原理,主要是為了了解微型計(jì)算機(jī)的硬件工作原理,明白CPU、總線、I/O、存儲(chǔ)器等一些關(guān)鍵結(jié)構(gòu)是怎么工作的,雖然是很枯燥的知識(shí),但是對(duì)熟悉外圍設(shè)備硬件工作方式,及操作系統(tǒng),軟件架構(gòu)的設(shè)計(jì)及優(yōu)化相當(dāng)關(guān)鍵。
3擴(kuò)展的能力,這些可能是要用到的。
a) 通信協(xié)議,對(duì)于非應(yīng)用層的通信協(xié)議,我實(shí)在不知道是不是該把它放入操作系統(tǒng)的范疇,因?yàn)楹芏嗖僮飨到y(tǒng)是沒(méi)有網(wǎng)絡(luò)部分的,但是在很多方面它又是由操作系統(tǒng)提供。當(dāng)然這些下層通信協(xié)議,貌似不太用關(guān)心,因?yàn)樘嗟拈_(kāi)源協(xié)議棧了。應(yīng)用層的網(wǎng)絡(luò)協(xié)議可能就要關(guān)心了,比如http,ftp,rtsp,rtmp,mms等等。
b) 音視頻處理,比如文件封裝啊,音視頻的編解碼啊,各種音視頻的標(biāo)準(zhǔn)啊,還有流媒體什么的。Ffmpeg是一個(gè)很好的東西,建議學(xué)習(xí)一下。