1.裸機學習什麼?
裸機主要是學習對通過arm處理器的寄存器的操作來實作其内部資源和外部裝置的控制及通信。學習裸機主要有兩個目的,第一是熟悉其硬體的資源配置,學會編寫bootloader;第二就是學習硬體驅動程式的工作原理,為核心驅動打下基礎。
2.裸機學習需要具備哪些基礎?
由于裸機程式主要是通過對核心處理器寄存器的操作來實作開發闆外部裝置、接口的功能,即主要和硬體打交道,是以首先你應該能看懂開發闆的原理圖;其次,對寄存器的操作主要有arm彙編和C語言完成,是以你應該熟悉arm的彙編指令和C語言知識;最後我們主要是從datasheet來擷取寄存器的功能,以及一些硬體功能實作的流程,是以要能看的懂晶片手冊。
我們是在linux系統下做arm的裸機程式的開發,這就需要我們能夠在linux系統下可以搭建一個交叉開發環境,能夠熟練的使用arm-linux-交叉開發工具鍊和linux的一些基本的操作指令,此外還要學會将編譯後的程式燒寫到開發闆。
3.裸機學習哪些内容?
(1)核心初始化
核心初始化主要包括設定異常向量表,設定處理器工作模式,關閉看門狗,關閉中斷,關閉mmu五部分。
(2)點亮指路燈
和學習51單片機把點亮led流水燈作為入門程式一樣,點亮led燈是對arm開發闆實作的最簡單的硬體功能,其主要是對輸入輸出引腳的配置寄存器和資料寄存器的操作;此外在裸機程式的學習中,可以把led燈可以作為一個調試工具,這也是為什麼稱其為指路燈的原因。
(3)MMU功能的實作
MMU是記憶體管理單元的簡稱(Memery Management Unit),其功能是實作虛拟位址空間到實體位址空間的轉換;其目的是充分利用記憶體空間。