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...