下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、u-boot 命令處理機(jī)制以前在 u-boot 中添加自定命令時(shí),非常驚訝在 u-boot 中添加自定義命令是如此的簡(jiǎn)單。只需要使用 u-boot 提供的一個(gè)宏定義,就可以將自己寫(xiě)好令添加到 u-boot 中。對(duì)于一些高級(jí)語(yǔ)言,比如說(shuō) java 可能通過(guò)反射的機(jī)制很容易實(shí)現(xiàn)。但是對(duì)于 C 這種語(yǔ)言,要達(dá)到如此高的靈活度,實(shí)在是無(wú)法想象。由于當(dāng)時(shí)比較忙,對(duì)于細(xì)節(jié)也沒(méi)有深入研究。趁如今比較閑,深入了解一下。如何在 u-boot 中添加命令在u-boot 的common 下,建立令文件,如cmd_test.c。do_test(cmd_tbl_t *cmdtp,只需要將自己定義的要實(shí)現(xiàn)的功能flag,
2、argc, char *argv)用改格式封裝好(至于問(wèn)什么要如此封裝,與cmd_tbl_t 的結(jié)構(gòu)有關(guān)),并使用定義 U_BOOT_CMD 宏將 do_test 方法封裝一下就好了。當(dāng)然還需要修改 common 下的 Makefile 文件,將cmd_test.c 加入編譯方可。實(shí)現(xiàn)分析先看一下 U_BOOT_CMD 的定義,在common.h 中。U_BOOT_CMD#include #include do_test(cmd_tbl_t *cmdtp,flag,argc, char *argv)prf(jusest n); return 0; U_BOOT_CMD(dfu, 1 ,1,do
3、_test, enter the dfu mode.,nenter the dfu mode . );的定義如下:其中 Struct_Secion 的定義如下:由此可見(jiàn),被 U_BOOT_CMD 定義過(guò)的結(jié)構(gòu)體,最終回被放到一個(gè)u_boot_cmd 段中??梢酝ㄟ^(guò) readef 工具進(jìn)行驗(yàn)證,會(huì)發(fā)現(xiàn)在生成的目標(biāo)文件中,確實(shí)多了一個(gè).u_boot_mcd 段。再看一下u-boot 的,其中有這么一段:將所有的.u_boot_cmd 放在了一起。而起還定義了兩可以發(fā)現(xiàn)該個(gè)常量u_boot_cmd_start 和u_boot_cmd_end 還表示所有命令的起始位置和結(jié)束位置。最后只需對(duì)該段進(jìn)行遍歷
4、就可以得到所有令了。最后生成的u-boot 可執(zhí)行文件中會(huì)包含如下的一段:.u_boot_cmd : u_boot_cmd_start = .;*(.u_boot_cmd)u_boot_cmd_end = .;uboot_end_data = .;#define Struct_Sectionattribute (unused,section (.u_boot_cmd)#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) cmd_tbl_t u_boot_cmd_Struct_Section = , maxargs, rep, cmd, usag
5、e, help_ _ U_B O O T_CM D _ST A R T_ _ U_B O O T_CM D _ST A R T獲取所有 U_BOOT_CMD令如下:cmd_tbl_t *find_cmd (const char *cmd)len = & u_boot_cmd_end - & u_boot_cmd_start; return find_cmd_tbl(cmd, & u_boot_cmd_start, len);cmd_tbl_t *find_cmd_tbl (const char *cmd, cmd_tbl_t *table,table_len)cmd_tbl_t *cmdtp_temp = table; /*Init value */fo
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版土特產(chǎn)產(chǎn)業(yè)扶貧合作開(kāi)發(fā)合同3篇
- 2025年度互聯(lián)網(wǎng)金融服務(wù)合作協(xié)議7篇
- 2025年廠房建筑安全質(zhì)量監(jiān)管承包合同4篇
- 二零二四年度影視機(jī)構(gòu)錄像內(nèi)容保密協(xié)議3篇
- 2025年度跨境電子商務(wù)平臺(tái)合作合同參考范本3篇
- 2025年度茶餐廳茶葉及茶葉原料供應(yīng)協(xié)議3篇
- 森林草莓SMR基因家族調(diào)控果實(shí)成熟與抗灰霉病的功能初探
- 二零二五年度跨境電子商務(wù)平臺(tái)合作框架協(xié)議4篇
- 二零二五版美術(shù)館東館館舍租賃藝術(shù)展覽技術(shù)支持合同4篇
- 2025年度機(jī)場(chǎng)接送車(chē)駕駛員聘用及服務(wù)標(biāo)準(zhǔn)合同4篇
- 定額〔2025〕1號(hào)文-關(guān)于發(fā)布2018版電力建設(shè)工程概預(yù)算定額2024年度價(jià)格水平調(diào)整的通知
- 2024年城市軌道交通設(shè)備維保及安全檢查合同3篇
- 【教案】+同一直線上二力的合成(教學(xué)設(shè)計(jì))(人教版2024)八年級(jí)物理下冊(cè)
- 湖北省武漢市青山區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末質(zhì)量檢測(cè)數(shù)學(xué)試卷(含解析)
- 單位往個(gè)人轉(zhuǎn)賬的合同(2篇)
- 科研倫理審查與違規(guī)處理考核試卷
- GB/T 44101-2024中國(guó)式摔跤課程學(xué)生運(yùn)動(dòng)能力測(cè)評(píng)規(guī)范
- 高危妊娠的評(píng)估和護(hù)理
- 2024年山東鐵投集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 2023年高考全國(guó)甲卷數(shù)學(xué)(理)試卷【含答案】
- 數(shù)獨(dú)題目A4打印版無(wú)答案
評(píng)論
0/150
提交評(píng)論