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

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

3天內不再提示

bootm命令的執(zhí)行流程

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

Bootm命令用來從memory啟動內核,bootm命令的執(zhí)行流程如下圖所示。

在串口終端輸入bootm命令后,執(zhí)行do_bootm函數來完成相應的功能。Do_bootm函數首先調用bootm_start函數。(如果不輸入,應該也有。)

圖片

Bootm_start函數的主要作用是獲取內核映像文件的相關信息,并保存到全局變量images中,image是struct bootm_headers結構類型,用來保存可執(zhí)行內核映像的相關信息,主要包括內核映像的加載地址、起始地址、可執(zhí)行入口地址等。

獲取內核映像的相關信息是為后面的加載內核做準備;

內核可執(zhí)行映像文件頭包含了這些信息,這是通過工具mkimage加上去的。接下來執(zhí)行bootm_load_os函數。

if (load !=image_start) {
                              memmove_wd ((void *)load,
                                      (void *)image_start, image_len, CHUNKSZ);
                          }

Image_start是不包括內核映像文件頭的內核起始位置,也就是zImage的起始位置。

內核加載完成后,下面開始執(zhí)行內核映像,這是通過調用函數do_bootm_linux來實現(xiàn)的,下面來看do_bootm_linux的執(zhí)行過程。

Do_bootm_linux首先驅動內核的入口地址,代碼如下所示。

theKernel=(void (*)(int, int, uint))images- >ep;

Images.ep為內核可執(zhí)行映像文件的入口地址及zImage的起始地址,它是從內核映像文件頭獲取的,在前面的bootm_start函數中已經為它賦值,代碼如下所示。

images.ep=image_get_ep (&images.legacy_hdr_os_copy);

如果需要,準備給內核傳遞的啟動參數,然后獲取啟動內核需要的兩個參數:machid和傳遞給內核參數的位置,這兩個參數都保存在全局數據結構體變量bd的成員變量中,如下所示。

bd- >bi_boot_params
              machid=bd- >bi_arch_number;

最后調用內核映像的第一個可執(zhí)行函數,把控制權移交給內核,代碼如下所示。

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

    關注

    3

    文章

    1372

    瀏覽量

    40293
  • Linux
    +關注

    關注

    87

    文章

    11304

    瀏覽量

    209540
  • 函數
    +關注

    關注

    3

    文章

    4331

    瀏覽量

    62631
  • Uboot
    +關注

    關注

    4

    文章

    125

    瀏覽量

    28234
