STR71xF嵌入式系統設計和實(shí)踐
復位芯片采用 IMP809S,系統主時(shí)鐘為16MHz,ADC接口電路可外接模擬信號或用板上模擬電壓。
3.2 軟件設計
3.2.1 BootLoader設計
簡(jiǎn)單地說(shuō),BootLoader 就是在操作系統內核運行之前運行的一段小程序。通過(guò)這段小程序,我們可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調用操作系統內核準備好正確的環(huán)境。通常,Boot Loader 是嚴重地依賴(lài)于硬件而實(shí)現的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個(gè)通用的 Boot Loader 幾乎是不可能的。另外,由于 Boot Loader 的實(shí)現依賴(lài)于 CPU 的體系結構,因此大多數 Boot Loader 都分為 stage1 和 stage2 兩大部分。依賴(lài)于 CPU 體系結構的代碼,比如設備初始化代碼等,通常都放在 stage1 中,而且通常都用匯編語(yǔ)言來(lái)實(shí)現,以達到短小精悍的目的。而 stage2 則通常用C語(yǔ)言來(lái)實(shí)現,這樣可以實(shí)現給復雜的功能,而且代碼會(huì )具有更好的可讀性和可移植性。
Boot Loader 的 stage1 通常包括以下步驟(以執行的先后順序):
硬件設備初始化。
為加載 Boot Loader 的 stage2 準備 RAM 空間。
拷貝 Boot Loader 的 stage2 到 RAM 空間中。
設置好堆棧。
跳轉到 stage2 的 C 入口點(diǎn)。
Boot Loader 的 stage2 通常包括以下步驟(以執行的先后順序):
初始化本階段要使用到的硬件設備。
檢測系統內存映射(memory map)。
將 kernel 映像和根文件系統映像從 flash 上讀到 RAM 空間中。
為內核設置啟動(dòng)參數。
調用內核。
3.2.2 應用程序設計
本實(shí)例主要用FIQ來(lái)設計一個(gè)時(shí)鐘,實(shí)現一小時(shí)計時(shí),由于需要4個(gè)7段數碼管,考慮到I/O口的數量,所以采用動(dòng)態(tài)顯示方式。要點(diǎn)是要掌握ARM7TDMI的快速中斷原理和定時(shí)器原理,能正確地分配時(shí)鐘。程序流程圖如圖8 所示。
圖8 時(shí)鐘程序流程框圖
評論