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

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

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

3天內不再提示

創建自定義的u-boot命令

電子工程師 ? 來源:嵌入式小生 ? 作者: iriczhao ? 2022-08-08 14:46 ? 次閱讀


開篇

為什么會有這篇文章,因為小生被u-boot源碼的設計所吸引了(源碼對命令的處理過程)。自定義u-boot命令屬于u-boot源碼的開發技術啦,可能u-boot官方開發人員、芯片原廠或者硬件板卡BSP開發人員會接觸到這一塊。

既然被我碰著了,那就皺眉一笑輕提筆,在此一文奉上。

對于u-boot來說,其核心功能是使用命令來執行對應的操作。在u-boot源碼/cmd目錄下則放置了關于u-boot所支持的所有命令,如下圖所示:

a6eaa4a0-16bf-11ed-ba43-dac502259ad0.png

(.o文件是編譯后生成的)

一、基礎

(1-1)命令定義

在實際開發中,我們可以創建新的命令結構,然后將命令添加到U-Boot中。步驟大致如下:首先在命令描述文件中包含command.h,然后再使用U_BOOT_CMD()U_BOOT_CMD_COMPLETE宏來填充struct cmd_tbl結構:

U_BOOT_CMD(name,maxargs,repeatable,command,"usage","help")
U_BOOT_CMD_COMPLETE(name,maxargs,repeatable,command,"usage,"help",comp)
  • name:命令名稱。注意:這不是一個字符串。
  • maxargs:此函數接受的最大參數值,包括命令本身。
  • repeatable:0 - 不允許自動重復;1 - 允許自動重復。
  • command:指向命令函數的指針。這是在u-boot命令行下發出命令時調用的函數。
  • usage:用于描述命令的提示信息。是一個字符串。
  • help:長描述。這是一個字符串。只有定義了CONFIG_SYS_LONGHELP時,長描述才可用。
  • comp:指向補全函數的指針。可能是NULL。如果在輸入命令參數以完成輸入時按下TAB鍵,則調用此函數。命令補全僅在定義了CONFIG_AUTO_COMPLETE時可用。

(1-2)命令函數

命令函數指針聲明如下:

int(*cmd)(structcmd_tbl*cmdtp,intflag,intargc,constchar*argv[]);
  • cmdtp:描述該命令的表條目。
  • flag:可以包含以下幾種選項:CMD_FLAG_REPEAT - 重復執行最后一條命令;CMD_FLAG_BOOTD - 該命令由bootd命令調用;CMD_FLAG_ENV - 該命令由run命令調用。
  • argc:包括命令在內的參數的數目。
  • argv:參數。允許的返回值為:CMD_RET_SUCCESS - 標志命令執行成功;CMD_RET_FAILURE - 命令執行失?。籆MD_RET_USAGE - 使用無效參數調用命令。這個值將顯示用法字符串。

二、創建自定義的u-boot命令

在第一小節中,已經描述了關于u-boot命令的基礎知識,本小節將來實現一個具體的u-boot命令。

這里假設這個命令命名為:showIriczhaoInfo。當我們在u-boot的命令行下輸入這個命令后,將打印出“[iriczhao]:u-boot hello world!!!”。

(2-1)命令創建過程

(1)在u-boot的/cmd目錄下創建一個文件,命名為command_test.c。

(2)添加頭文件。在command_test.c文件中添加如下的頭文件信息:

#include
#include

(3)定義showIriczhaoInfo的命令處理函數

staticintdo_showIriczhaoInfo(structcmd_tbl*cmdtp,intflag,intargc,char*constargv[])
{
printf("[iriczha]:u-boothelloworld!!!");

return0;
}

(4)使用U_BOOT_CMD關聯命令和命令處理函數

U_BOOT_CMD(showIriczhaoInfo,CONFIG_SYS_MAXARGS,0,do_showIriczhaoInfo,"do_showIriczhaoInfo","command
");

(5)將command_test.c文件添加到makefile文件中,如下圖所示:

a7144e04-16bf-11ed-ba43-dac502259ad0.png

(6)以Snadbox方式編譯u-boot源碼(注:也可以編譯其他架構下的u-boot)

(7)在宿主機終端中運行u-boot snadbox,效果如下:

a7296f8c-16bf-11ed-ba43-dac502259ad0.png

從上圖可見,當我們在u-boot的命令行上輸入showIriczhaoInfo后,按下回車鍵,輸出了[iriczhao]:u-boot hello world!!!信息,結果與預期效果一樣。

三、總結

在u-boot的命令描述文件中,是按照模塊來進行文件劃分的。例如對于ext4文件系統的命令操作就會放到ext4.c文件中,在該文件中放置操作ext4的所有命令。在分析u-boot的命令源碼時候,可根據該種思路來尋找具體的命令處理過程。

本文描述了u-boot命令行的定義過程,描述如何實現一個自定義命令并將其添加到u-boot中。

在u-boot源碼中,其命令與命令處理函數的綁定過程是一個非常精彩的技術點,先留著點,下回分析啦!

審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • u-boot
    +關注

    關注

    0

    文章

    121

    瀏覽量

    38228
  • 命令
    +關注

    關注

    5

    文章

    684

    瀏覽量

    22027

原文標題:自定義u-boot命令,有意思!

文章出處:【微信號:嵌入式小生,微信公眾號:嵌入式小生】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    u-boot命令之EMMC和SD卡操作命令詳解

    今天給大家詳細的介紹一下u-boot命令之EMMC和SD卡操作的mmc命令使用。希望這篇文章對大家有所幫助。
    發表于 07-12 15:19 ?4256次閱讀

    U-boot的基本介紹

    從本文開始,將陸續推送“手把手教你移植U-boot”系列文章,目標是由淺入深地講解U-boot的工作流程、原理、配置方法和移植方法,手把手教你完成U-boot的移植工作,默認硬件開發平臺為ARM,操作系統為Linux。
    發表于 07-14 16:52 ?2906次閱讀
    <b class='flag-5'>U-boot</b>的基本介紹

    飛凌全志T527開發板U-Boot添加自定義菜單

    , -1, 0); } #endif /* CONFIG_MENUKEY */ } 四、U-Boot添加自定義命令 難道通過 run_command() 執行menu命令后,菜單就
    發表于 07-15 09:42

    【OK210試用體驗】u-boot篇 -- u-boot初體驗(續)

    u-boot版本切記是要相對較新的,早時候的u-boot是不支持S5PV210相關型號的,當然可以體驗一下基于其他型號CPU的u-boot編譯。 將下載好后的u-boot放到喜好的
    發表于 08-22 01:44

    【OK210試用體驗】u-boot篇 -- 自定義單板

    ,還是有些差距,所以為了自定義自己的單板,就來學習一下如何定制。創建自己的板子信息 在u-boot的頂層README中,有講到如何定制單板。 1. 首先,在u-boot頂層目錄下的b
    發表于 08-25 19:54

    具有自定義phy的自定義板的u-boot錯誤怎么解決?

    嗨,我使用的是基于 LS1046ARDB 的定制板,在我的自定義板 iam 使用不同的 phy (Marvell 88e1512),現在當我構建和創建固件映像時,我在 u-boot 日志中收到以下
    發表于 03-29 07:25

    Porting U-Boot to the Control

    In this paper, the way of porting U-Boot to Control Computer Based MPC8349 will beintroduced
    發表于 01-25 15:45 ?13次下載

    u-boot簡介

    U-Boot,全稱 Universal Boot Loader,是遵循GPL條款的開放源碼項目。U-Boot的作用是系統引導。U-Boot從FADSROM、8xxROM、PPCBOOT
    發表于 10-14 11:17 ?3563次閱讀

    U-Boot命令介紹

    U-Boot命令介紹 Printenv 打印環境變量。 Uboot》 printenv baudrate=115200 ipaddr=192.168.1.1 ethaddr=12:34:56:78
    發表于 11-07 15:44 ?0次下載

    詳解U-Boot引導內核分析

    bootm命令是用來引導經過U-Boot的工具mkimage打包后的kernel image的。U-Boot源代碼的tools/目錄下有mkimage工具,這個工具可以用來制作不壓縮或者壓縮的多種可啟動映象文件。
    的頭像 發表于 04-13 15:22 ?5263次閱讀
    詳解<b class='flag-5'>U-Boot</b>引導內核分析

    u-boot常用的命令合集

    u-boot常用的命令合集
    發表于 02-11 09:50 ?2次下載

    uboot自定義命令

    。 U-Boot命令眾多,通過uboot命令可完成系統環境變量設置。U-Boot本質就是一份裸機程序,這樣可以在U-Boot
    的頭像 發表于 09-17 09:59 ?1257次閱讀

    Linux U-Boot開發指南

    介紹 U-Boot 的編譯打包、基本配置、常用命令的使用、基本調試方法等, 為 U-BOOT 的移植及應用開發提供了基礎。
    的頭像 發表于 03-06 10:28 ?1323次閱讀
    Linux <b class='flag-5'>U-Boot</b>開發指南

    教程 2:添加特征-自定義配置文件創建

    教程 2:添加特征 - 自定義配置文件創建
    發表于 07-06 18:50 ?0次下載
    教程 2:添加特征-<b class='flag-5'>自定義</b>配置文件<b class='flag-5'>創建</b>

    u-boot armv8鏈接腳本

    /u-boot-spl.lds進行鏈接,因為每個board的情況可能不同,所以u-boot可以通過Kconfig來自定義u-boot-spl.lds和
    的頭像 發表于 12-07 11:19 ?683次閱讀
    主站蜘蛛池模板: 波多野结衣在线网址| 99久精品| 天天搞天天搞| 苍井优一级毛片免费观看| 午夜在线视频国产| 五月丁香| 日本免费一区视频| 99久久精品费精品国产一区二区| 色妇网| 成人看的一级毛片| 把小嫩嫩曰出白浆| 亚洲欧美日韩在线精品2021| 久久精品女人天堂| 久久是精品| 在线欧美视频免费观看国产| 恐怖片大全恐怖片免费观看好看的恐怖片 | 日本a级精品一区二区三区| 色婷婷在线视频| 伊人干| 日本一级高清不卡视频在线 | 伊人成人在线| 狠狠操影院| 999久久久国产精品| 婷婷色综合网| 欧美网站在线播放| 国产网红主播chinese| 天天干夜夜骑| 精品久久久久国产免费| 久久夜色精品国产飘飘| 午夜性a一级毛片| 欲色啪| 三级毛片免费| 日本黄色小说视频| 伊人久久大香线焦在观看| 国产精品天天爽夜夜欢张柏芝| 人人艹在线视频| 伊人精品在线观看| aaa免费视频| 欧美卡一卡二卡新区网站| 黄视频在线播放| 日本人xxxxxxxxxⅹ69|