在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

uboot的啟動BL1和BL2兩個階段介紹

麥辣雞腿堡 ? 來源:TrustZone ? 作者:Hcoco ? 2023-12-04 17:53 ? 次閱讀

之前對這個uboot的源碼了解有些許遺忘。最近做AVB校驗,需要uboot到kernel的這個過程。這里再復習一下。

與大多數(shù)BootLoader一樣,uboot的啟動過程分為BL1和BL2兩個階段。

BL1階段通常是開發(fā)板的配置等設備初始化代碼,需要依賴依賴于SoC體系結(jié)構(gòu),通常用匯編語言來實現(xiàn);

BL2階段主要是對外部設備如網(wǎng)卡、Flash等的初始化以及uboot命令集等的自身實現(xiàn),通常用C語言來實現(xiàn)。

1、BL1階段

uboot的BL1階段代碼通常放在start.s文件中,用匯編語言實現(xiàn),其主要代碼功能如下:

? (1) 指定uboot的入口。在鏈接腳本uboot.lds中指定uboot的入口為start.S中的_start。

? (2)設置異常向量(exception vector)

? (3)關(guān)閉IRQ、FIQ,設置SVC模式

? (4)關(guān)閉L1 cache、設置L2 cache、關(guān)閉MMU

? (5)根據(jù)OM引腳確定啟動方式

? (6)在SoC內(nèi)部SRAM中設置棧

? (7)lowlevel_init(主要初始化系統(tǒng)時鐘、SDRAM初始化、串口初始化等)

? (8)設置開發(fā)板供電鎖存

? (9)設置SDRAM中的棧

? (10)將uboot從SD卡拷貝到SDRAM中

? (11)設置并開啟MMU

? (12)通過對SDRAM整體使用規(guī)劃,在SDRAM中合適的地方設置棧

? (13)清除bss段,遠跳轉(zhuǎn)到start_armboot執(zhí)行,BL1階段執(zhí)行完

2、BL2階段

start_armboot函數(shù)位于lib_arm/board.c中,是C語言開始的函數(shù),也是BL2階段代碼中C語言的 主函數(shù),同時還是整個u-boot(armboot)的主函數(shù),BL2階段的主要功能如下:

? (1)規(guī)劃uboot的內(nèi)存使用

? (2)遍歷調(diào)用函數(shù)指針數(shù)組init_sequence中的初始化函數(shù)

? (3)初始化uboot的堆管理器mem_malloc_init

? (4)初始化SMDKV210開發(fā)板的SD/MMC控制器mmc_initialize

? (5)環(huán)境變量重定位env_relocate

? (6)將環(huán)境變量中網(wǎng)卡地址賦值給全局變量的開發(fā)板變量

? (7)開發(fā)板硬件設備的初始化devices_init

? (8)跳轉(zhuǎn)表jumptable_init

? (9)控制臺初始化console_init_r

? (10)網(wǎng)卡芯片初始化eth_initialize

? (11)uboot進入主循環(huán)main_loop

這里主要對第二個階段BL2進行一個分析。

3、start_armboot函數(shù)分析

start_armboot函數(shù)的主要功能如下:

? (1)遍歷調(diào)用函數(shù)指針數(shù)組init_sequence中的初始化函數(shù)

依次遍歷調(diào)用函數(shù)指針數(shù)組init_sequence中的函數(shù),如果有函數(shù)執(zhí)行出錯,則執(zhí)行hang函數(shù),打印出”### ERROR ### Please RESET the board ###”,進入死循環(huán)。

? (2)初始化uboot的堆管理器mem_malloc_init

? (3)初始化SMDKV210的SD/MMC控制器mmc_initialize

? (4)環(huán)境變量重定位env_relocate

? (5)將環(huán)境變量中網(wǎng)卡地址賦值給全局變量的開發(fā)板變量

? (6)開發(fā)板硬件設備的初始化devices_init

? (7)跳轉(zhuǎn)表jumptable_init

? (8)控制臺初始化console_init_r

? (9)網(wǎng)卡芯片初始化eth_initialize

