uboot在引導linux之前要做的事

來源:互聯網
上載者:User

 

啟動armlinux,bootloader必須提供下面幾步:
 
1.  設定並初始化ram
2.  初始化一個串口
3.  檢測處理器類型
4.  設定核心標記列表
5.  調用核心映像
 
1.       設定並初始化ram
 
bootloader要找到並初始化系統中所有的ram,核心將這些ram用於可變資料的儲存。
 
2.       初始化一個串口
 
bootloader應該在目標板上初始化並使能一個串串口。這將允許核心串口驅動自動檢測它應該用哪個串口作為核心控制台。
 
另外,bootloader也可通過標記列表傳遞相關的”console=”選項到核心來指定串口以及串口格式(奇偶位,停止位等)
 
3.       檢測處理器類型
 
bootloader應該通過某種方法檢測它所啟動並執行處理器的類型,它最終必須能夠向核心提供一個MACH_TYPE_xxx值。
 
4.設定核心標記列表
 
bootloader必須建立並初始化核心標記列表。一個有效標記列表起始於ATAG_CORE而終止於ATAG_NONE。任何數量的標記都可以加入這個列表。bootloader至少要向核心傳送系統記憶體的大小和位置以及根檔案系統的位置。
 
標記列表必須放在某個記憶體地區,這個地區既不能被核心解壓器重寫,也不能被initrd ‘boot0’ 程式重寫。推薦的位置是RAM開頭的16K。
 
5.  調用核心映像
 
有兩種調用kernel zImage的選擇。如果zImage儲存在flash中,並且被正確的串連從flash運行,那麼對於bootloader來說,直接從flash調用zImage是合法的。
 
zImage也可以放到系統RAM中任何位置並在那個位置調用。注意,核心使用這個映像下面的16K RAM儲存頁表。推薦將映像存放在RAM的32K位置處。
 
在任何情況下,下面的重要條件都必須滿足:
 
――屏蔽所有具有DMA功能的裝置,以便記憶體不會被偽造的網路包或磁碟資料誤導。這將大大節約你的調試時間
 
――cpu寄存器設定
r0 = 0,
r1 = 處理器類型號
r2 = 標記列表在系統記憶體中的物理地址
 
       uboot中調用核心時:
       theKernel (0, bd->bi_arch_number, bd->bi_boot_params);
這裡第1、2、3個參數就分別儲存在r0、r1、r2中。
 
――caches, MMUs
MMU必須關閉
指令cache可關閉或開啟
資料cache必須關閉
 
――bootloader被指望通過直接跳轉到核心映像的第一條指令來調用核心映像

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.