光學(xué)的部分前幾天已經(jīng)發(fā)過一個帖子。如果感興趣大家可以看看。
hYh~[Kr^@^ >|JMvbje 這個帖子想跟大家交流一下硬件和嵌入式的一些學(xué)習(xí)心得(這部分知識對于光學(xué)工程師不是必備的,
學(xué)習(xí)可對整機系統(tǒng)集成有幫助)。
#}xPOz7: >IHf5})R 嵌入式學(xué)習(xí)要循序漸進,對于初學(xué)者。我走了不少彎路,最后還是從最簡單的學(xué)起。51到AVR到ARM。要從51(典型芯片89C51芯片內(nèi)有4KB EEPROM,若片內(nèi)ROM不夠用,也需擴展片外ROM。)入手,是因他很簡單,管角功能十分簡單,寄存器(中斷、計時、
電子溝)十分少,內(nèi)部總線和時鐘拓撲
結(jié)構(gòu)很清晰。可以幫助建立起初步的硬件概念,如果學(xué)習(xí)過c語言,看過51芯片手冊,恰恰身邊有一塊開發(fā)板,馬上就可以動手寫程序。認識51要最為重要的是要認識開發(fā)板上的一些外圍硬件,步進電機、移位寄存鎖存器、溫度
傳感器、蜂鳴器、EEPROM等等(了解他們最為直接的方法就是看硬件手冊),這個過程中可以學(xué)習(xí)到pwm波(驅(qū)動步進電機和蜂鳴器)、ad和da轉(zhuǎn)換(蜂鳴器)和一些接口時序(IIC、SPI等)。寫一些簡單的鍵盤掃描(去抖動)、液晶面板驅(qū)動、這種簡單的驅(qū)動程序。學(xué)習(xí)51的過程收獲很多,首先對時序有了清晰的認識,對驅(qū)動有了深刻的了解。任何系統(tǒng)(win、Linux)都要建立在可靠的、簡單、高效的底層驅(qū)動基礎(chǔ)上。51和外圍電路的這種交互程序就可以認為是驅(qū)動。把驅(qū)動封裝成統(tǒng)一的接口(api)交給系統(tǒng)然后由系統(tǒng)分配給每個程序進行應(yīng)用,這樣可以減少沖突和代碼重復(fù)。
a!:R_P}7 g")pvK[e AVR(88芯片)的學(xué)習(xí)主要是為ARM學(xué)習(xí)做準備,AVR的管腳功能和ARM的十分像,管腳可以定義輸出還是輸入,數(shù)字還是
模擬,帶不帶上拉和下拉電阻。對AVR的學(xué)習(xí)可以止步于此。
X($@E!| ~q{QquYV 終于到了ARM。主要涉及兩種芯片STM32(Cortex-M3內(nèi)核未來和頂替ARM7內(nèi)核)和s3c2440(ARM9內(nèi)核)。第一次看stm32的
芯片手冊,會讓你頭皮發(fā)麻。好幾百頁的英文實在是讓你受不了。好在現(xiàn)在
資料比豐富,可以繞過手冊看中文的
教程。遇到疑問可以看原版手冊。通讀手冊,主要了解,指令集(精簡指令集還是ARM指令集)、總線結(jié)構(gòu)(核心和外設(shè)都在總線上交互數(shù)據(jù))、片內(nèi)資源、片上外設(shè)、時鐘鎖相環(huán)(為核心和外設(shè)提供各種時鐘時序)等等。之后可以用指令集編寫一些簡單的小驅(qū)動,驅(qū)動外部器件(如led等)。由于ARM芯片結(jié)構(gòu)比較復(fù)雜內(nèi)部外設(shè)豐富,所以芯片涉及到的驅(qū)動會比較多。如果用ARM開發(fā)硬件系統(tǒng)每一次都要從新寫一遍底層驅(qū)動是很不現(xiàn)實和費時的事。所以一般的芯片公司都會針對自己的產(chǎn)品開發(fā)了相應(yīng)的固件庫,stm32有一個3.5版本的固件,固件已經(jīng)集成了所有片上資源的簡單驅(qū)動。如果已經(jīng)了解了指令集和用指令集編程的方法就可以直接看固件了,固件里面的東西更通俗易懂,省去查找相應(yīng)寄存器控制指令的麻煩。有了固件就可以做系統(tǒng)移植了,stm32核心頻率比較低48m所以只能跑uc-os2小系統(tǒng),可以移植玩玩。如果感興趣可以了解下uc-os2的任務(wù)調(diào)度,進程管理等功能比較有意思。
&XSe&1 Zh_P s3c2440(ARM9)學(xué)到這之后更多的是偏
軟件的東西。 s3c2440的主頻和片上外設(shè)足以應(yīng)對現(xiàn)在主流的嵌入系統(tǒng)(安卓、蘋果和Linux)更為強大的是內(nèi)置音頻視頻解碼模塊(手機硬解碼能力的核心)。針對s3c2440芯片片硬件方面的學(xué)習(xí)可以參見stm32軟件部分重要的是系統(tǒng)移植。移植Linux、移植ggc、移植驅(qū)動、移植文件系統(tǒng)、移植內(nèi)存管理、移植gui。像搭積木。至此硬件部分已經(jīng)完成,在深入研究已經(jīng)是軟將工程師的工作。
M:w]g`
葫芦岛市|
南平市|
永春县|
尼玛县|
富平县|
肥西县|
武城县|
马尔康县|
云浮市|
比如县|
平罗县|
泸溪县|
绥滨县|
都安|
和硕县|
瓮安县|
天门市|
余庆县|
封丘县|
荆州市|
论坛|
惠水县|
曲阳县|
山东|
溆浦县|
汶上县|
阿拉善左旗|
天长市|
郧西县|
南召县|
上犹县|
昆明市|
溆浦县|
昌吉市|
灵石县|
巴林左旗|
汝阳县|
惠东县|
泸水县|
罗甸县|
淮北市|