U boot 新增命令 U BOOT CMD

2021-09-30 10:22:29 字數 2000 閱讀 6611

2013-02-01 16:51:49

分類: linux

u-boot 新增命令 u_boot_cmd 

u-boot的每乙個命令都是通過u_boot_cmd巨集定義的。這個巨集在include/command.h標頭檔案中定義,每乙個命令定義乙個cmd_tbl_t結構體。

/*命令巨集u_boot_cmd*/  

#define u_boot_cmd(name,maxargs,rep,cmd,usage,help) \  

cmd_tbl_t    __u_boot_cmd_##name     struct_section =  

每乙個命令巨集u_boot_cmd用cmd_tbl_t結構體描述乙個命令

struct cmd_tbl_s ;  

引數意義是:

name     這是命令名字,不需要用雙引號括起來

maxargs     最大引數的個數

rep     命令是否可重複,就是下一次按回車時再執行

cmd     對應的函式指標

usage     字串表示的簡短說明

help     字串表示的詳細說明

在源**裡可發現命令都是在cmd_***.c裡實現的

現在我們新增乙個簡單的測試命令

1、在common目錄下新增乙個hello.c檔案

#include

#include

#ifdef config_cmd_hello   

int do_hello(cmd_tbl_t *cmdtp, int flag, int argc, char *ar**)  

u_boot_cmd(hello,config_sys_maxargs,0,do_h  

do_***函式必須定義成這樣形式:

cmd_tbl_s 結構體裡的成員  int (*cmd)(struct cmd_tbl_s *, int, int, char *);  

int do_hello(cmd_tbl_t *cmdtp, int flag, int argc, char *ar**)

在填引數個數時要注意,config_sys_maxargs是在include/configs/smdk2140.h裡定義的,預設16

2、在common/makefile中的#command新增如下內容:

cobjs-$(config_cmd_test) += cmd_hello.o

3、在include/configs/smdk2410.h(該檔名根據實際操作,要針對自己的平台檔案改,如smdk2410.h等)新增如下內容:

在#include 後新增:

#define config_cmd_hello

或者在include/config_cmd_default.**件中,新增該命令的巨集定義。 

4、編譯後下到板上

u-boot 2009.11 (12鏈?14 2011 - 00:44:00)  

dram:  64 mb  

flash: 512 kb  

nand:  nand_ecc_none selected by board driver. this is not recommended !!  

64 mib  

in:    serial  

out:   serial  

err:   serial  

net:   dm9000  

hit any key to stop autoboot:  0   

bai2011/12/13 # hello  

argc = 1  

i = 0, hello  

bai2011/12/13 # hello this is my test!  

argc = 5  

i = 0, hello  

i = 1, this  

i = 2, is  

i = 3, my  

i = 4, test!  

bai2011/12/13 #   

uboot新增命令

u boot cmd是乙個巨集定義,具體功能是定義乙個struct cmd tbl s的結構體變數,u boot cmd巨集傳遞的引數是該結構體變數的成員變數。通過u boot cmd定義的變數會通過指令碼鏈結到uboot指定的乙個section中,然後可以通過find cmd遍歷這個section...

U boot 新增命令 U BOOT CMD

u boot的每乙個命令都是通過u boot cmd巨集定義的。這個巨集在include command.h標頭檔案中定義,每乙個命令定義乙個cmd tbl t結構體。命令巨集u boot cmd define u boot cmd name,maxargs,rep,cmd,usage,help c...

U boot 新增命令 U BOOT CMD

u boot的每乙個命令都是通過u boot cmd巨集定義的。這個巨集在include command.h標頭檔案中定義,每乙個命令定義乙個cmd tbl t結構體。命令巨集u boot cmd define u boot cmd name,maxargs,rep,cmd,usage,help c...