在嵌入式系統的開發過程中,技術難點主要在於系統引導程式的編寫,為此本文將詳細論述在arm7基礎上開發嵌入式系統時引導程式的實現。
引導引導程式是系統加電後執行的第一段軟體**。當乙個微處理器最初啟動時,他首先執行預定位址處的指令。通常這個位置是唯讀記憶體,其中存放著系統初始化或引導程式。在pc系統中,引導引導程式由bios(其本質就是一段韌體程式)和位於硬碟mbr中的作業系統bootloader(比如,lilo和grub等)一起組成。bios進行cpu初始化、配置其他硬體,並完成硬體檢測和資源分配。然後,bios判斷出哪乙個磁碟包含有作業系統,再把硬碟mbr中的boot loader讀到系統的ram中,然後將控制權交給作業系統bootloader。bootloader的主要執行任務就是將核心映象從硬碟上讀到ram中,然後跳轉到核心的入口點去執行,也即開始啟動作業系統,並把控制權交給作業系統,再由作業系統引導其他應用程式。
在嵌入式系統中,通常並沒有像bios那樣的韌體程式(注:有的嵌入式cpu也會內嵌一段短小的啟動程式),因此整個系統的載入啟動任務就完全由bootloader來完成。比如在乙個基於arm7tdmicore的嵌入式系統中,系統在上電或復位時通常都從位址0x00000000處開始執行,而在這個位址處安排的通常就是系統的bootloader程式。
嵌入式系統的資源有限,程式通常都是固化在rom中執行。rom中程式執行前,需要對系統硬體和軟體執行環境進行初始化,這些工作由用組合語言編寫的引導程式完成。引導程式是嵌入式程式的開頭部分,應與應用程式一起固化在rom中,並首先在系統上執行。他應包含各模組中可能出現的所有段類,並合理安排他們的次序。寫好引導程式是設計好嵌入式程式的關鍵,系統引導程式所執行的操作依賴於正在開發其軟體的系統,一般流程包括:
初始化埠,
遮蔽中斷,
把程式拷貝到sram中;
完成**的重對映;
配置中斷控制代碼,
連線到c語言人口,進入應用程式主迴圈。
嵌入式系統上電,程式的執行過程
cpu匯流排介面圖 首先,程式以機器碼的形式,即二進位製碼的形式存在flash中 上電後,cpu通過控制器將待執行的程式從flash中讀入記憶體中 在記憶體中執行時,控制器將需要計算的資料存入暫存器中 運算器從暫存器中讀取資料進行運算,並將結果存入暫存器中 控制器將暫存器中的結果讀入記憶體中 由此,...
用U BOOT構建嵌入式系統的引導裝載程式
作 者 北京理工大學 曾巨集安 齊 堯 中國科技大學 焦振強 殷洪軍 引 言 本文以u boot為例,介紹了如何在arm9開發板上移植bootloader的過程。lh7a400學習板是旋極公司推出的一款高效能嵌入式開發板,其採用的處理器lh7a400是sharp公司生產的一款基於arm922t核心的...
嵌入式系統引導和啟動的流程
author kiki email yq000cn gmail.com date 2011.3.7 blog主題 這篇blog想弄清楚fpga上電配置後程式引導和啟動的整個流程是怎麼樣的,不是談論如何編寫bootloader。主題的引出 本 人建立了乙個基於microblaze的嵌入式系統 類似於如...