ARM9開發之學習過程總結
一路摸爬滾打,時至今日,與心愛的TQ2440相伴已有一年,從當初的一無所知到今天的得心應手,其間經歷的種種,實在難以言表。想起第一次在串列埠打出一個字元的時候,那種心情,簡直激動得快要爆了,這裡先將我學習ARM中的整個過程簡單總結一下,以後再詳細的針對每個知識點寫寫東西。希望對剛接觸的朋友有個提示作用,也希望高手不吝賜教,給些學習建議,歡迎拍磚^_^。需要說明的是,這僅僅說是ARM,其間涉及到別的知識也是需要很多時間去學習的,這裡我就不列舉了。
開發板的配套光碟有很多資料文件,在學習之前,大概瀏覽一下是非常不錯的,強烈建議,特別是S3C2440的技術參考手冊。
1,熟悉開發板的硬體資源(TQ2440的原理圖)
2,熟悉SRAM,SDRAM,Nor Flash,Nand Flash。
3,熟悉記憶體控制器的初始化,程式要在SDRAM中執行,首先要初始化SDRAM。
4,熟悉ARM920T的啟動方式(Nor Flash/Nand Flash)。
5,學會程式下載例程執行(TFTP方式或者USB方式)。
6,搭建開發環境(GCC交差編譯)。
7,學習ARMv4指令集,編寫簡單的彙編程式,下載執行。
8,務必非常熟悉串列埠UART的使用,後邊你自己的程式除錯都需要通過串列埠來輸出。
9,學習ARM彙編與C語言的混合程式設計,GCC內聯彙編,掌握引數傳遞方式和ARM過程呼叫標準(APCS)即可。
10,到了這一步,基本上就可以用板子上的硬體資源來練習了,LED,按鍵,IIC介面的EEPROM, LCD等(板子上的蜂鳴器,
LED,串列埠都可以用來當除錯工具,觀察它們的現象,判斷你的程式執行情況)。
11,現在要學習ARM工作模式,異常處理機制,要非常熟悉中斷處理,會編寫中斷處理程式。
12,自己可以寫一個bootloader,寫DM9000網絡卡驅動程式,實現ARP,IP,UDP,TFTP協議,從而用你自己的bootloader實現從伺服器下載資料到開發板(我已經實現了一個,大家需要的,可以留言說明,我會聯絡大家)。
13,當第12步完成後,你可以嘗試用你的bootloader從PC的TFTP伺服器下載Linux核心映象到開發板,然後啟動Linux。
14,現在可以學習uboot了,就是你的開發板一上電就執行的那個東西,主要是學習移植。
如果你把12,13步完成了或者理解了,那麼你也理解uboot了,它和你自己寫的bootloader是一樣的東西,只不過它功能更強大而已,可以做很多事情。
(但是最主要的就是,獲取Linux核心映象,初始化硬體環境,執行Linux)。
15,此刻,若你依然深愛著ARM920T,那麼你可以在上面寫一個作業系統(或者稱為排程器),使用ARM920T的MMU。再編寫或移植一套GUI,實現一個檔案系統,實現一個TCP/IP協議棧(只要你想得到的,都可以在上面實現,目前我也在做)。
雖然剛畢業幾個月,工作中也沒有接觸ARM9,但是我有時間就會堅持學習ARM9這款CPU,希望有朝一日,在接觸新的ARM處理器時,也能快速入手。