u-boot/include/command.h下的U_BOOT_CMD定义说明
来源:互联网 发布:yum 没有可用软件包 编辑:程序博客网 时间:2024/05/01 22:58
在UBOOT当中,各个命令是通过U_BOOT_CMD这个宏来定义出来的,其本质其实理解起来也很简单,不过今天也从中学到了一点东西
先来看UBOOT当中关于U_BOOT_CMD这个宏的定义:
/* 这是定义一个结构的属性,将其放在.u_boot_cmd这个段当中,相当于.data/.bss这些段 */
#define Struct_Section __attribute__ ((unused,section (".u_boot_cmd")))
/* 宏定义,用于定义一个命令 */
#define U_BOOT_CMD(name,maxargs,rep,cmd,usage) /
cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage}
这样一来,凡通过U_BOOT_CMD定义的cmd_tbl_t变量会全部被放在.u_boot_cmd段当中(可以看UBOOT的链接脚本xxx.lds),具体怎么放是链接器的工作。
这里要看的是##name和#name这两个操作.##name将字符直接跟在后面, #name会将name这个字符中以“..."的形式放置。
例如:定义一个命令boot
U_BOOT_CMD(boot, 0, 0, fun, "boot xxx");
展开以后会变成:
cmd_tbl_t __u_boot_cmd_boot __attribute___((unused, section(".u_boot_cmd"))) = {"boot", 0, 0, fun, "boot xxx"}
大部分基本不变,将Struct_Section展开了,还将##name换成了boot, 将#name换成了"boot"。应该不难看出##/#的作用吧。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ywf861029/archive/2011/01/13/6134834.aspx
- u-boot/include/command.h下的U_BOOT_CMD定义说明
- U-boot 添加命令 U_BOOT_CMD
- U-boot 添加命令 U_BOOT_CMD
- U-boot 添加命令 U_BOOT_CMD
- U-boot 添加命令 U_BOOT_CMD
- U-boot 添加命令 U_BOOT_CMD
- uboot 的命令定义注意点,u-boot, cfg_cmd,cmd_confdefs.h
- u-boot Command
- Tiny210移植u-boot报/usr/local/include/asm/io.h文件中未知的类型名错误
- Tiny210移植u-boot报/usr/local/include/asm/io.h文件中未知的类型名错误
- uboot下用do_run()函数来执行U_BOOT_CMD定义的命令
- U-boot中mkimage的说明
- U-Boot环境变量的解释说明
- U-Boot中初始化序列的说明
- U-boot 调试中的command
- U-boot移植说明
- U-BOOT分区说明
- U-Boot编译过程完全分析-make ***_config 和mkconfig脚本,include/config.mk,include/config.h
- 关于CentOS安装无法安装mysql-python组件问题
- 在域中自动安装软件
- Android中使用系统桌面背景作为应用背景,支持拖动
- 如果,编译Android时新添加的应用程序没有被编译进image
- 关于IE浏览器缓存问题研究和chrome,firefox,浏览器隐私模式的体会。
- u-boot/include/command.h下的U_BOOT_CMD定义说明
- 什么是守护线程
- 如何为linux释放缓存
- Android Source code
- CentOS 编译 nginx+php+mysql 安装手记
- CentOS 编译 nginx+php+mysql 安装手记
- IplImage 中 ImageData 问题
- Java获取当前时间.
- CentOS 编译 nginx+php+mysql 安装手记