ARMLinux啟動(dòng)過(guò)程分析.doc

ARMLinux啟動(dòng)過(guò)程分析.doc

ID:48830161

大?。?3.00 KB

頁(yè)數(shù):7頁(yè)

時(shí)間:2020-01-31

ARMLinux啟動(dòng)過(guò)程分析.doc_第1頁(yè)
ARMLinux啟動(dòng)過(guò)程分析.doc_第2頁(yè)
ARMLinux啟動(dòng)過(guò)程分析.doc_第3頁(yè)
ARMLinux啟動(dòng)過(guò)程分析.doc_第4頁(yè)
ARMLinux啟動(dòng)過(guò)程分析.doc_第5頁(yè)
資源描述:

《ARMLinux啟動(dòng)過(guò)程分析.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)

1、.word可編輯.ARMLinux啟動(dòng)過(guò)程分析一個(gè)嵌入式Linux系統(tǒng)從軟件角度看可以分為四個(gè)部分[1]:引導(dǎo)加載程序(bootloader),Linux內(nèi)核,文件系統(tǒng),應(yīng)用程序。其中bootloader是系統(tǒng)啟動(dòng)或復(fù)位以后執(zhí)行的第一段代碼,它主要用來(lái)初始化處理器及外設(shè),然后調(diào)用Linux內(nèi)核。Linux內(nèi)核在完成系統(tǒng)的初始化之后需要掛載某個(gè)文件系統(tǒng)做為根文件系統(tǒng)(RootFilesystem)。根文件系統(tǒng)是Linux系統(tǒng)的核心組成部分,它可以做為L(zhǎng)inux系統(tǒng)中文件和數(shù)據(jù)的存儲(chǔ)區(qū)域,通常它還包括系統(tǒng)配置文件和運(yùn)行應(yīng)用軟件所需要的庫(kù)。應(yīng)用程序可以說(shuō)是嵌入式系統(tǒng)的“靈魂”,它所實(shí)現(xiàn)的功

2、能通常就是設(shè)計(jì)該嵌入式系統(tǒng)所要達(dá)到的目標(biāo)。如果沒(méi)有應(yīng)用程序的支持,任何硬件上設(shè)計(jì)精良的嵌入式系統(tǒng)都沒(méi)有實(shí)用意義。從以上分析我們可以看出bootloader和Linux內(nèi)核在嵌入式系統(tǒng)中的關(guān)系和作用。Bootloader在運(yùn)行過(guò)程中雖然具有初始化系統(tǒng)和執(zhí)行用戶輸入的命令等作用,但它最根本的功能就是為了啟動(dòng)Linux內(nèi)核。在嵌入式系統(tǒng)開(kāi)發(fā)的過(guò)程中,很大一部分精力都是花在bootloader和Linux內(nèi)核的開(kāi)發(fā)或移植上。如果能清楚的了解bootloader執(zhí)行流程和Linux的啟動(dòng)過(guò)程,將有助于明確開(kāi)發(fā)過(guò)程中所需的工作,從而加速嵌入式系統(tǒng)的開(kāi)發(fā)過(guò)程。而這正是本文的所要研究的內(nèi)容。2.Bo

3、otloader2.1Bootloader的概念和作用Bootloader是嵌入式系統(tǒng)的引導(dǎo)加載程序,它是系統(tǒng)上電后運(yùn)行的第一段程序,其作用類似于PC機(jī)上的BIOS。在完成對(duì)系統(tǒng)的初始化任務(wù)之后,它會(huì)將非易失性存儲(chǔ)器(通常是Flash或DOC等)中的Linux內(nèi)核拷貝到RAM中去,然后跳轉(zhuǎn)到內(nèi)核的第一條指令處繼續(xù)執(zhí)行,從而啟動(dòng)Linux內(nèi)核。由此可見(jiàn),bootloader和Linux內(nèi)核有著密不可分的聯(lián)系,要想清楚的了解Linux內(nèi)核的啟動(dòng)過(guò)程,我們必須先得認(rèn)識(shí)bootloader的執(zhí)行過(guò)程,這樣才能對(duì)嵌入式系統(tǒng)的整個(gè)啟過(guò)程有清晰的掌握。2.2Bootloader的執(zhí)行過(guò)程不同的處理

