ARM嵌入式系統啟動架構研究

朗銳智科1發表於2018-04-11

目前在嵌入式開發的過程中,開發者往往把大量精力投入到嵌入式微處理器MPU(Micro Processing Unit)與眾多外設的連線方式以及應用程式碼的開發之中,而忽視了對嵌入式系統最基本、最核心部分的研究。

啟動架構是嵌入式系統的關鍵技術。掌握啟動架構對於瞭解嵌入式系統的執行原理有著重要的意義。嵌入式系統在啟動時,引導程式碼、作業系統的執行和應用程式的載入主要有兩種架構,一種是直接從Nor Flash啟動的架構,另一種是直接從Nand Flash啟動的架構。

需要注意的是,在嵌入式系統啟動引導的過程中會有多種情況出現,如vxWorks的啟動程式碼BootRom就有壓縮和非壓縮,駐留和非駐留方式之分,而作業系統本身也多以壓縮映象方式儲存,所以啟動程式碼在執行和載入過程中需要根據不同的情況,作出相應的處理。

1從Nor Flash啟動

Nor Flash具有晶片內執行(XIP,eXecute In Place)的特點,在嵌入式系統中常做為存放啟動程式碼的首選。從Nor Flash啟動的架構又可細分為只使用Nor Flash的啟動架構和Nor Flash與Nand Flash配合使用的啟動架構。圖5 給出了這兩種啟動架構的原理框圖。

1.1單獨使用Nor Flash

在該架構中,引導程式碼、作業系統和應用程式碼共存於同一塊Nor Flash中。系統上電後,引導程式碼首先在Nor Flash中執行,然後把作業系統和應用程式碼載入到速度更高的SDRAM中執行。另一種可行的架構是,在Nor Flash中執行引導程式碼和作業系統,而只將應用程式碼載入到SDRAM中執行。

該架構充分利用了Nor Flash晶片內執行的特點,可有效提升系統效能。不足在於隨著作業系統和應用程式碼容量的增加,需要更大容量昂貴的Nor Flash來支撐。

1.2 Nor Flash和Nand Flash配合使用

Nor Flash的單獨使用對於程式碼量較大的應用程式會增加產品的成本投入,一種的改進的方式是採用Nor Flash 和Nand Flash配合使用的架構。在該架構中附加了一塊Nand Flash,Nor Flash(2M或4M)中存放啟動程式碼和作業系統(作業系統可以根據程式碼量的大小選擇存放於Nor Flash或者Nand Flash),而Nand Flash中存放應用程式碼,根據存放的應用程式碼量的大小可以對Nand Flash容量做出相應的改變。

系統上電後,引導程式碼直接在Nor Flash中執行,把Nand Flash中的作業系統和應用程式碼載入到速度更高的SDRAM中執行。也可以在Nor Flash中執行引導程式碼和作業系統,而只將Nand Flash中的應用程式碼載入到SDRAM中執行。該架構是當前嵌入式系統中運用最廣泛的啟動架構之一。

1.3從Nand Flash啟動

有些處理器如SamSung公司的arm920T系列處理器S3C2410支援從Nand Flash啟動的模式,它的工作原理是將NandFlash中儲存的前4KB程式碼裝入一個稱為Steppingstone(BootSRAM)的地址中,然後開始執行該段引導程式碼,從而完成對作業系統和應用程式的載入。該方式需要處理器內部有NAND控制器,同時還要提供一定大小額外的SRAM空間,有一定的使用侷限性,在實際開發中較少使用。


相關文章