`
isiqi
  • 浏览: 16710706 次
  • 性别: 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命令方法

    1. **添加命令函数**:在文件中实现新的命令函数。以添加“my_name”命令为例,可以加入以下代码: ```c #if (CONFIG_COMMANDS & CFG_CMD_MYNAME) int print_myname(cmd_tbl_t *cmdtp, int flag, int argc, char...

    在u-boot中添加命令

    ### 在U-Boot中添加自定义命令:Hello World 示例 #### 概述 U-Boot(Universal Boot Loader)是一款开放源代码的引导加载程序,它支持多种处理器架构和操作系统,并被广泛应用于嵌入式系统中。为了扩展U-Boot的...

    给u-boot增加一条命令

    本文将详细介绍如何为U-Boot添加一条新的命令。 首先,我们要知道U-Boot的代码结构。U-Boot的源代码通常包含多个子目录,其中通用的命令源代码被放置在`common`目录下,而特定于开发板的命令代码则被放置在`board/...

    windows下编译u-boot代码

    - 在Eclipse中创建一个新的C/C++项目,用于管理U-Boot源码。 **4. 配置U-Boot Eclipse项目** - **步骤1**:配置项目的构建系统,确保Eclipse能够识别并使用正确的编译器。 - **步骤2**:设置项目路径,指定U-Boot...

    添加u-boot命令.zip

    本资料"添加u-boot命令.zip"可能包含如何自定义和扩展`u-boot`命令的详细教程。在此,我们将深入探讨`u-boot`命令的相关知识点。 首先,`u-boot`命令是用户与`u-boot`进行交互的主要方式,它们允许开发者执行硬件...

    u-boot-2017.07移植到s5pv210教程(含对应源码)

    这些驱动可以通过修改和添加源码来实现,并重新编译U-Boot。 总结,移植U-Boot是一项系统性的工程,涉及到硬件初始化、驱动编写、配置选择等多个环节。通过本教程,读者可以了解移植的基本流程,并逐步掌握嵌入式...

    不死U-BOOT ar7240 7241通用

    对于开发者来说,不死U-BOOT提供了丰富的配置选项和源代码,可以根据具体项目需求进行定制。这包括修改硬件初始化代码、添加新的设备驱动、调整内存布局等。开发过程中,通常使用Makefile和配置脚本来编译和构建U-...

    u-boot readme文件

    U-Boot项目是一个自由软件,用户可以自由地重新分发它以及/或者修改它。该软件遵循GNU通用公共许可证(GPL)条款。许可证的目的是让用户可以在没有明确保证的情况下使用软件,甚至没有隐含的关于适销性和特定用途...

    u-boot移植资料整理

    移植`U-Boot`只是开始,为了满足项目需求,可能还需要对`U-Boot`进行性能优化,添加特定功能,以及定期更新以保持其安全性。 总结来说,`U-Boot`移植是一项涉及硬件理解、软件配置、编译和调试技能的综合性任务。...

    U-boot移植

    ### U-boot移植详解 U-boot(Universal Boot Loader)是一款开源的BootLoader程序,适用于各种嵌入式设备。本文将详细介绍如何进行U-boot移植的过程及在移植过程中可能遇到的问题及其解决方案,特别聚焦于基于`u-...

    s3c-u-boot-1.1.6.tar.gz_u-boot mini2440_u-boot-1.1.6

    在实际项目中,开发者可能需要修改u-boot以适应新的外设驱动、优化启动速度或添加自定义功能。通过分析源代码,可以学习如何扩展u-boot的功能,如增加新的串口驱动、实现网络启动等。 总结,这篇文档通过对“s3c-u-...

    s3c2410开发板u-boot移植详细配置nandflash启动

    - **解压源码**:使用命令`tar jxvf u-boot-2010.03.tar.bz2`解压缩源码。 - **进入源码目录**:使用`cd u-boot-2010.03`进入U-Boot源码目录。 接下来,创建FS2410平台信息,基于smdk2410进行修改。关键操作包括: ...

    U-boot Porting guide for arm 英文

    U-Boot项目中的目录结构如下: - **board**:包含平台和板级文件,例如Davinci、Sandpoint、CDS、Marvell等。`board`目录包含了所有特定于板卡的初始化函数,这些函数从`lib_&lt;arch&gt;/board.c`调用。 - `board/...

    u-boot1.1.6在mini2440上nor和nandflash启动

    最后,我们可以使用make命令编译u-boot,并生成Bin文件。然后,我们可以将生成的Bin文件下载到mini2440开发板的RAM中,并从RAM中直接运行u-boot。 在mini2440上使用u-boot实现nor和nandflash启动需要进行详细的分析...

    u-boot-2010.03-tekkaman-master.zip

    由于u-boot是开源项目,tekkamanninja的贡献者可能持续维护这个分支,发布更新以修复已知问题或添加新功能。用户应定期检查更新,以保持系统的最新状态。 综上所述,u-boot-2010.03-tekkaman-master是专门为...

    u-boot-xlnx-xilinx-v2016.4.zip

    同时,这个版本的U-Boot还支持命令行接口,用户可以通过这些命令进行设备控制、网络操作、文件系统管理等。 五、总结 u-boot-xlnx-xilinx-v2016.4是针对Xilinx Zynq系列SoC的定制化U-Boot版本,它在提供基本引导...

    u-boot-1.1.4

    解决方案可能是添加或修改初始化代码,确保在u-boot启动时正确设置GCS3寄存器。 - **驱动兼容性**:检查u-boot源码中的RTL8019驱动是否适用于星光44b0x平台。可能需要根据硬件手册进行适当的修改,以适应星光44b0x...

    u-boot-samsung-dev

    u-boot-samsung-dev是u-boot项目的一个分支,专为三星的硬件平台设计。这个版本包含了针对三星处理器(如ARM Cortex-A8, Cortex-A9等)的特定优化和驱动,确保在这些平台上能够高效、稳定地运行。通过下载并解压u-...

    hfrk2410开发板移植(u-boot.bin,uImage,mkimage)

    执行`mkimage`命令,指定内核文件、目标类型(`-T kernel`)、版本信息等参数,生成符合`u-boot`加载要求的`uImage`。 4. **移植过程**: 在实际操作中,你需要确保开发环境已经搭建好,包括交叉编译工具链、`u-...

Global site tag (gtag.js) - Google Analytics