光學的部分前幾天已經(jīng)發(fā)過一個帖子。如果感興趣大家可以看看。
242dT/j ]C.x8(2!f 這個帖子想跟大家交流一下硬件和嵌入式的一些學習心得(這部分知識對于光學工程師不是必備的,
學習可對整機系統(tǒng)集成有幫助)。
U^jxKBq^ ]iu}5]?) 嵌入式學習要循序漸進,對于初學者。我走了不少彎路,最后還是從最簡單的學起。51到AVR到ARM。要從51(典型芯片89C51芯片內(nèi)有4KB EEPROM,若片內(nèi)ROM不夠用,也需擴展片外ROM。)入手,是因他很簡單,管角功能十分簡單,寄存器(中斷、計時、
電子溝)十分少,內(nèi)部總線和時鐘拓撲
結(jié)構(gòu)很清晰。可以幫助建立起初步的硬件概念,如果學習過c語言,看過51芯片手冊,恰恰身邊有一塊開發(fā)板,馬上就可以動手寫程序。認識51要最為重要的是要認識開發(fā)板上的一些外圍硬件,步進電機、移位寄存鎖存器、溫度
傳感器、蜂鳴器、EEPROM等等(了解他們最為直接的方法就是看硬件手冊),這個過程中可以學習到pwm波(驅(qū)動步進電機和蜂鳴器)、ad和da轉(zhuǎn)換(蜂鳴器)和一些接口時序(IIC、SPI等)。寫一些簡單的鍵盤掃描(去抖動)、液晶面板驅(qū)動、這種簡單的驅(qū)動程序。學習51的過程收獲很多,首先對時序有了清晰的認識,對驅(qū)動有了深刻的了解。任何系統(tǒng)(win、Linux)都要建立在可靠的、簡單、高效的底層驅(qū)動基礎上。51和外圍電路的這種交互程序就可以認為是驅(qū)動。把驅(qū)動封裝成統(tǒng)一的接口(api)交給系統(tǒng)然后由系統(tǒng)分配給每個程序進行應用,這樣可以減少沖突和代碼重復。
.KiJq:$H -<rQOPH% AVR(88芯片)的學習主要是為ARM學習做準備,AVR的管腳功能和ARM的十分像,管腳可以定義輸出還是輸入,數(shù)字還是
模擬,帶不帶上拉和下拉電阻。對AVR的學習可以止步于此。
_ 4:@+{ {z)&=v@ 終于到了ARM。主要涉及兩種芯片STM32(Cortex-M3內(nèi)核未來和頂替ARM7內(nèi)核)和s3c2440(ARM9內(nèi)核)。第一次看stm32的
芯片手冊,會讓你頭皮發(fā)麻。好幾百頁的英文實在是讓你受不了。好在現(xiàn)在
資料比豐富,可以繞過手冊看中文的
教程。遇到疑問可以看原版手冊。通讀手冊,主要了解,指令集(精簡指令集還是ARM指令集)、總線結(jié)構(gòu)(核心和外設都在總線上交互數(shù)據(jù))、片內(nèi)資源、片上外設、時鐘鎖相環(huán)(為核心和外設提供各種時鐘時序)等等。之后可以用指令集編寫一些簡單的小驅(qū)動,驅(qū)動外部器件(如led等)。由于ARM芯片結(jié)構(gòu)比較復雜內(nèi)部外設豐富,所以芯片涉及到的驅(qū)動會比較多。如果用ARM開發(fā)硬件系統(tǒng)每一次都要從新寫一遍底層驅(qū)動是很不現(xiàn)實和費時的事。所以一般的芯片公司都會針對自己的產(chǎn)品開發(fā)了相應的固件庫,stm32有一個3.5版本的固件,固件已經(jīng)集成了所有片上資源的簡單驅(qū)動。如果已經(jīng)了解了指令集和用指令集編程的方法就可以直接看固件了,固件里面的東西更通俗易懂,省去查找相應寄存器控制指令的麻煩。有了固件就可以做系統(tǒng)移植了,stm32核心頻率比較低48m所以只能跑uc-os2小系統(tǒng),可以移植玩玩。如果感興趣可以了解下uc-os2的任務調(diào)度,進程管理等功能比較有意思。
jtqH3xfy 9