新手如何入门嵌入式
                            
                            
                            【摘要】:ARM+Linux是目前比較吃香的嵌入式軟件開發(fā)組合,但很多新手對于如何入門嵌入式感覺不知從何下手,本文分析了學(xué)習(xí)嵌入式軟件開發(fā)需要具備哪些基本知識和技能,開發(fā)學(xué)習(xí)的基本步驟,并給出了各種參考資料及網(wǎng)站。??
【關(guān)鍵詞】嵌入式,ARM,Linux,處理器,總線接口,操作系統(tǒng),驅(qū)動開發(fā)?
??
??
1????軟硬件的基本技能?
??
關(guān)于ARM+linux,涉及軟硬件兩塊,要求通吃,這種人才比較適合成長為嵌入式系統(tǒng)架構(gòu)師???
??
1.1????硬件包括處理器的體系結(jié)構(gòu)及硬件總線接口兩部分?
??
處理器的體系結(jié)構(gòu)?
需要對微機(jī)原理、單片機(jī)、處理器等有所了解,基本上搞明白一種處理器如ARM、MIPS、PPC、DSP,學(xué)習(xí)其他的就很快了???
??
硬件總線接口?
最底層的,驅(qū)動開發(fā)是最常見的工作了???
這需要對各種硬件總線接口等有所了解,如IIS、IIC、UART、SPI、CAN、MDIO、USB、PCI、PCMCIA、SDRAM、FLASH及EEPROM等,設(shè)備千差萬別,但基本的連接都是通過這些接口進(jìn)行的,搞明白了接口剩下的就是具體芯片的事了???
??
1.2????軟件主要包括開發(fā)語言及操作系統(tǒng)開發(fā)?
??
開發(fā)語言?
嵌入式軟開以C語言開發(fā)為主,要求精通指針、結(jié)構(gòu)指針、指針函數(shù)及所有的數(shù)據(jù)類型轉(zhuǎn)換,對const、static、volatile、packed、aligned等關(guān)鍵字有深入的認(rèn)識??
??
操作系統(tǒng)開發(fā)?
如果想搞嵌入式軟件開發(fā)的話,不學(xué)點(diǎn)操作系統(tǒng)方面的知識你會發(fā)現(xiàn)沒什么市場???
現(xiàn)在基本上是個平臺都想跑個操作系統(tǒng)???
控制類的uC/OS-II,eCos,這些都是小型的操作系統(tǒng),學(xué)起來簡單,但在求職中市場小???
手機(jī)類的,如Windows Mobile、Sybian、PalmOS及Andriod,搞Sybian、PalmOS的人還不多,Windows Mobile和Andriod還是挺火的,也是未來的領(lǐng)導(dǎo)者???
網(wǎng)絡(luò)通信類的,如VxWorks、Linux等大型復(fù)雜的操作系統(tǒng),也是企業(yè)要求最多的,還有不太知名的OSE,但其在基站設(shè)備中占據(jù)了50%的市場份額???
當(dāng)然還有不帶MMU的,如uClinux、Nucleus等??
個人感覺尤其是Linux是目前求職市場中最火的,主要是由于其開源的優(yōu)勢,很多單位都在往這方面投入以減少成本???
??
如果以前對操作系統(tǒng)方面了解較少的話,個人建議可以先學(xué)學(xué)uC/OS-II,簡單易上手,主要是借此學(xué)習(xí)操作系統(tǒng)的相關(guān)知識???
然后主打Linux,要結(jié)合開發(fā)板來學(xué),這樣才上手的快???
??
2????開發(fā)板?
廣州優(yōu)龍、華恒等都是比較知名的開發(fā)板廠家,配套的資料比較完善,相應(yīng)的技術(shù)支持也不錯,可以考慮?
??
3????開發(fā)流程及參考書目?
??
嵌入式開發(fā)需要遵循一個基本的流程,首先是開發(fā)環(huán)境及流程,然后是驅(qū)動開發(fā)和應(yīng)用程序開發(fā),最后就是深入內(nèi)核的海洋,學(xué)習(xí)設(shè)計理念及方法,最高境界就是就是將這些設(shè)計思路嫻熟的運(yùn)用在任意一個應(yīng)用環(huán)境中,那時候就是神了~~~?
??
3.1????嵌入式開發(fā)設(shè)計流程:?
1、ARM嵌入式Linux系統(tǒng)構(gòu)造與驅(qū)動開發(fā)范例?
2、嵌入式設(shè)計及Linux驅(qū)動開發(fā)指南?
3、嵌入式Linux應(yīng)用程序開發(fā)詳解?
都屬于Linux開發(fā)設(shè)計流程方面的入門書籍,嵌入式開發(fā)的基礎(chǔ)?
??
3.2????Linux驅(qū)動開發(fā):?
1、嵌入式系統(tǒng)接口設(shè)計與Linux驅(qū)動程序開發(fā) 北京航空航天大學(xué)出版社 劉淼 強(qiáng)烈推薦; 包括各種硬件總線接口范例,接口開發(fā)必備?
2、Linux設(shè)備驅(qū)動程序<Linux Device Drivers third edition>,Linux驅(qū)動開發(fā)必備經(jīng)典,粗讀查詢即可,當(dāng)然最基本的字符設(shè)備驅(qū)動和塊設(shè)備驅(qū)動必須熟練掌握?
??
3.3????Linux應(yīng)用程序開發(fā):?
UNIX環(huán)境高級編程?
UNIX網(wǎng)絡(luò)編程全卷?
??
3.4????Linux內(nèi)核開發(fā):?
內(nèi)核完全注釋,源代碼級的分析,但版本較低?
深入理解Linux內(nèi)核Understanding the Linux Kernel,太深了,東西太多,最后看合適?
Linux內(nèi)核設(shè)計與實(shí)現(xiàn)Linux Kernel Development,內(nèi)核整體結(jié)構(gòu)和基本理論知識?
??
??
3.5????ARM:?
ARM體系結(jié)構(gòu)與編程,杜春蕾?
ARM應(yīng)用系統(tǒng)開發(fā)詳解?
??
4????相關(guān)Linux網(wǎng)站?
4.1????各種Linux論壇?
http://www.linuxforum.net/forum/ubbthreads.php?
http://www.linuxsir.org/bbs/?
http://bbs.chinaunix.net/?
http://www.linuxeden.com/forum/?
http://www.linuxfans.org/bbs/index.php?
??
4.2????開源網(wǎng)站?
http://sourceforge.net/?
http://www.denx.de?
http://www.pudn.com/?
http://download.chinaunix.net/?
??
4.3????內(nèi)核源代碼學(xué)習(xí)下載?
http://lxr.linux.no/linux+v2.6.19/?
http://www.kernel.org/pub/linux/kernel/
                        
                        
                        【關(guān)鍵詞】嵌入式,ARM,Linux,處理器,總線接口,操作系統(tǒng),驅(qū)動開發(fā)?
