U_BOOT_CMD 命令数据结构

U-Boot命令解析 本文主要介绍了U-Boot中命令的定义方式以及U-Boot命令行下的部分命令功能和使用示例 阅读详情

The user interface to U-Boot consists of a command line interpreter (CLI), much like a Linux shell prompt. When connected via a serial line you can interactively enter commands and see the results.

在Uboot的doc目录下的README.commands文件说明如下:
Commands are added to U-Boot by creating a new command structure.
This is done by first including command.h

Then using the U_BOOT_CMD() macro to fill in a cmd_tbl_t struct.

U_BOOT_CMD(name,maxargs,repeatable,command,"usage","help")

name: is the name of the commad. THIS IS NOT a string.
maxargs: the maximumn numbers of arguments this function takes
command: Function pointer (*cmd)(struct cmd_tbl_s *, int, int, char *[ ]);
usage: Short description. This is a string
help: long description. This is a string


**** Behind the scene ******

The structure created is named with a special prefix (__u_boot_cmd_)
and placed by the linker in a special section.

This makes it possible for the final link to extract all commands
compiled into any object code and construct a static array so the
command can be found in an array starting at __u_boot_cmd_start.

If a new board is defined do not forget to define the command section
by writing in u-boot.lds ($(TOPDIR)/board/boardname/u-boot.lds) these
3 lines:

__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;

U-boot的命令用struct cmd_tbl_t来实现。cmd_tbl_t的主要数据成分是命令名称(name)和命令处理函数(cmd),此外还包括最大参数个数(maxargs),是否可重复执行(repeatable),使用方法和帮助信息(usage,help)等。这个数据结构在文件include/command.h中定义:
#define Struct_Section __attribute__ ((unused,section (".u_boot_cmd")))
#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}

举例如下:
bootm命令定义如下:
U_BOOT_CMD(
   bootm, CFG_MAXARGS, 1, do_bootm,
   "bootm   - boot application image from memory\n",
   "[addr [arg ...]]\n    - boot application image stored in memory\n"
   "\tpassing arguments 'arg ...'; when booting a Linux kernel,\n"
   "\t'arg' can be the address of an initrd image\n"
);
用宏定义替换后就是:
cmd_tbl_t     __u_boot_cmd_bootm   __attribute__ ((unused,section (".u_boot_cmd")))=
{
bootm,
CFG_MAXARGS,
1,
do_bootm,
   "bootm   - boot application image from memory\n",
   "[addr [arg ...]]\n    - boot application image stored in memory\n"
   "\tpassing arguments 'arg ...'; when booting a Linux kernel,\n"
   "\t'arg' can be the address of an initrd image\n"
}
这样就为bootm命令定义了一个cmd_tbl_t 结构。

但__attribute__ ((unused,section (".u_boot_cmd")))又是实现什么功能呢?基于什么考虑呢?
它是用来定义用户的命令, 每当初始化这样的一条命令, 就将在.u_boot_cmd段中增加一段数据。以便于find_cmd函数查找命令。u-boot中的readme文件对这个功能是这样描述的: construct a static array so the command can be found in an array starting at __u_boot_cmd_start.

UBOOT启动第二阶段核心任务与S5PV210开发实践 嵌入式系统启动过程中,Bootloader作为硬件初始化与操作系统加载的桥梁至关重要。以广泛使用的UBOOT为例,其第二阶段启动流程涉及C运行时环境构建、硬件设备初始化和命令行系统建立等关键技术环节。在ARM架构下,内存控制器配置、时钟树初始化和环境变量处理是保证系统稳定运行的基础。针对S5PV210这类主流嵌入式处理器,开发时需要特别注意DDR2内存时序参数的适配,不同批次开发板的DRAM芯片差异可能导致启动异常。通过分析start_armboot()函数执行流程,可以掌握全局数据结构初始化、设备驱动注册 阅读详情

相关推荐

RK356x U-Boot研究所(命令篇)3.1 U-Boot命令的定义(以demo命令为例)

RK356x U-Boot研究所(命令篇)3.1 U-Boot命令的定义(以demo命令为例)

Systemcall名屋 929

嵌入式实践教程--使用U_BOOT_CMD()自定义uboot命令

首先引入command相关的头文件: #include <common.h> #include <command.h> 如果要添加自己的uboot命令必须要使用U_BOOT_CMD()这个宏。以hdmi检测功能为例: U_BOOT_CMD(hdmidet, 1, 1, do_hdmidet, "detect HDMI monitor", "" ); U_BOOT_CMD()宏定义 typedef struct cmd_tbl_s cmd_tbl_t; #define U_B

Muggle的博客 4525

U-Boot 之十 详解 MMC 子系统、命令、初始化流程

