日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Bootloader启动过程

發布時間:2023/12/20 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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启动过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。