uboot中添加自己的命令【转】
本文转载自:http://blog.csdn.net/huanghai381/article/details/51206646
每个命令都是通过U_BOOT_CMD宏来定义的。这个宏定义了一个相关的结构体,文件是uboot/include/command.h,结构体为cmd_tbl_s
具体的命令定义为:
- #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(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
每一个 U-Boot 命令有一个结构体来描述。结构体包含的成员变量:命令名称、最大参数个数、重复数、命令执行函数、用法、帮助。
而相关命令的具体执行在uboot/common/cmd_xxxx.c文件中实现的。
接着,以我自己添加的menu命令为例子,讲述添加命令的过程。
1、在对应的开发板配置文件中,添加相应命令的宏定义。如:在uboot/include/configs/mx6q_sabresd.h文件中,添加#define CONFIG_CMD_MENU
2、在uboot/common/目录下,建立相应的命令执行文件,如cmd_menu.c,注意命名的规范,必须是cmd_xxx.c才行。
里面的内容也是又格式要求的,如函数的格式,必须指定参数的;还有相应结尾部分的U_BOOT_CMD定义部分,使不能缺省的。如果命令不需要跟参数,则把maxargs设置为1 即可了。
在U_BOOT_CMD中指明的命令执行函数,在该函数中,就是我们要设计的命令操作内容。也就是说,这部分完成的我们定制的命令的功能的。还有,要在uboot/comman/Makefile文件中,加入生成相应的.o文件才可以的。
3、重新编译uboot文件,会在uboot/common/中,生成相应的.o文件。将生成的uboot下载到开发板后,通过终端可以看到我们加入的命令。在终端中输入问号或者help命令即可。执行该命令,只学要输入命令的名字,在回车就可以运行了。
另外,uboot的启动设置文件是uboot/common/main.c,里面的main_loop函数就是uboot启动打印的地方。
如果想要实现uboot启动时候按任意键进入我们自己定义的命令,可以在这个if (bootdelay >= 0 && s && !abortboot (bootdelay))条件判断
后面(看清,是后面,不是里面)添加运行自定义命令的指令,如run_command("menu", 0);
这样的话,你开机启动后按任意键就不是跳到uboot的命令行,而是你自定义的命令。
uboot中添加自己的命令【转】的更多相关文章
- uboot中添加FIQ中断及相关问题
本文主要说明了在uboot中添加FIQ中断时遇到的问题以及对应的解决办法. 首先交代一下项目的软硬件环境.硬件方面,使用s3c2440作为主控芯片,外接串口.网卡等设备.软件方面,主控芯片上电后运行u ...
- 在u-boot中添加命令
转:http://www.embedu.org/Column/Column464.htm 作者:曾宏安,华清远见嵌入式学院讲师. u-boot是嵌入式系统中广泛使用的一种bootloader.它不仅支 ...
- u-boot中添加mtdparts支持以及Linux的分区设置
简介 作者:彭东林 邮箱:pengdonglin137@163.com u-boot版本:u-boot-2015.04 Linux版本:Linux-3.14 硬件平台:tq2440, 内存:64M ...
- 在U-boot中添加以太网驱动
当定义CONFIG_CMD_NET和CONFIG_CMD_PING,编译之后执行ping命令,告警没有找到以太网. 因此,需要打开U-boot的网络功能, u-boot-sunxi-sunxi中没有找 ...
- Mac OS为UltraEdit在Terminal中添加快捷使用命令
一,什么是UltraEdit 我觉得是个程序员,撸代码的都知道UrlEdit是什么.我们在会使用Linux,在Linux中有个很出名的编辑器gedit,使得我们在终端中输入gedit xxx.便可进入 ...
- 【Android】在build/envsetup.sh中添加自己的命令(函数)
由于测试的需要,经常需要手动刷入boot.img和system.img,把它写到envsetup.sh就可以每次使用一行命令来代替了: function flashtestimage(){ if [[ ...
- 在U-Boot中添加自定义命令以实现自动下载程序【转】
本文转载自:https://gaomf.cn/2016/06/26/%E5%9C%A8U-Boot%E4%B8%AD%E6%B7%BB%E5%8A%A0%E8%87%AA%E5%AE%9A%E4%B9 ...
- uboot自定义添加命令
1.添加命令 1.u-boot的命令格式: U_BOOT_CMD(name,maxargs,repeatable,command,”usage”,"help") name:命令的名 ...
- uboot中的命令体系
一.uboot的命令体系介绍以及实例分析: U-Boot 的命令实现大多在 common 目录下.在该目录下命令的代码文件都是以“ cmd_”开头的,如下图所示: 其中每一个文件都是一个命令实现的代码 ...
随机推荐
- spring data jpa方法命名规则
关键字 方法命名 sql where字句 And findByNameAndPwd where name= ? and pwd =? Or findByNameOrSex where name= ? ...
- Python基础知识点总结
Python基础知识与常用数据类型 一.Python概述: 1.1.Python的特点: 1.Python是一门面向对象的语言,在Python中一切皆对象 2.Python是一门解释性语言 3.Pyt ...
- LeetCode(33)Search in Rotated Sorted Array
题目 Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 m ...
- UVa 10129 单词 (欧拉通路)
题意: 输入n(n≤100000)个单词,是否可以把所有这些单词排成一个序列,使得每个单词的第一个字母和上一个单词的最后一个字母相同(例如acm.malform.mouse).每个单词最 多包含100 ...
- Analyzer原理
[常用分词器] SimpleAnalyzer StopAnalyzer WhitespaceAnalyzer StandardAnalyze [TokenStream] she is a studen ...
- angular(转)
学习之前可以看看 知乎上讨论angularjs优缺点 帮你选择框架的网站 同类主流框架对比 教程 angularjs在慕课网 angularjs在51cto angularjs在图灵社区 社区 Ang ...
- mongodb shell 无法删除问题
1.MongoDB Shell中退格键使用的问题. 利用SecureCRT工具访问linux的时候,在使用MongoDB的交互式shell的时候,退格键(Backspace)无法使用,导致无 法修改输 ...
- 592. Fraction Addition and Subtraction
Problem statement: Given a string representing an expression of fraction addition and subtraction, y ...
- js重新讲解继承,es5的一些继承,es6继承的改变 ----------由浅入深
es5 利用原型公有私有继承 function Parent(name) { this.name = name } Parent.prototype.home = '北京'; function Chi ...
- 【IntelliJ 】IntelliJ IDEA 自动导入包 快捷方式 关闭重复代码提示
idea可以自动优化导入包,但是有多个同名的类调用不同的包,必须自己手动Alt+Enter设置 设置idea导入包 勾选标注 1 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化 ...