收藏 人收藏

    評論

    相關推薦

    U-boot的執(zhí)行流程

    本文主要講述了U-boot的執(zhí)行流程。
    發(fā)表于 07-14 16:58 ?709次閱讀
    U-boot的<b class='flag-5'>執(zhí)行</b><b class='flag-5'>流程</b>

    Linux內核自解壓過程分析

    uboot完成系統(tǒng)引導以后,執(zhí)行環(huán)境變量bootm中的命令;即,將Linux內核調入內存中并調用do_bootm函數啟動內核,跳轉至kernel的起始位置。
    的頭像 發(fā)表于 12-08 14:00 ?930次閱讀
    Linux內核自解壓過程分析

    Uboot的命令之間有什么區(qū)別?

    宏定義的嘍。而啟動內核我看視頻里面是直接打一個boot 就OK了,而不是先執(zhí)行nandread,再執(zhí)行bootm,再執(zhí)行bootargs??那么boot這個
    發(fā)表于 07-26 05:45

    CAD中如何快速重復執(zhí)行命令?

    快速重復執(zhí)行命令主要是靠鼠標右鍵或者是鍵盤上的空格以及上下方向鍵。 輸入OP命令打開選項對話框,點用戶系統(tǒng)配置選項卡自定義右鍵單擊按鈕,默認模式下無論是否選定對象,單
    發(fā)表于 10-23 17:04 ?1632次閱讀

    mfc程序執(zhí)行流程小結,MFC程序的執(zhí)行順序

     摘要:本文章主要以MFC程序的執(zhí)行流程、執(zhí)行順序等執(zhí)行過程的剖析做出的結論,下面一起來看看原文的具體介紹。
    發(fā)表于 12-08 15:48 ?9552次閱讀
    mfc程序<b class='flag-5'>執(zhí)行</b><b class='flag-5'>流程</b>小結,MFC程序的<b class='flag-5'>執(zhí)行</b>順序

    虛擬機:Bash Shell腳本打印出執(zhí)行命令

    默認情況下,bash腳本不會打印執(zhí)行的每個命令,這個有時候不太方面。
    的頭像 發(fā)表于 06-22 14:44 ?4559次閱讀

    linux技術:WAF運行命令執(zhí)行方法

    如果命令執(zhí)行的時候遇到攔截命令關鍵詞的時候可以利用如下方法繞過: "和^是CMD命令中最常見的轉義字符,還有成對的括號并不會影響命令
    發(fā)表于 11-07 20:27 ?994次閱讀

    使用匿名管道技術獲取CMD命令執(zhí)行結果

    遠程 CMD 是指惡意程序接收到控制端發(fā)送的 CMD 指令后,在本地執(zhí)行 CMD 命令,并將執(zhí)行結果回傳至控制端。本文將演示使用匿名管道技術獲取 CMD 命令
    的頭像 發(fā)表于 04-03 18:04 ?3998次閱讀

    LabVIEW中執(zhí)行系統(tǒng)命令VI介紹

    LabVIEW自帶一個執(zhí)行系統(tǒng)命令VI(System Exec.vi),位于函數選板的“互連接口”>>“庫與可執(zhí)行程序”>>“執(zhí)行系統(tǒng)命令
    的頭像 發(fā)表于 04-25 11:47 ?9383次閱讀
    LabVIEW中<b class='flag-5'>執(zhí)行</b>系統(tǒng)<b class='flag-5'>命令</b>VI介紹

    Linux命令執(zhí)行Bypass常見姿勢介紹

    部署服務器端為Linux系統(tǒng)的http服務,留存get和post方式的一句話木馬,用于命令執(zhí)行測試。(測試思路可以對話Chatgpt)
    的頭像 發(fā)表于 05-22 16:20 ?2011次閱讀
    Linux<b class='flag-5'>命令</b><b class='flag-5'>執(zhí)行</b>Bypass常見姿勢介紹

    Linux命令執(zhí)行Bypass常見姿勢

    部署服務器端為Linux系統(tǒng)的http服務,留存get和post方式的一句話木馬,用于命令執(zhí)行測試。(測試思路可以對話Chatgpt)
    的頭像 發(fā)表于 05-22 16:21 ?825次閱讀
    Linux<b class='flag-5'>命令</b><b class='flag-5'>執(zhí)行</b>Bypass常見姿勢

    通過語音控制執(zhí)行系統(tǒng)命令

    電子發(fā)燒友網站提供《通過語音控制執(zhí)行系統(tǒng)命令.zip》資料免費下載
    發(fā)表于 06-20 09:39 ?0次下載
    通過語音控制<b class='flag-5'>執(zhí)行</b>系統(tǒng)<b class='flag-5'>命令</b>

    Uboot命令實現(xiàn)大致流程

    傳遞給內核。 傳遞相關啟動參數必須使用u-boot的bootm命令進行跳轉,但是u-boot的bootm命令只能處理uImage鏡像。 uImage相對于zImage在頭部多了64個b
    的頭像 發(fā)表于 12-04 17:09 ?432次閱讀
    Uboot<b class='flag-5'>命令</b>實現(xiàn)大致<b class='flag-5'>流程</b>圖

    uboot命令執(zhí)行過程是什么

    U-boot是通過執(zhí)行u-boot提供的命令來加載Linux內核的,其中 命令bootm的功能 即為從memory啟動Linux內核映像文件。 在講解
    的頭像 發(fā)表于 12-04 17:31 ?811次閱讀

    cmd_tbl_t結構體變量調用命令信息

    命令,海思hi3521a中默認參數是bootcmd=bootm 0x82000000 ? 相當于執(zhí)行bootm 0x82000000 命令
    的頭像 發(fā)表于 12-04 17:37 ?636次閱讀
    cmd_tbl_t結構體變量調用<b class='flag-5'>命令</b>信息