在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > BLOB啟動(dòng)流程與Bootloader程序可移植性研究

            BLOB啟動(dòng)流程與Bootloader程序可移植性研究

            作者: 時(shí)間:2011-09-02 來源:網(wǎng)絡(luò) 收藏

            在嵌入式系統(tǒng)應(yīng)用中,通過引導(dǎo)()可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖、加載內(nèi)核,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境[1]。依賴于實(shí)際的硬件和應(yīng)用環(huán)境,對(duì)于不同的硬件架構(gòu)以及相同架構(gòu)的不同電路板,都需要不同的。由于單獨(dú)開發(fā)Bootloader的工作量較大,因此開發(fā)人員一般針對(duì)固定體系構(gòu)架開發(fā)一種可性的Bootloader,使之能夠在少量修改后應(yīng)用于同一體系構(gòu)架的其他電路板。就是一種針對(duì)ARM體系定制的可性良好的嵌入式Linux引導(dǎo)。支持多種CPU,包括SA1100、SA1110、PXA255、PXA270等,用戶可以根據(jù)目標(biāo)板的特性進(jìn)行定制。它能實(shí)現(xiàn)以下功能:
              (1)引導(dǎo)嵌入式Linux,它可以把Linux、Kernel等從Flash加載到RAM中執(zhí)行;

            本文引用地址:http://www.biyoush.com/article/150266.htm

              (2)命令行下在線更新、Kernel和ramdisk;

              (3)命令行下可以直接對(duì)物理尋址空間進(jìn)行查看和修改。

              可見BLOB除了引導(dǎo)系統(tǒng)這個(gè)基本功能外,還具備板級(jí)支持包(BSP)開發(fā)的功能。

              1 分析

              系統(tǒng)的通常有兩種方式,一種是可以直接Flash ,另一種是可以將壓縮的內(nèi)存映像文件從Flash中復(fù)制、解壓到RAM,再?gòu)腞AM啟動(dòng)。系統(tǒng)上電時(shí),BLOB采用后者,啟動(dòng)過程分兩個(gè)階段進(jìn)行,其中第一階段在Flash中運(yùn)行,第二階段在RAM中運(yùn)行。圖1為BLOB啟動(dòng)圖。

              

            BLOB啟動(dòng)流程圖

              1.1 第一階段

              第一階段為從系統(tǒng)上電后在0x00000000 地址開始執(zhí)行的部分。這部分代碼運(yùn)行在Flash中,其目的是為第二階段(stage 2)的執(zhí)行以及隨后的Kernel的執(zhí)行準(zhǔn)備好基本的硬件環(huán)境[2]。

              (1)屏蔽所有的中斷

              為中斷提供服務(wù)通常是OS設(shè)備驅(qū)動(dòng)的責(zé)任,因此在Bootloader的執(zhí)行全過程中不必響應(yīng)任何中斷。中斷屏蔽可以通過寫CPU的中斷屏蔽寄存器或狀態(tài)寄存器(如ARM的CPSR寄存器)來完成。

              (2)設(shè)置CPU的速度和時(shí)鐘頻率

              (3)RAM初始化

              包括正確地設(shè)置系統(tǒng)內(nèi)存控制器的功能寄存器以及各內(nèi)存庫控制寄存器等。

              (4)LED初始化

              通過GPIO來驅(qū)動(dòng)LED,其目的是表明系統(tǒng)的狀態(tài)是否正常。如果板子上沒有LED,則可以通過初始化UART向串口打印 Bootloader的Logo字符信息來完成。

              1.2 第二階段

              第二階段是C語言執(zhí)行代碼,具體說明如下。

              (1)UART設(shè)置及初始化

              至少初始化一個(gè)串口,以便與終端用戶進(jìn)行 I/O 輸出信息,初始化計(jì)時(shí)器等。設(shè)備初始化完成后,可以輸出一些打印信息、程序名字字符串、版本號(hào)等。

              (2)設(shè)置系統(tǒng)的內(nèi)存映射

              內(nèi)存映射是指在整個(gè)物理地址空間中有哪些地址被分配用來尋址系統(tǒng)的RAM單元。具體的嵌入式系統(tǒng)往往只把CPU預(yù)留的全部RAM地址空間中的一部分映射到RAM單元上,而讓剩下的部分預(yù)留RAM地址空間處于未使用狀態(tài)。因此Bootloader的 stage 2必須在使用它之前檢測(cè)整個(gè)系統(tǒng)的內(nèi)存映射情況。在用上述算法檢測(cè)完系統(tǒng)的內(nèi)存映射情況后,BLOB將內(nèi)存映射的詳細(xì)信息打印到串口。

              (3)加載內(nèi)核映像和根文件系統(tǒng)映像

              在規(guī)劃內(nèi)存占用的布局時(shí),應(yīng)包括兩個(gè)方面:內(nèi)核映像所占用的內(nèi)存范圍;根文件系統(tǒng)所占用的內(nèi)存范圍。在規(guī)劃內(nèi)存占用布局時(shí),主要考慮基地址和映像的大小兩個(gè)方面。

              對(duì)于內(nèi)核映像,一般將其拷貝到從(MEM_START+0x8000)這個(gè)基地址開始的大約1MB大小的內(nèi)存范圍內(nèi)(嵌入式Linux的內(nèi)核一般都不超過1MB)。

              而對(duì)于根文件系統(tǒng)映像,則一般將其拷貝到 MEM_START+0x0010,0000開始的地方。如果用Ramdisk作為根文件系統(tǒng)映像,則其解壓后的大小一般是1MB。

              (4)設(shè)置Linux內(nèi)核的啟動(dòng)參數(shù)。

              (5)可以選擇直接調(diào)用內(nèi)核或者進(jìn)入下載模式。

              在下載模式下,BLOB將通過串口從主機(jī)(Host)下載文件,例如下載內(nèi)核映像和根文件系統(tǒng)映像等。


            上一頁 1 2 3 下一頁

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