在這個科技高度發(fā)達(dá)的今天,相信很多在校學(xué)生停留在51單片機(jī)上的種種應(yīng)用開發(fā),,做一個小玩意,,獲得個好名次,這在無形中增加了對單片機(jī)的理解和認(rèn)識,,對以后的工作奠定雄厚的基礎(chǔ):匯編語言的使用,,可以讓你在ARM Bootloader的開發(fā)上如魚得水;各種外圍器件的使用,,可以讓你在應(yīng)用開發(fā)中如沐春風(fēng),。但是,如果僅僅停留在這個階段,,或者說停留在低端單片機(jī)的開發(fā)應(yīng)用上,,拿到手的“金子”也有限,這就需要你踏入更加廣闊的電子領(lǐng)域---嵌入式開發(fā)?,F(xiàn)在最流行的是“ARM+Linux”構(gòu)架,,如果在這條路上你走的比較遠(yuǎn),那么,,這對你的生活質(zhì)量的提高也大有幫助,。 由于“ARM Linux”構(gòu)架的嵌入式開發(fā)范圍很廣,,如果想全部掌握,需要懂Linux使用,、Linux內(nèi)核,、Linux驅(qū)動、匯編語言,、C語言,、C++,、PCB制作,、硬件電路設(shè)計……,我一直以為貪多未必是好事,,所以建議進(jìn)行嵌入式ARM的開發(fā) 分為兩個方向:一,、偏向硬件,二,、偏向軟件,。 硬件首先來說下偏向硬件。在這個方面,,要從硬件設(shè)計入手,。 第一、設(shè)計最小系統(tǒng)板:由于ARM的啟動方式和單片機(jī)有很大差異,,建議搞一個Flash,SRAM或SDRAM,、CPU、JTAG,、和復(fù)位信號的小系統(tǒng)板,,留出擴(kuò)展接口。這時,,你可以參考一些成熟的設(shè)計,,來進(jìn)行設(shè)計,像論壇中STM32等等都可以,。如果使最小系統(tǒng)能夠正常運行,,你就是很厲害的,畢竟在這方面硬件設(shè)計會有一些難點,,比如內(nèi)存等,、長線等等。 第二,、 寫啟動代碼,,ARM啟動會使用Bootloader,這時可以參考一些Bootloader介紹,,自己琢磨寫出簡單的Bootloader,,完成一小任務(wù),這會使你的信心大大增強(qiáng)。在設(shè)計Bootloader時,,你的匯編功底會讓你左右逢源,。 第三、仔細(xì)研究你所用的芯片的資料,,畫外接板,,進(jìn)行功能的擴(kuò)展,將你之前的單片機(jī)資源可以搬到這里,,通過寫相關(guān)的裸板程序,,可以實現(xiàn)從單片機(jī)向嵌入式ARM方向的轉(zhuǎn)變。 第四,、多學(xué)習(xí)針對該芯片的DEMO板原理圖,。先將原理圖消化,對該芯片的設(shè)計做到心中有數(shù),,對常用設(shè)計達(dá)到隨手畫出,。 第五、學(xué)習(xí)多層板的繪制和布局,、走線等,。布線時要先布數(shù)據(jù)地址線,和需要保證的高速線;當(dāng)涉及的CPU速度達(dá)到很高或者信號的頻率很高時,, PCB板上的走線都要看成傳輸線,。傳輸線有其特征阻抗做好阻抗匹配和防干擾處理。在設(shè)計四層板時,,通常外層走信號線,,中間兩層分別為電源和地平面,這樣一方面隔離了兩個信號層,,更重要的是外層的走線與它們所靠近的平面形成稱為"微帶"(Microstrip) 的傳輸線,,它的阻抗比較固定性能得到保障。 如果板子資源比較多,,需要用6-10層板進(jìn)行繪制,,那么相應(yīng)的層有推薦設(shè)計,可以參考PCB資料四層六層板設(shè)計,。 如果你能完成以上五個基本的步驟,,那么你已經(jīng)踏入了嵌入式開發(fā)的硬件世界,以后的發(fā)展,,就考自己的修養(yǎng)了,。
軟件說完硬件,理所當(dāng)然的要說說偏向軟件方面了,。 據(jù)我所知,,偏向軟件的嵌入式開發(fā)可以分為以下三個方面:Bootloader設(shè)計,,嵌入式驅(qū)動開發(fā)和嵌入式應(yīng)用開發(fā)。如果嵌入式跑現(xiàn)在流行的安卓系統(tǒng),,也可以把安卓開發(fā)分配到嵌入式應(yīng)用開發(fā)吧,。 首先說下Bootloader開發(fā),前面說道,,嵌入式的啟動和單片機(jī)的啟動有所不同,,需要有個Bootloader引導(dǎo),在Bootloader中實現(xiàn)一些硬件的初識和引導(dǎo)嵌入式進(jìn)入Linux系統(tǒng)或者C語言Main函數(shù),,總而言之,,這個Bootloader是個很重要的內(nèi)容,如果想在這方面進(jìn)行發(fā)展,,需要有雄厚的匯編語言設(shè)計功底,,需要對ARM內(nèi)核的工作機(jī)制非常了解,,相比硬件設(shè)計來說這個有點難度,,畢竟有些玩意是需要自己慢慢琢磨的。 現(xiàn)在我們常聽說的就是嵌入式驅(qū)動開發(fā),,工資待遇也是杠杠的,!相信很多人也想從事這方面的工作或者正在向這方面前進(jìn)。那么恭喜你,,只要有足夠的毅力,,月薪幾W的工作就在你面前,但是在這之前,,需要經(jīng)歷層層的磨練:Linux內(nèi)核機(jī)制,,Shell編程、Makefile規(guī)則,,硬件數(shù)據(jù)手冊和電路連接Linux驅(qū)動工作流程,,簡單應(yīng)用程序的編寫(一次測試驅(qū)動)……不過有牛人說過,在嵌入式驅(qū)動開發(fā)的路上,,要么登上山頂,,要么滾進(jìn)深淵。據(jù)我所知,,在一家公司里,,做驅(qū)動開發(fā)的經(jīng)常是做應(yīng)用開發(fā)的1/5---1/8,足見其功能,。 對于應(yīng)用開發(fā),,相信大家都很愿意去做,只要活得驅(qū)動的接口函數(shù),,明白其中道理,,有足夠的時間編寫,、調(diào)試、完善和優(yōu)化代碼,,你就是一名優(yōu)秀的嵌入式應(yīng)用開發(fā)工程師,。不過基于Linux的圖形界面開發(fā),現(xiàn)在變得火熱:像QT編程了,、安卓開發(fā)了等待都脫離了Linux的形式,,但是,這又給碼農(nóng)們有了新的發(fā)展空間,,據(jù)我所知,,工資待遇也是很客觀的。 最后用一個圖片來總結(jié)下嵌入式開發(fā)的前世今生吧: |
|
來自: 唯時館 > 《ARM+Android》