与 Linux kernel 一样,U-Boot 也是使用 MMC subsystem 统一管理 eMMC、SD 等存储设备,这些设备统称为 MMC 设备。U-Boot 提供了一系列的 MMC 命令来方便用户查看及管理 MMC 设备。

技术干货 2337

U_BOOT_CMD分析与定制

uboot

Huskar_Liu的博客 1614

u-boot中的bdinfo命令 编程

在u-boot bootloader中,bdinfo命令是一个非常有用的工具,用于显示板级信息。本文将详细介绍如何在u-boot中编程实现bdinfo命令,并提供相应的源代码。首先,我们需要在u-boot源代码中找到与bdinfo命令相关的文件。在u-boot的源代码目录中,可以找到一个名为cmd_bdinfo.c的文件,它包含了bdinfo命令的实现。要了解更多关于u-boot的命令编程和源代码结构的信息,你可以参考u-boot的官方文档或相关的开发者社区。命令注册到u-boot的命令列表中。

2301_79330511的博客 384

测试工程师玩转DeepSeek之Prompt

掌握这些提示词技巧,测试工程师可提升与DeepSeek的协作效率至少3倍。建议结合具体项目上下文进行二次优化,并建立团队内部的提示词知识共享库。✅ “为电商支付接口生成包含幂等性验证的测试用例,覆盖网络中断重试场景”❌ “帮我写测试用例”

weixin_44872675的博客 2259

《Linux Uboot 命令U_BOOT_CMD分析》

其中U_BOOT_CMD命令格式如下: U_BOOT_CMD(name,maxargs,repeatable,command,"usage","help")  各个参数的意义如下: name:命令名,非字符串,但在U_BOOT_CMD中用“#”符号转化为字符串 maxargs:命令的最大参数个数 repeatable:是否自动重复(按Enter键是否会重复执行) ...

yexiang优快云的专栏 7759

(NOI)打表骗分过样例,暴力枚举出奇迹1.8.22题解

                                                                                                                                                           48818 B题解 #include &lt;iostream&gt; u...

Owen20071026的博客 3127

uboot命令体系

uboot管理方式是:通过自定义段,实现。管理方式:数组,链表等。

小伟的博客 1039

用LangFuse+LangChain打造可观测的AI应用:从埋点到成本监控实战

本文详细介绍了如何将开源可观测性平台LangFuse深度集成到基于LangChain构建的AI应用中,特别是电商客服机器人场景。通过从基础SDK集成、提示词管理到成本监控的完整实战,帮助开发者实现对LLM应用内部工作流的清晰追踪、问题排查与费用分析,从而打造稳定、可控的生产级AI应用。

dapp9builder的博客 711

SPEI计算避坑指南:gma中Distribution和FitMethod参数怎么选?

本文深入探讨了在SPEI计算中如何科学选择gma库中的Distribution和FitMethod参数,帮助研究者避开常见陷阱。详细分析了LogLogistic、Gamma和Pearson3三种分布的适用场景,以及LMoment与MLE拟合方法的优缺点,为气象干旱研究提供实用指南。

weixin_30308101的博客 250

U_BOOT_CMD 命令数据结构

The user interface to U-Boot consists of a command line interpreter (CLI), much like a Linux shell prompt. When connected via a serial line you can interactively enter commands and see the results....

micro9981的专栏 255

【工业相机】【深度4】线扫描相机 - 选型实践

前言: 在工业相机的深度应用的前三节里面,针对工业相机的选型、参数、应用计算等做了一些说明。期中,在深度3里面,在说明工业相机在速度场景下的应用的时候,专门开了一节介绍线扫描相机行频速度的计算公式和镜头的选型的大致说明,感觉说的还是不够透彻,切应用举例也不充分,这里特别开一个章节,基于线扫描相机的特点对比面阵相机的特点进行比较详细的说明,尤其对线扫描相机的选型实践,尤其是线扫描相机的分辨率选择计算、行频选择计算进行了充分的说明和计算说明,希望能够给用到线扫描工业相机的同学给予一定的参考: 阐述: 在编

山云的专栏 2万+

学习韦东山uboot之uboot命令

uboot的命令分析 在控制台可以看出,在每一行都会有一个前缀,这个是在readline函数的参数传入宏 CFG_PROMPT,查看这个宏可以知道,100ask的uboot会用“OpenJTAG&gt;”来做前缀 读取一行之后,就运行run_command run_command里会分析输入的命令,然后利用find_cmd来查找命令,最后运行 这个命令的回调函数。 看代码时首先看数据结构,以下是命...

Inc_Embedded的博客 454

GJB 5000B二级-II实施基础

本文主要描述GJB 5000B二级II实施基础与GJB 5000A的变化情况,以及过程域各条款的实施要点

