U-Boot增加自定义命令

实验u-boot版本 1.1.6

1、创建源文件

在common目录下创建源文件,文件名称建议以Cmd_xxx.c(Cmd_+小写命令名称)形式命名。

2、添加头文件

#include <common.h>
#include <watchdog.h>
#include <command.h>
#include <image.h>
#include <malloc.h>
#include <zlib.h>
#include <bzlib.h>
#include <environment.h>
#include <asm/byteorder.h>
  • 注:暂未搞清楚个头文件作用,可能并不是所有头文件都需要!

3、编写命令对应的函数

不同命令,对应的函数操作不同,这里以输出hello world为例:

int do_hello (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
    int i;

    printf("Hello World!,%d\n",argc);
    for(i=0; i<argc; i++)
    {
        printf("argv[%d] = %s\n",i,argv[i]);
    }

    return 0;
}

函数名称其实是拷贝了别的命令函数名称,仅仅把名称修改为do_hello。

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

4、添加命令结构体

U_BOOT_CMD(
    hello,  CFG_MAXARGS,    1,  do_hello,
    "hello   - printf hello world  test\n",
    "[addr [arg ...]]\n    - Long help\n"
    "\tLong help, second line\n"
    "\tlong help third line\n"
);

其实也是拷贝了其他命令的结构体修改而来。
至此源文件已经创建和编写完毕,保存。

5、修改Makefile文件

修改common目录下的Makefile文件,

COBJS   = main.o ACEX1K.o altera.o bedbug.o circbuf.o \
      cmd_ace.o cmd_autoscript.o \
      cmd_bdinfo.o cmd_bedbug.o cmd_bmp.o cmd_boot.o cmd_bootm.o \
      cmd_cache.o cmd_console.o \
      cmd_date.o cmd_dcr.o cmd_diag.o cmd_display.o cmd_doc.o cmd_dtt.o \
      cmd_eeprom.o cmd_elf.o cmd_ext2.o \
      cmd_fat.o cmd_fdc.o cmd_fdos.o cmd_flash.o cmd_fpga.o \
      cmd_i2c.o cmd_ide.o cmd_immap.o cmd_itest.o cmd_jffs2.o \
      cmd_load.o cmd_log.o \
      cmd_mem.o cmd_mii.o cmd_misc.o cmd_mmc.o \
      cmd_nand.o cmd_net.o cmd_nvedit.o \
      cmd_pci.o cmd_pcmcia.o cmd_portio.o \
      cmd_reginfo.o cmd_reiser.o cmd_scsi.o cmd_spi.o cmd_universe.o \
      cmd_usb.o cmd_usbslave.o cmd_menu.o cmd_vfd.o \
      command.o console.o devices.o dlmalloc.o docecc.o \
      environment.o env_common.o \
      env_nand.o env_dataflash.o env_flash.o env_eeprom.o \
      env_nvram.o env_nowhere.o \
      exports.o \
      flash.o fpga.o ft_build.o \
      hush.o kgdb.o lcd.o lists.o lynxkdi.o \
      memsize.o miiphybb.o miiphyutil.o \
      s_record.o serial.o soft_i2c.o soft_spi.o spartan2.o spartan3.o \
      usb.o usb_kbd.o usb_storage.o \
      virtex2.o xilinx.o crc16.o xyzModem.o cmd_mac.o cmd_hello.o

末尾添加cmd_hello.o

6、编译

执行make命令,对源文件进行编译,没有错误的话,即可产生uboot.bin文件。烧录进开发板对新增的命令进行测试。

猜你喜欢

转载自blog.csdn.net/SkyBlue05/article/details/82503793