Bootloader启动过程
1、作用
嵌入式系統的引導加載程序,系統上電后運行的第一段程序。在完成對系統的初始化任務后,它會將非易失性存儲器(通常是FLASH)中的Linux內核拷貝到RAM中,然后跳轉到內核的第一條指令處繼續執行,從而啟動Linux內核。
2、功能
實際應用中的Bootloader根據所需功能的不同可以設計的很復雜,除完成基本的初始化系統和調用Linux內核等基本任務外,還可以執行很多用戶輸入的命令,比如設置Linux啟動參數,給Flash分區等;為了能達到啟動Linux內核的目的,所有的Bootloader都具備以下功能:
(1)初始化RAM
因為Linux內核一般都會在RAM中運行,所有在調用Linux內核之前bootloader必須設置和初始化RAM,為調用Linux內核做準備。初始化RAM的任務包括設置CPU的控制寄存器參數,以便能正常使用RAM以及檢測RAM大小等。
(2)初始化串口
在執行過程中初始化一個串口做為調試端口
(3)檢測處理器類型
在調用Linux內核前必須檢測系統的處理器類型,并將其保存到某個常量中提供給Linux內核。Linux內核在啟動過程中會根據該處理器類型調用相應的初始化程序。
(4)設置Linux啟動參數
目前傳遞啟動參數主要采用兩種方式:即通過struct param_struct 和struct tag(標記列表,tagged list)兩種結構傳遞。struct param_struct是一種比較老的參數傳遞方式,在2.4版本以前的內核中使用較多,從2.4版本以后Linux內核基本上采用標記列表的方式。但為了保持和以前版本的兼容性,它仍支持struct param_struct參數傳遞方式,只不過在內核啟動過程中它將被轉換成標記列表方式。標記列表方式是比較新的參數傳遞方式,需要以ATAG_CORE開始,并以ATAG_NONE結尾。中間根據需要加入其它列表。Linux內核在啟動過程中會根據該啟動參數進行相應的初始化工作。
(5)調用Linux內核映像
Bootloader完成的最后一項工作便是調用Linux內核。在跳到Linux內核執行之前CPU的寄存器必須滿足以下條件:r0=0,r1=處理器類型,r2=標記列表在RAM中的地址。
?
轉載于:https://www.cnblogs.com/killer-xc/p/4378851.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Bootloader启动过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对每个小组的评论和建议
- 下一篇: CPC客户端离线升级失败,不能获取upd