Abel的博客 2580

Codex 实战 Skills:用 Skill 自动识别并提取 PDF/图片表格数据,效率提升 10 倍

本文介绍如何构建一个多模态文件解析 Skill,用于自动识别和提取 PDF/图片中的表格数据,提升 AI 智能体处理非结构化文档的效率。文章分析了传统方法的局限性,提出分层解析架构(预处理、检测、提取推理、后处理),推荐技术栈包括 pdfplumber、OpenCV 和多模态大模型。详细说明了 Skill 的元数据定义、数据模型设计(使用 Pydantic)和核心实现流程,通过混合策略实现从复杂文档到结构化 JSON/Markdown 的转换,使 AI 代理具备"阅读"多模态文档的能力。

yueyeguzhuo的专栏 302

U-boot分析与移植(3)----U-boot stage2分析 .

. 一来到void start_armboot (void)函数,马上出现两个很重要的数据结构gd_t和bd_t 1、gd_t : global data数据结构定义,位于文件 include/asm-arm/global_data.h。其成员主要是一些全局的系统初始化参数。 typedef struct global_data { bd_t *bd; // struct b

http://lotte-bai.github.io/ 2511

手把手实现3D肺结节检测:基于Faster R-CNN的从CT处理、训练到部署的五步代码级实战与避坑指南

亲爱的同学,当你能完整实现“3D Faster R-CNN肺部结节检测系统”,你会发现医学影像AI的毕设课题充满挑战与成就感。我们围绕3D Faster R-CNN模型,从数据处理、模型搭建到实验验证,一步步带你打造一个能精准检测肺部结节的智能系统,让你的毕设既体现技术深度,又能为肺部疾病早期诊断贡献实用价值。是专为3D医学影像设计的目标检测模型,能在三维CT数据中自动定位、识别肺部结节——这一课题兼具“临床价值”和“技术挑战性”,是毕设的优质选择,能充分展现你的工程能力和科研敏感度。

LXY_LOVE36的博客 306

U-Boot启动过程完全分析

http://www.cnblogs.com/heaad/archive/2010/07/17/1779829.html  1.1       U-Boot工作过程   U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下:        (1)第一阶段的功能 Ø  硬件设备初始化 Ø  加载U-Boot第二阶段代码到RAM空间 Ø  设置好栈 Ø  跳转到第

gaoguoxin2的专栏 339

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

u-boot增加自定义命令

3.1、u-boot命令行实现简要分析1)cli_init命令行初始化cli_init定义在中:void cli_init(void)#endif#ifdefined# endif }# endif }它的调用是在文件的u-boot主循环main_loop中。我的u-boot的配置只使能了,因此其只调用了#endifreturn 0;主要完成了全局指针top_vars的初始化。2)命令的执行过程从main_loop中的。

个人学习记录 1551

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

u-boot下usb命令

u-boot下usb命令执行过程 这篇文档旨在分析u-boot下执行usb命令时整个命令的执行流程,让初学者对u-boot下usb相关知识有一定的了解。这里主要从执行的命令出发,一步一步分析代码、协议、寄存器的读写过程。 文章目录u-boot下usb命令执行过程usb组织形式总览u-boot usb命令总览从usb start开始1. 初始化全局变量`hub_dev`的数据内容2. 初始化全局变量`usb_dev`的数据内容3. 初始化底层控制器4. 为新usb设备申请资源5. 识别新设备1. 对设备进行设

weixin_38878510的博客 4680

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

U-Boot源码之命令

U-Boot支持很多命令,通过命令我们可以实现很多操作。这里介绍U-Boot命令的实现。 一、U-Boot命令的操作 1.进入命令 U-Boot 自带命令行接口,在 U-Boot 启动期间,按任意键(如空格键)可进入 U-Boot Shell 命令行,在Shell 界面可输入 U-Boot 支持的命令,使用 U-Boot 提供的各种功能: U-Boot 2009.08-dirty ( 5 月 18 2015 - 10:22:36) Freescale i.MX28 family CP...

Enjoy working的博客 718

第3章-U-boot命令行

uboot命令行

yiyu20180729的博客 487

嵌入式开发——uboot中命令体系详解

什么是uboot的命令集

weixin_42031299的博客 1790

uboot中添加命令

1、首先介绍几个结构体和宏: struct cmd_tbl_s { char *name; /* Command Name */ int maxargs; /* maximum number of arguments */ int repeatable; /* autorepeat allowed? */ /* Implementation function */...

Pompey_Wang的博客 727
上一篇: 多用户(windows)远程登录ubuntu 10.04 解决方案
下一篇: uboot移植之uboot和kernel的参数传递
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值