• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            BootLoader的啟動流程

            更新時(shí)間:2023-05-24 03:18:48 閱讀: 評論:0

            走向明天-達(dá)芬奇畫蛋的故事

            BootLoader的啟動流程
            2023年5月24日發(fā)(作者:稅額的計(jì)算公式)

            BootLoader的啟動流程

            標(biāo)簽(空格分隔): Linux

            BootLoader的啟動流程

            BootLoader的第?階段通常包含以下步驟(以執(zhí)?的先后順序):

            硬件設(shè)備初始化

            為加載 Boot Loader的stage2準(zhǔn)備RAM空間。

            拷貝Boot Loader的stage2到RAM空間中。

            設(shè)置好堆棧。

            跳轉(zhuǎn)到stage2 的 C ??點(diǎn)。

            BootLoader的第?階段通常包括以下步驟(以執(zhí)?的先后順序):

            初始化本地階段要使?到的硬件設(shè)備

            檢測系統(tǒng)內(nèi)存映射(memory map)

            將kernel映像和根?件系統(tǒng)映像從flash上讀到RAM空間中。

            為內(nèi)核設(shè)置啟動參數(shù)

            調(diào)?內(nèi)核

            1. Boot Loader的stage1

            1. 基本的硬件初始化

            這是Boot Loader ?開始就執(zhí)?的操作,其?的是為stage2的執(zhí)?以及隨后的kernel的執(zhí)?準(zhǔn)備好?些基本的硬件環(huán)境。它通常包括以下步驟

            (以執(zhí)?的先后順序):

            1. 屏蔽所有的中斷。為中斷提供服務(wù)器通常是OS設(shè)備驅(qū)動程序的責(zé)任,因此在Boot Loader的執(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ū)動LED,其?的是表明系統(tǒng)的狀態(tài)是OK還是Error。如果板?上沒有LED,那么

            也可以通過初始化UART向串?打印Boot Loader的Logo字符信息來完成這?點(diǎn)。

            5. 關(guān)閉CPU內(nèi)部指令/數(shù)據(jù) cache。

            2. 為加載 stage2 準(zhǔn)備 RAM 空間

            為了后?的敘述?便,這?把所安排的RAM空間范圍的??記為:stage2_size(字節(jié)),把起始地址和終?地址分別記為: stage2_start 和

            stage2_end (這兩個(gè)地址均以4字節(jié)邊界對齊)。

            因此:

            stage2_end = stage2_start + stage2_size

            另外,還必須確保所安排的地址范圍的的確確是可讀寫的RAM空間,因此,必須對你所安排的地址范圍進(jìn)?測試。

            3. 拷貝stage2到RAM中

            拷貝時(shí)要確定兩點(diǎn):

            1. stage2的可執(zhí)?映像在固態(tài)存儲設(shè)備的存放地址和終?地址。

            2. RAM空間的起始地址。

            4. 設(shè)置堆棧指針sp

            堆棧指針的設(shè)置是為了執(zhí)? C 語?代碼作為準(zhǔn)備。通常我們可以把sp的值設(shè)置為(stage2_end - 4), 也即在上?所安排的那個(gè)1MB的RAM空間

            的最頂端(堆棧向下?長)。

            此外,在設(shè)置堆棧指針 sp 之前,也可以關(guān)閉 led 燈,以提??戶我們準(zhǔn)備跳轉(zhuǎn)到stage2。經(jīng)過上述這些執(zhí)?步驟后,系統(tǒng)的物理內(nèi)存布局應(yīng)該

            如下圖。

            image_-159.6kB

            image_-159.6kB

            5. 跳轉(zhuǎn)到 stage2 的 C ??點(diǎn)

            在上述?切都就緒后,就可以跳轉(zhuǎn)到 Boot Loader 的 stage2 去執(zhí)?了。?如,在 ARM 系統(tǒng)中,這可以通過修改 PC 寄存器為合適的地址來

            實(shí)現(xiàn)。

            2. Boot Loader 的 stage2

            1. 初始化本階段要使?到的硬件設(shè)備

            這通常包括:

            1. 初始化?少?個(gè)串?,以便和終端?戶進(jìn)?I/O輸出信息

            2. 初始化計(jì)時(shí)器等。在初始化這些設(shè)備之前,也可以重新把LED燈點(diǎn)亮,以表明我們已經(jīng)進(jìn)? main() 函數(shù)執(zhí)?。設(shè)備初

            始化完成后,可以輸出?些打印信息,程序名字字符串、版本號等。

            2. 檢測系統(tǒng)的內(nèi)存映射 (memory map)

            所謂內(nèi)存映射就是指在整個(gè)4GB物理地址空間中有哪些地址范圍被分配?來尋址系統(tǒng)的RAM單元。

            ?如,在SA-1100 CPU中,從0xC000,0000開始的512地址空間被?作系統(tǒng)的RAM地址空間,?在 Samsung S3C44B0X CPU中,從

            0x0c00,0000到0x1000,0000之間的64M地址空間被?作系統(tǒng)的RAM地址空間。

            雖然 CPU 通常預(yù)留出??段?夠的地址給系統(tǒng)RAM,但是在搭建具體的嵌?式系統(tǒng)時(shí)不?定會實(shí)現(xiàn) CPU 預(yù)留的全部 RAM 地址空間。

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

            1. 規(guī)劃內(nèi)存占?的布局

            這?包括兩個(gè)??:內(nèi)核映像所占?的內(nèi)存范圍;根?件系統(tǒng)所占?的內(nèi)存范圍。在規(guī)劃內(nèi)存占?的布局時(shí),主要考

            慮基地址和映像的??兩個(gè)??。

            2. 從 Flash 上拷貝

            由于像 ARM 這樣的嵌?式CPU通常都是在統(tǒng)?的內(nèi)存地址空間中尋址Flash等固態(tài)存儲設(shè)備的,因此從Flash上讀取

            數(shù)據(jù)與從 RAM 單元中讀取數(shù)據(jù)并沒有什么不同。

            ??個(gè)簡單的循環(huán)就可以完成從Flash設(shè)備上拷貝映像的?作:

            while(count){

            *dest++ = *src++; /*都是以字節(jié)?式對齊*/

            count -= 4; /*字節(jié)數(shù)*/

            };

            4. 設(shè)置內(nèi)核的啟動參數(shù)

            應(yīng)該說,在將內(nèi)核映像和根?件系統(tǒng)映像拷貝到 RAM 空間中后,就可以準(zhǔn)備啟動 Linux 內(nèi)核了。

            但是在調(diào)?內(nèi)核之前,應(yīng)該作進(jìn)?步準(zhǔn)備?作,即:設(shè)置Linux內(nèi)核的啟動參數(shù)。

            5. 調(diào)?內(nèi)核

            Boot Loader 調(diào)? Linux 內(nèi)核的?法是直接跳轉(zhuǎn)到內(nèi)核的第?條指令處,也即直接跳轉(zhuǎn)到 MEM_START+0x8000 地址處。

            教育學(xué)專業(yè)-中華好家風(fēng)征文

            BootLoader的啟動流程

            本文發(fā)布于:2023-05-24 03:18:48,感謝您對本站的認(rèn)可!

            本文鏈接:http://www.newhan.cn/zhishi/a/168486952851870.html

            版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除。

            本文word下載地址:BootLoader的啟動流程.doc

            本文 PDF 下載地址:BootLoader的啟動流程.pdf

            標(biāo)簽:bootloader
            相關(guān)文章
            留言與評論(共有 0 條評論)
               
            驗(yàn)證碼:
            推薦文章
            排行榜
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實(shí)用文體寫作網(wǎng)旗下知識大全大全欄目是一個(gè)全百科類寶庫! 優(yōu)秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 久久综合色天天久久综合图片| 国产精品第二页在线播放| 久久久久成人精品无码中文字幕| 亚洲欧美成人一区二区在线电影| 精品不卡一区二区三区| 色偷偷女人的天堂亚洲网| 国产精品久久中文字幕| 亚洲欧美精品在线| 好男人社区资源| 99精品久久免费精品久久| 91久久性奴调教国产免费| 免费午夜无码片在线观看影院 | 香蕉eeww99国产在线观看| 国产精品99久久99久久久不卡| 久久综合老鸭窝色综合久久| 三上悠亚久久精品| 欧美综合在线观看| 亚洲乱理伦片在线观看中字| 国产91麻豆免费观看| 人妻激情一区二区三区四区| 伊人成人在线视频免费| 国产日韩欧美精品一区二区三区| 亚洲中少妇久久中文字幕| 欲乱人妻少妇邻居毛片| 日韩在线一区二区不卡视频| 国产重口老太和小伙| 国产av一区二区三区区别| 国产欧美日韩精品丝袜高跟鞋| 免费人成网上在线观看网址| 久久久久无码精品国产h动漫| 国产MD视频一区二区三区| 亚洲人成伊人成综合网中文| 深夜福利国产精品中文字幕| 91福利国产午夜亚洲精品| 国产系列丝袜熟女精品视频 | 日日噜噜夜夜狠狠久久无码区| 午夜精品久久久久久久第一页 | 亚洲第一视频区| 久久一区二区中文字幕| 国产国语毛片在线看国产| 国产精品亚欧美一区二区三区|