`
isiqi
  • 浏览: 16027148 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

U-boot项目添加命令

 
阅读更多

一、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里有了相应定义,就会把相应实现进行编译。
就可以获得相关命令的支持了。

分享到:
评论

相关推荐

    添加自己的u-boot命令

    初学者可以学习一下,很有用的资源,里面的讲解也很好,可以作为入门者来看的

    在u-boot中添加命令

    在u-boot中添加命令 添加自己的命令

    添加u-boot命令方法

    详细讲解了怎么添加自己需要的u-boot命令。 主要是要修改u-boot中的三个文件............

    给u-boot增加一条命令

    习惯上把通用命令源代码放在common 目录下,开发板专有命令的源代码则放在 board/目录下,命名方式只是习惯而已。为了方便阅读和查询习惯以“cmd_&lt;命令名&gt;.c”为文件名。

    添加U-Boot1.1.6命令的步骤分析

    U-Boot的命令为用户提供了交互功能,并且已经实现了几十个常用的命令。如果开发板需要很特殊的操作,可以添加新的U-Boot命令

    u-boot-2009.11

    8、添加支持读取SD卡中的FAT32文件系统,现在U-boot已经支持从U盘或SD卡上启动Linux 内核。 9、添加支持OpenOCD导入内存启动,其实就是在一切flash识别之前,检测自己是否在内存,如果已在内存就跳过自拷贝程序。 10...

    tiny210-u-boot-version4.0

    1. SD boot,基于linaro u-boot的SPL功能实现 2. 从SD卡的FAT分区上加载文件到SDRAM 3. 将环境变量保存至SD卡 4. 添加DM9000网卡驱动,开启网络功能(例如:tftp,nfs等) 5. 添加TAB键命令自动补全功能 6.修复...

    添加u-boot命令.zip

    添加u-boot命令.zip

    .u-boot自动更新系统

    u-boot自动更新系统:在u-boot上实现了tftpserver,然后添加update命令。 对于远程更新比较好。

    u-boot for tiny210 ver2.2

    1. SD boot,基于linaro u-boot的SPL功能实现 2. 从SD卡的FAT分区上加载文件到SDRAM 3. 将环境变量保存至SD卡 4. 添加DM9000网卡驱动,开启网络功能(例如:tftp,nfs等) 5. 添加TAB键命令自动补全功能 6.修复...

    tiny210-u-boot-version3.0

    1. SD boot,基于linaro u-boot的SPL功能实现 2. 从SD卡的FAT分区上加载文件到SDRAM 3. 将环境变量保存至SD卡 4. 添加DM9000网卡驱动,开启网络功能(例如:tftp,nfs等) 5. 添加TAB键命令自动补全功能 6.修复...

    u-boot-for-tiny210-patch-ver2.2

    1. SD boot,基于linaro u-boot的SPL功能实现 2. 从SD卡的FAT分区上加载文件到SDRAM 3. 将环境变量保存至SD卡 4. 添加DM9000网卡驱动,开启网络功能(例如:tftp,nfs等) 5. 添加TAB键命令自动补全功能 6...

    u-boot for tiny210 ver2.1

    1. SD boot,基于linaro u-boot的SPL功能实现 2. 从SD卡的FAT分区上加载文件到SDRAM 3. 将环境变量保存至SD卡 4. 添加DM9000网卡驱动,开启网络功能(例如:tftp,nfs等) 5. 添加TAB键命令自动补全功能 +6.修复bug...

    uboot代码详细分析.pdf

    u-boot中的命令实现 25 U-BOOT环境变量实现 28 1.相关文件 28 2.数据结构 28 3.ENV 的初始化 30 3.1env_init 30 3.2 env_relocate 30 3.3*env_relocate_spec 31 4. ENV 的保存 31 U-Boot环境变量 32 u-boot代码链接...

    U-Boot内核生成工具

    对于linux内核而言,直接使用make生成的是zImage格式内核,这个内核是不能通过U-boot下载引导的,U-Boot是专用格式,在zImage开头添加了一部分信息,可以使用mkimage命令转换,注意该可执行文件需要在Linux使用

Global site tag (gtag.js) - Google Analytics