BLOB啟動流程與Bootloader程序可移植性研究
根據Bootloader的啟動流程可知,對于不同架構的CPU,盡管處理流程相似,但是實現方法不同,主要體現在啟動的第一階段對CPU的設置上。所以這部分的硬件相關代碼基本上要重新編寫。
多數Bootloader在stage1的代碼不易由C語言實現,因而大多采用匯編語言實現。以U-boot為例,stage1代碼主要位于start.S、IO.S、Cache.S中,其中最重要的是start.S。該代碼主要針對特定處理器,對其內部各個寄存器進行設置并初始化CPU。主要完成設置處理器工作模式、初始化緩沖區、設置堆棧、設置中斷向量、內存控制器初始化[6]。
完成stage1代碼編寫之后,還需要按照相同構架下Bootloader移植的方法對相關代碼進行編寫。
2.3 提高可移植性的方案設計
目前影響Bootloader可移植性的因素主要有:CPU不同架構,同一架構不同CPU型號,目標板硬件不同結構。針對以上問題提出了幾點提高可移植性的方案設計。
(1)對于遵從GPL協議的開源Bootloader,可以根據不同架構和不同硬件定制相應的驅動文件,如各種.c和.h文件。考慮到目前嵌入式硬件種類非常多,需要大量開源軟件開發者的支持,盡管不能覆蓋所有硬件,但在一定范圍內可以大大減少嵌入式系統開發的工作量。
(2)在上一步的基礎上,采用類似Linux內核配置的方法(如make menuconfig或make xconfig),用終端式的配置菜單對具體硬件進行設置,減少移植過程中代碼級的修改。
在實驗過程中實現了BLOB在PXA255目標板及SA1110目標板的移植。此項研究已經應用在清華大學精密測試技術與儀器國家重點實驗室的嵌入式生物特征識別平臺上,可以實現BLOB、內核鏡像、文件系統鏡像的下載及內核的引導。
















評論