U-boot項目添加命令

來源:互聯網
上載者:User

一、U-BOOT源碼樹結構:

board                      針對各個主板的原始碼

common                  公用部分

net                          網路相關

include/configs         針對各個主板的設定檔

二、增加命令

1.修改common/cmd_net.c

聲明一個命令:

U_BOOT_CMD(

    exit,    2,    1,    do_exit,

     "exit    - exit script/n",

    "    - exit functionality/n"

);

命令的具體實現:

int

do_exit (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])

{

    int r;

    r = 0;

    if (argc > 1)

        r = simple_strtoul(argv[1], NULL, 10);

    return -r - 2;

}

2.在對主板的標頭檔申明宏。

如:include/configs/awg2440.h增加

#define CONFIG_CMD_TESTEXPERT

然後重新make即可。

注釋:因為我沒有新加檔案,所以不用更改Makefile。更詳細的文章已經貼上來了,在下面。


詳細文章:

u-boot啟動後,進入命令模式,通過輸入uboot提供的命令來進行互動操作。一些相關命令的用法已經在前面文章介紹,這裡介紹一下uboot命令內部結構,並瞭解如何配置uboot的命令,以及可以自己添加一些命令。

如何?一個命令,看下面一個簡單的例子,就明白了。

uboot命令的資料結構定義:

struct cmd_tbl_t {

    char        *name;        /* Command Name            */

    int        maxargs;    /* maximum number of arguments    */

    int        repeatable;    /* autorepeat allowed?        */

                    /* Implementation function    */

    int        (*cmd)(struct cmd_tbl_s *, int, int, char *[]);

    char        *usage;        /* Usage message    (short)    */

    char        *help;        /* Help message    (long)    */

};

聲明命令的宏定義:

#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) /

cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage, help}



聲明一個命令:

U_BOOT_CMD(

    exit,    2,    1,    do_exit,

     "exit    - exit script/n",

    "    - exit functionality/n"

);

命令的具體實現:

int

do_exit (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])

{

    int r;

    r = 0;

    if (argc > 1)

        r = simple_strtoul(argv[1], NULL, 10);

    return -r - 2;

}

下面,我們介紹一下命令的配置方式。注意:最新的uboot命令配置方法發生變化,與以前不同。

首先,在標頭檔 smdk2410.h (該檔案前面文章有介紹) 包含了所需的命令標頭檔

#include <config_cmd_default.h>



在 config_cmd_default.h 中定義了,所需要用到的命令,如:

#define CONFIG_CMD_MEMORY    /* md mm nm mw cp cmp crc base loop mtest */

(所以,autoconf.mk裡,就會有 CONFIG_CMD_MEMORY=y )

而在common/Makefile 下,有這樣的定義:

COBJS-$(CONFIG_CMD_MEMORY) += cmd_mem.o

這樣,當config_cmd_default.h裡有了相應定義,就會把相應實現進行編譯。

就可以獲得相關命令的支援了。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.