??
??
1????軟硬件的基本技能?
??
關(guān)于ARM+linux,涉及軟硬件兩塊,要求通吃,這種人才比較適合成長為嵌入式系統(tǒng)架構(gòu)師???
??
1.1????硬件包括處理器的體系結(jié)構(gòu)及硬件總線接口兩部分?
??
處理器的體系結(jié)構(gòu)?
需要對微機(jī)原理、單片機(jī)、處理器等有所了解,基本上搞明白一種處理器如ARM、MIPS、PPC、DSP,學(xué)習(xí)其他的就很快了???
??
硬件總線接口?
最底層的,驅(qū)動開發(fā)是最常見的工作了???
這需要對各種硬件總線接口等有所了解,如IIS、IIC、UART、SPI、CAN、MDIO、USB、PCI、PCMCIA、SDRAM、FLASH及EEPROM等,設(shè)備千差萬別,但基本的連接都是通過這些接口進(jìn)行的,搞明白了接口剩下的就是具體芯片的事了???
??
1.2????軟件主要包括開發(fā)語言及操作系統(tǒng)開發(fā)?
??
開發(fā)語言?
嵌入式軟開以C語言開發(fā)為主,要求精通指針、結(jié)構(gòu)指針、指針函數(shù)及所有的數(shù)據(jù)類型轉(zhuǎn)換,對const、static、volatile、packed、aligned等關(guān)鍵字有深入的認(rèn)識??
??
操作系統(tǒng)開發(fā)?
如果想搞嵌入式軟件開發(fā)的話,不學(xué)點(diǎn)操作系統(tǒng)方面的知識你會發(fā)現(xiàn)沒什么市場???
現(xiàn)在基本上是個平臺都想跑個操作系統(tǒng)???
控制類的uC/OS-II,eCos,這些都是小型的操作系統(tǒng),學(xué)起來簡單,但在求職中市場小???
手機(jī)類的,如Windows Mobile、Sybian、PalmOS及Andriod,搞Sybian、PalmOS的人還不多,Windows Mobile和Andriod還是挺火的,也是未來的領(lǐng)導(dǎo)者???
網(wǎng)絡(luò)通信類的,如VxWorks、Linux等大型復(fù)雜的操作系統(tǒng),也是企業(yè)要求最多的,還有不太知名的OSE,但其在基站設(shè)備中占據(jù)了50%的市場份額???
當(dāng)然還有不帶MMU的,如uClinux、Nucleus等??
個人感覺尤其是Linux是目前求職市場中最火的,主要是由于其開源的優(yōu)勢,很多單位都在往這方面投入以減少成本???
??
如果以前對操作系統(tǒng)方面了解較少的話,個人建議可以先學(xué)學(xué)uC/OS-II,簡單易上手,主要是借此學(xué)習(xí)操作系統(tǒng)的相關(guān)知識???
然后主打Linux,要結(jié)合開發(fā)板來學(xué),這樣才上手的快???
??
2????開發(fā)板?
廣州優(yōu)龍、華恒等都是比較知名的開發(fā)板廠家,配套的資料比較完善,相應(yīng)的技術(shù)支持也不錯,可以考慮?
??
3????開發(fā)流程及參考書目?
??
嵌入式開發(fā)需要遵循一個基本的流程,首先是開發(fā)環(huán)境及流程,然后是驅(qū)動開發(fā)和應(yīng)用程序開發(fā),最后就是深入內(nèi)核的海洋,學(xué)習(xí)設(shè)計理念及方法,最高境界就是就是將這些設(shè)計思路嫻熟的運(yùn)用在任意一個應(yīng)用環(huán)境中,那時候就是神了~~~?
??
3.1????嵌入式開發(fā)設(shè)計流程:?
1、ARM嵌入式Linux系統(tǒng)構(gòu)造與驅(qū)動開發(fā)范例?
2、嵌入式設(shè)計及Linux驅(qū)動開發(fā)指南?
3、嵌入式Linux應(yīng)用程序開發(fā)詳解?
都屬于Linux開發(fā)設(shè)計流程方面的入門書籍,嵌入式開發(fā)的基礎(chǔ)?
??
3.2????Linux驅(qū)動開發(fā):?
1、嵌入式系統(tǒng)接口設(shè)計與Linux驅(qū)動程序開發(fā) 北京航空航天大學(xué)出版社 劉淼 強(qiáng)烈推薦; 包括各種硬件總線接口范例,接口開發(fā)必備?
2、Linux設(shè)備驅(qū)動程序<Linux Device Drivers third edition>,Linux驅(qū)動開發(fā)必備經(jīng)典,粗讀查詢即可,當(dāng)然最基本的字符設(shè)備驅(qū)動和塊設(shè)備驅(qū)動必須熟練掌握?
??
3.3????Linux應(yīng)用程序開發(fā):?
UNIX環(huán)境高級編程?
UNIX網(wǎng)絡(luò)編程全卷?
??
3.4????Linux內(nèi)核開發(fā):?
內(nèi)核完全注釋,源代碼級的分析,但版本較低?
深入理解Linux內(nèi)核Understanding the Linux Kernel,太深了,東西太多,最后看合適?
Linux內(nèi)核設(shè)計與實(shí)現(xiàn)Linux Kernel Development,內(nèi)核整體結(jié)構(gòu)和基本理論知識?
??
??
3.5????ARM:?
ARM體系結(jié)構(gòu)與編程,杜春蕾?
ARM應(yīng)用系統(tǒng)開發(fā)詳解?
??
4????相關(guān)Linux網(wǎng)站?
4.1????各種Linux論壇?
http://www.linuxforum.net/forum/ubbthreads.php?
http://www.linuxsir.org/bbs/?
http://bbs.chinaunix.net/?
http://www.linuxeden.com/forum/?
http://www.linuxfans.org/bbs/index.php?
??
4.2????開源網(wǎng)站?
http://sourceforge.net/?
http://www.denx.de?
http://www.pudn.com/?
http://download.chinaunix.net/?
??
4.3????內(nèi)核源代碼學(xué)習(xí)下載?
http://lxr.linux.no/linux+v2.6.19/?
http://www.kernel.org/pub/linux/kernel/
總結(jié)
 
                            
                        - 上一篇: C语言中的枚举和联合体
- 下一篇: 解决Coursera视频无法观看的问题
