bootloader啓動過程分析

由於bootloader的實現依賴於CPU的體系結構,因此大多數的bootloader都分爲stage1和stage2兩大部分:依賴於CPU體系架構的代碼同城攜程短小精悍的彙編代碼,放在stage1中,爲了實現更復雜功能的代碼都使用C語言,方便移植和讀,一般放在stage2中。具體的啓動過程如下:

1、stage1中的動作:

硬件設備初始化;

爲加載stage2準備RAM空間;

複製stage2到RAM中;

初始化堆棧;

跳轉到stage2的c入口。

實現的功能:硬件初始化:屏蔽了bootloader啓動過程中的所有中端,設置cpu的速率和時鐘,完成RAM初始化,關閉CPU內部指令和數據緩存。

           複製stage2到RAM,設置堆棧指針sp,跳轉到c入口 。  


2、stage2中的動作:

初始化本階段需要使用的硬件;

檢測系統內存映射;

複製內核和根文件系統到RAM中;

設置內核啓動參數;

調用內核。

  

實現的功能:硬件初始化:初始化串口;

                           加載內核鏡像;

                           設置內核啓動參數;

                           調用內核:CPU寄存器設置:R0=0;R1=機器類型ID;R2=啓動參數標記列表在RAM的起始地址;

                                           CPU模式設置:禁止中斷(IRQ和FIQ),是CPU處於SVC模式;

                                           MMU和緩存的設置:必須關閉MMU和數據緩存,指令緩存可以自主選擇。

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章