当前位置: 首页 > news >正文

笔记整理—uboot番外(2)find_cmd函数

        find_cmd函数,是用于从当前uboot命令体系中查找是否存在某个命令,找到则返回对应的指针,否则返回NULL。

cmd_tbl_t *cmdtp_trmp=&__u_boot_cmd_start;
__u_boot_cmd_start是在链接脚本中使用的符号,标志位命令集的开始地址

        找命令的思路:用for去遍历,起始于*start终止与*end,元素为结构体类型。

        U_BOOT_CMD宏就是定义了一个命令结构体变量,与命令的第一个参数有关,在调参时,只要name不同,则命令就不会重名。

        例如:

int do_version(cmd_tbl_t *cmdtp,int flag,int argc,char *argv[])
{char version_string[]="123";printf("\n%s\n",version_string);return 0;
}U_BOOT_CMD(myversion,1,1,do_version,"version-printf monstor version\n",NULL);
//(命令名称,参数个数,是否可复用,执行函数,短说明,长说明)cmd_tbl_t __u_boot_cmd_myversion __attribute((unused,section(".u_boot_cmd")))={"myversion",1,1,do_version,"version-printf monstor version\n",NULL};

        向uboot中添加一个命令,1在common下建立新文件(cmd_xx.c)。2.在common.c中添加一个(do_xxx函数),二者均可实现。如果使用方法1,需要在makefile中加上xxx.o并编写条件编译内容:

COBJS -$(CONFIG_CMD_XXX)+=xxx.o//的条件编译 是-Y/-N 看有没有相关的宏定义

         这一章的内容有点短,下一章将说明环境变量的作用。


http://www.mrgr.cn/news/19118.html

相关文章:

  • Linux系统入门:加密与解密原理、数据安全及系统服务访问控制策略分析
  • @EnableAutoConfiguration注解使用和原理
  • glsl着色器学习(七)
  • malloc/free 和 new/delete的区别
  • 遇到bug怎么分析,这篇文章值得一看
  • Java学习|Java基础知识
  • C++11中的constexpr
  • 【网络】HTTPS协议
  • Python 从入门到实战6(二维列表)
  • 数据结构----链表
  • 实现一个简单的车贷计算小程序(含代码)
  • cocotb备忘录
  • Flink问题记录
  • 用 count(*)哪个存储引擎会更快?
  • SpringBoot学习(3)(配置文件的基本使用)
  • 配置管理 —— SpringCloud Config
  • 关于位结构体及位操作总结
  • 用ChatGPT三分钟写一个完美的PPT,彻底告别繁琐的制作过程
  • Datawhale X 李宏毅苹果书AI夏令营 学习笔记
  • vector底层原理(二)