? (10)uboot進入主循環(huán)main_loop

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4357

    瀏覽量

    221943
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4373

    瀏覽量

    64369
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5580

    瀏覽量

    103016
  • Uboot
    +關(guān)注

    關(guān)注

    4

    文章

    128

    瀏覽量

    28943
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    tiny210上uboot啟動分析

    (0xd002_0000處,其中0xd002_0010之前的16字節(jié)儲存BL1的校驗信息和BL1尺寸)中,并對BL1進行校驗,校驗OK轉(zhuǎn)入BL1
    發(fā)表于 06-27 17:04

    【OK210試用體驗】S5PV210 IROM BL0啟動

    ,在啟動引導階段兩個作用:一是IROM運行時使用的數(shù)據(jù)變量所在的區(qū)域,二是IROM,即BL0會將外存中的BL1引導到該區(qū)域中。因為IROM
    發(fā)表于 07-23 15:35

    【OK210試用體驗】+ 《uboot啟動過程分析》

    ,其中0xd002_0010之前的16字節(jié)存儲的的BL1的校驗信息和BL1尺寸)中,并對BL1進行校驗,檢驗OK轉(zhuǎn)入BL1進行執(zhí)行;
    發(fā)表于 08-25 12:36

    【OK210試用體驗】+ 《uboot啟動過程分析》

    (DDR);BL2加載內(nèi)核,把OS在SDRAM中運行起來,最終OS是運行在SDRAM(內(nèi)存)中的。在這個過程中,u-boot需要初始化的硬件是CPU和DDR,所以,這兩個硬件必須在u-boot階段就做
    發(fā)表于 08-26 21:12

    【NanoPi M2試用體驗】+SD卡啟動BL1拷貝BL2到DDR2中運行

    裸機程序SD卡啟動BL1拷貝BL2到DDR2中運行;代碼的拷貝會用到一些指針函數(shù),第一參數(shù)為SD卡存放
    發(fā)表于 06-11 17:03

    S5PV210uboot啟動過程分析

    BL1 尺寸)中,并對 BL1 進行校驗,校驗 OK 轉(zhuǎn)入 BL1 進行執(zhí)行; BL1 繼續(xù)初始化,并將 BL2 復制到 IRAM 中并
    發(fā)表于 11-15 10:50

    自制s5pv210啟動ubootBL1代碼

    自制s5pv210啟動ubootBL1代碼
    發(fā)表于 02-10 23:21

    關(guān)于iTop4412 iROM階段啟動流程簡析

    iTop4412 irom啟動和Exynos4212 iROM Booting Guide是一樣的。iROM階段啟動流程本次介紹如何構(gòu)建Exynos4412中的
    發(fā)表于 04-21 11:45

    TF-A的不同啟動階段有哪些

    不同的啟動階段,按照鏈式結(jié)構(gòu)依次啟動,ATF 代碼啟動流程如圖所示: 當芯片復位以后首先運行 bl1 代碼,
    的頭像 發(fā)表于 09-11 16:54 ?1324次閱讀
    TF-A的不同<b class='flag-5'>啟動</b><b class='flag-5'>階段</b>有哪些

    啟動(Cold boot)流程及階段劃分

    restart--冷啟動 reset--熱啟動 ATF冷啟動實現(xiàn)分為5步驟: ? BL1 - AP Trusted ROM,一般為Boot
    的頭像 發(fā)表于 11-07 15:17 ?3539次閱讀
    冷<b class='flag-5'>啟動</b>(Cold boot)流程及<b class='flag-5'>階段</b>劃分

    code層面 ATF中bl1啟動

    系統(tǒng)上電之后首先會運行ChipRom,之后會跳轉(zhuǎn)到ATF的bl1中繼續(xù)執(zhí)行。bl1主要初始化CPU、設定異常向量、將bl2的鏡像加載到安全RAM中,然后跳轉(zhuǎn)到bl2中開始運行。
    的頭像 發(fā)表于 11-07 15:53 ?1599次閱讀
    code層面 ATF中<b class='flag-5'>bl1</b>的<b class='flag-5'>啟動</b>

    ATF中bl2啟動

    bl2_entrypoint。該函數(shù)定義在bl2/aarch64/bl2_entrypoint.S文件中。該階段的執(zhí)行流程如圖所示。 bl2
    的頭像 發(fā)表于 11-07 15:59 ?1207次閱讀
    ATF中<b class='flag-5'>bl2</b>的<b class='flag-5'>啟動</b>

    ATF中如何用函數(shù)完成bl2啟動

    bl2_main函數(shù) bl2_main函數(shù)完成了bl2階段的主要操作,包括 ? 對下一階段鏡像
    的頭像 發(fā)表于 11-07 16:04 ?1050次閱讀

    ATF中bl2bl31的跳轉(zhuǎn)介紹

    bl2bl31的跳轉(zhuǎn) 在bl2_main函數(shù)中最終會調(diào)用smc(BL1_SMC_RUN_IMAGE,(unsigned long)next_bl
    的頭像 發(fā)表于 11-07 16:09 ?1379次閱讀

    armv8 u-boot的啟動介紹

    先看arm官網(wǎng)提供的一張圖: 上圖詳細概括了arm官方推薦的armv8的啟動層次結(jié)構(gòu): 官方將啟動分為了BL1BL2BL31,
    的頭像 發(fā)表于 12-07 11:09 ?3248次閱讀
    armv8 u-boot的<b class='flag-5'>啟動</b><b class='flag-5'>介紹</b>
    主站蜘蛛池模板: 黄色网址视频在线播放 | 成人国产一区二区三区 | 婷婷开心激情网 | 一级一片免费播放 | 99久久亚洲国产高清观看 | 欧美特黄一级视频 | 四虎国产精品永久在线看 | 国产情侣自拍小视频 | 欧美一级乱理片免费观看 | 美女视频一区二区三区在线 | 欧美一级视频免费观看 | 日日操日日射 | 久久www免费人成高清 | 18女人毛片水真多免费 | 黄视频在线免费看 | 亚洲qingse| 色性综合 | 一区二区视频网 | 午夜免费网站 | 午夜日| 日韩精品一区二区三区免费视频 | 四虎影院网站 | 中文字幕精品一区 | 看亚洲a级一级毛片 | 日本特黄在线观看免费 | 国产资源站 | 欧美色欧美亚洲高清在线观看 | 天天干天天爱天天操 | 狠狠操夜夜爽 | 日本视频三区 | xxxx性欧美高清 | 99精品在免费线视频 | 国产香蕉75在线播放 | 欧美日韩一区二区三区视频 | freesexvideo性2| 天天插天天狠天天透 | www.毛片在线观看 | 男人搡女人视频免费看 | 亚洲一区二区高清 | 99精品福利 | 4338×亚洲全国最大色成网站 |