U Boot在S3C44B0上的移植方法

2021-06-16 00:36:20 字數 2325 閱讀 7517

bootloader 給嵌入式作業系統提供板上硬體資源資訊,並進一步載入、引導嵌入式作業系統。由於bootloader 的功能直接與cpu和微處理器系統相關,所以不同的cpu體系將需要不同的bootload-er。除了依賴於cpu的體系結構外,bootloader 實際上也依賴於具體的嵌入式板級裝置的配置。也就是說,對於兩塊不同的嵌入式板,即使它們使用同一種cpu 構建,要想讓執行在其中一塊上的bootloader程式也能執行在另一板子上,通常也都需要修改bootloader 的源程式。 

本文作者使用基於arm

7tdmi 核的s3c44b0微處理器構建的嵌入式開發板,附有嵌入式開發必須的一些板上硬體資源,針對性地提供了bootloader的移植方法,可以應用在基於arm7 系列處理器的嵌入式系統應用開發中。 

u-boot 執行及移植條件分析

嵌入式系統的硬體部分不可能是完全一致的,由於嵌入式系統需要硬體與軟體的配合才能正常工作,因此,需要針對硬體系統進行有關引導程式的設計。對於嵌入式系統來說,引導程式比較複雜,一般採用對基本符合硬體體系要求的現有引導程式進行修改,然後加以應用的方法設計引導程式,這就是引導程式的移植。 

在移植操作前,需要完成兩個工作,乙個是尋找乙個比較適合的引導程式,另乙個就是對所要移植的軟體進行分析,結合已有硬體系統,找出移植的條件。本文選擇u-boot 作為引導程式,移植工作就是使原有的u-boot 能夠在本文給定的硬體系統中執行。 

u-boot是德國denx小組開發的用於多種嵌入式cpu的bootloader引導程式,支援powpc、arm、mips、m68 k 等多種處理器平台,易於裁剪和除錯。u-boot 遵循gpl (通用公共許可) 公約,完全開放源**。u-boot 主要特性如表1所列。 

u-boot 執行分析

移植操作的目的,是為了在嵌入式開發板上用於引導嵌入式作業系統u clinux 及其應用。 

根據bootloader 執行的分析結果,把bootloader可移植條件分為如下兩種情況。 

(1) 硬體資源完全支援條件。在完全不改變u-boot程式源**的條件下,選用u-boot程式完全支援的嵌入式微處理器,並且選用u-boot完全支援的主機板配置資源。基本移植條件即是通過分析u-boot下的board目錄和cpu目錄,訂製開發板,使開發板的配置與之相適應,但是這種情況與實際開發不太吻合。 

(2) 硬體資源支援修改後的**。開發者已經選用某種型別的嵌入式微處理器,自行設計了嵌入式系統的開發板或者直接從廠家購買的開發系統。在這種情況下,硬體資源已經確定,只能在不改變u-boot整體結構的條件下,通過修改u-boot的相關**,匹配已有的開發板。 

在實際應用中,最常遇到的是第2種情況。這時應該保證嵌入式主機板能夠正常執行,沒有硬體故障,具備相應的儲存媒介( flash、sdram) 用來儲存和執行u-boot。由以上分析可以看出,bootloader 的移植條件包括;①相匹配的微處理器硬體結構; ②可對boot-loader 進行調整修改的開發環境。 

注意:以上兩個條件必須同時具備,才能著手進行bootloader 的移植工作。 

u-boot 移植操作

需借助flash晶元燒寫工具將編譯好的u-boot.bin 檔案燒寫進flash,檢查u-boot是否能正常工作。本文使用針對arm處理器、執行在lin2ux作業系統上的簡易偵錯程式軟體j tager移植u-boot。j tager支援本文基於arm7tdmi核的s3c44b0 處理器的除錯和對sst39vf160 flash晶元的讀寫。由於j tager是符合gpl公約、開放源**的專案軟體,使用者可以免費從網際網路獲得該軟體。 

燒寫完畢後,復位開發板,開啟超級終端可以看到u-boot的提示符。如果這時沒有按任意鍵,u-boot將自動載入作業系統核心和檔案系統。若是按下任意鍵,則u-boot停止自動載入,進入u-boot命令列,可以輸入命令進行除錯。 

結 論

本文結合分析u-boot的執行機理和移植boot-loader的必要條件,研究了u-boot在基於s3c44b0的嵌入式系統板上的移植方法及具體的軟體修改方法。本文移植情況是在硬體資源固定、不改變boot-loader 框架前提下,對與嵌入式目標板和cpu 相關的**進行修改。嵌入式開發人員應該在清楚了bootloader 工作機理、移植條件之後,針對自己的目標板進行移植工作,在遇到不同的目標板時能夠靈活的選用合適的bootloader, 根據具體情況裁剪bootloader,最大限度地發揮bootloader的功能。本文選用的bootloader u-boot目前能穩定地執行在使用的嵌入式系統板上。通過u-boot可以實現串列埠與pc通訊,檢視、修改記憶體,引導u clinux嵌入式作業系統等功能。前期的移植工作是嵌入式系統開發的必要環節,在此基礎上可以進行深入的嵌入式系統開發,希望本文能為作相關工作的開發者提供參考。 

S3C44B0的中斷模式

對於各種中斷源的響應,s3c44b0有兩種中斷模式 向量中斷模式和非向量中斷模式,這就導致在軟體處理上,可以很靈活的處理中斷請求。一般來說做如下處理 如果系統採用的rom定位在位址0x00,則中斷向量標應該包含一系列分支語句,跳轉到相應的中斷處理程式 這也是s3c44b0所支援的模式 如果rom定位...

S3C44B0的初始化程式的理解(ran

s3c44b0的初始化程式就是初始化各個關鍵的暫存器,建立中斷向量,然後轉移到主函式去執行程式。不過s3c44b0不支援位址對映,所以程式不copy到ram種執行。s3c44b0初始化對我們廣大初學者來說,比較難理解的是中斷的處理和一些少見的操作符號,s3c44b0的中斷子程式位址存放在初始化程式最...

S3C44B0的初始化程式的理解(ran

s3c44b0的初始化程式就是初始化各個關鍵的暫存器,建立中斷向量,然後轉移到主函式去執行程式。不過s3c44b0不支援位址對映,所以程式不copy到ram種執行。s3c44b0初始化對我們廣大初學者來說,比較難理解的是中斷的處理和一些少見的操作符號,s3c44b0的中斷子程式位址存放在初始化程式最...