4、器上電或復(fù)位后執(zhí)行的第一條指令地址并不相同,對(duì)于ARM處理器來(lái)說(shuō),該地址為0x00000000。對(duì)于一般的嵌入式系統(tǒng),通常把Flash等非易失性存儲(chǔ)器映射到這個(gè)地址處,而bootloader就位于該存儲(chǔ)器的最前端,所以系統(tǒng)上電或復(fù)位后執(zhí)行的第一段程序便是bootloader。而因?yàn)榇鎯?chǔ)bootloader的存儲(chǔ)器不同,bootloader的執(zhí)行過(guò)程也并不相同,下面將具體分析。.專業(yè).專注..word可編輯.嵌入式系統(tǒng)中廣泛采用的非易失性存儲(chǔ)器通常是Flash,而Flash又分為NorFlash和NandFlash兩種。它們之間的不同在于:NorFlash支持芯片內(nèi)執(zhí)行(XIP,eXe

5、cuteInPlace),這樣代碼可以在Flash上直接執(zhí)行而不必拷貝到RAM中去執(zhí)行。而NandFlash并不支持XIP,所以要想執(zhí)行NandFlash上的代碼,必須先將其拷貝到RAM中去,然后跳到RAM中去執(zhí)行。實(shí)際應(yīng)用中的bootloader根據(jù)所需功能的不同可以設(shè)計(jì)得很復(fù)雜,除完成基本的初始化系統(tǒng)和調(diào)用Linux內(nèi)核等基本任務(wù)外,還可以執(zhí)行很多用戶輸入的命令,比如設(shè)置Linux啟動(dòng)參數(shù),給Flash分區(qū)等;也可以設(shè)計(jì)得很簡(jiǎn)單,只完成最基本的功能。但為了能達(dá)到啟動(dòng)Linux內(nèi)核的目的,所有的bootloader都必須具備以下功能:BR>?1初始化RAM因?yàn)長(zhǎng)inux內(nèi)核一般都會(huì)

6、在RAM中運(yùn)行,所以在調(diào)用Linux內(nèi)核之前bootloader必須設(shè)置和初始化RAM,為調(diào)用Linux內(nèi)核做好準(zhǔn)備。初始化RAM的任務(wù)包括設(shè)置CPU的控制寄存器參數(shù),以便能正常使用RAM以及檢測(cè)RAM大小等。2初始化串口串口在Linux的啟動(dòng)過(guò)程中有著非常重要的作用,它是Linux內(nèi)核和用戶交互的方式之一。Linux在啟動(dòng)過(guò)程中可以將信息通過(guò)串口輸出,這樣便可清楚的了解Linux的啟動(dòng)過(guò)程。雖然它并不是bootloader必須要完成的工作,但是通過(guò)串口輸出信息是調(diào)試bootloader和Linux內(nèi)核的強(qiáng)有力的工具,所以一般的bootloader都會(huì)在執(zhí)行過(guò)程中初始化一個(gè)串口做為調(diào)

7、試端口。3檢測(cè)處理器類型Bootloader在調(diào)用Linux內(nèi)核前必須檢測(cè)系統(tǒng)的處理器類型,并將其保存到某個(gè)常量中提供給Linux內(nèi)核。Linux內(nèi)核在啟動(dòng)過(guò)程中會(huì)根據(jù)該處理器類型調(diào)用相應(yīng)的初始化程序。4設(shè)置Linux啟動(dòng)參數(shù)Bootloader在執(zhí)行過(guò)程中必須設(shè)置和初始化Linux的內(nèi)核啟動(dòng)參數(shù)。目前傳遞啟動(dòng)參數(shù)主要采用兩種方式:即通過(guò)structparam_struct和structtag(標(biāo)記列表,taggedlist)兩種結(jié)構(gòu)傳遞。structpa

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。