嵌入式开发交流网论坛

标题: 怎样在uboot上创建菜单(menu)? [打印本页]

作者: 襄垣战队收人    时间: 2019-1-16 16:19
标题: 怎样在uboot上创建菜单(menu)?
点击上方"百问科技",置顶公众号

嵌入式干货,及时送达
-

作者:amanlikethis,HeroKern
参考链接:
http://www.cnblogs.com/amanlikethis/archive/2014/02/24/3564913.html
http://blog.csdn.net/qq_21792169/article/details/50041365
全文8311字,预计阅读时间20分钟。


一、原理
uboot菜单其实就是一个uboot中的命令,和其他的命令没有什么差别。
uboot启动时,如果进入uboot命令模式,先运行这个命令,就会打印出一个菜单界面。在uboot的命令模式,通过键入“menu”命令,同样可以调出这个界面。
[attach]23670[/attach]


二、操作步骤
1、在uboot的common目录下创建cmd_menu.c,定义一个uboot cmd:
U_BOOT_CMD(
menu,3,0,do_menu,
"menu-displayamenu,toselecttheitemstodosomething\n",
"-displayamenu,toselecttheitemstodosomething"
);
cmd的名为 menu ,执行的动作是do_menu函数。
实现do_menu:
intdo_menu(cmd_tbl_t*cmdtp,intflag,intargc,char*argv[])
{
tftp_menu_shell();
return0;
}
然后继续完善cmd_menu.c,内容如下:

#include
#include

#ifdefCONFIG_CMD_MENU

#defineUSE_TFTP_DOWN1
#defineUSE_USB_DOWN2

externcharconsole_buffer[];

/*
*Readsandreturnsacharacterfromtheserialport
*-Timesoutafterdelayiterationscheckingforpresenceofcharacter
*-Sets*error_ptoUARTerrorbitsor-ontimeout
*-Ontimeout,sets*error_pto-1andreturns0
*/

staticcharawaitkey(unsignedlongdelay,int*error_p)
{
inti;
charc;

if(delay==-1){
while(1){
if(tstc())/*wegotakeypress*/
returngetc();
}
}
else{
for(i=0;i=0&&s&&!abortboot(bootdelay)){
#ifdefCONFIG_AUTOBOOT_KEYED
intprev=disable_ctrlc(1);/*disableControlCchecking*/
#endif

#ifndefCFG_HUSH_PARSER
run_command(s,0);
#else
parse_string_outer(s,FLAG_PARSE_SEMICOLON|
FLAG_EXIT_FROM_LOOP);
#endif

#ifdefCONFIG_AUTOBOOT_KEYED
disable_ctrlc(prev);/*restoreControlCchecking*/
#endif
}

#ifdefCONFIG_CMD_MENU
run_command("menu",0);
#endif
4、修改开发板相关的头文件,这里修改:include/configs/TQ2440.h
增加一行:
#defineCONFIG_CMD_MENU1
然后重新编译uboot,烧写到开发板即可看到uboot 菜单。
-THE END-



上文 :汇编语言入门教程



有条
推广

为了代码的简洁,linux 3.x以上的内核版本都已支持设备树(dts),
可以说设备树是趋势,学习设备树势在必行。掌握设备树知识是驱动工程师必备基础技能之一。


而设备树初学者经常会遇到以下问题:


所以,百问网开设了一门视频课《Linux设备树详解》。课程中我们将以Linux 4.19版本为基础,讲师结合自己在工作中的经验和总结,带你了解设备树的使用,避免在网上学习零散教程时由于版本不对应导致的各类问题,优化学习体验,提升学习效率。


讲师是谁?



韦东山,深圳百问网科技有限公司技术总监,
毕业于中国科学技术大学物理软件双学位,
15年嵌入式一线编程开发经验。
linux类畅销书作者
长期从事嵌入式教学工作,对嵌入式初学者的痛点了如指掌并能通俗易懂讲出来,10年以来,孜孜不倦的培育了几万名优秀嵌入式工程师。
10年以来始终把学员权益放在第一位
脚踏实地的做售后,做答疑,是嵌入式 Linux /Android线上培训领域的佼佼者。


如果你是设备树初学者,或是工作中要用到设备树的嵌入式工程师,这门课就是为你量身打造的。我们有足够的把握,学完课程后你不仅能修改设备树,看懂设备树文件,而且对设备树的内在原理有更深的理解。


为什么我们这么有把握?


学完课程后,你将获得:
课程目录



[attach]23671[/attach]



购买地址


http://item.taobao.com/item.htm?spm=a1z10.1-c-s.w5003-18996326770.1.764a82accZHBAf&id=577749510933&scene=taobao_shop


如果有顾虑,请先试看:

设备树的由来







只想使用设备树不想深入研究怎么办?





以下是部分设备树学员的评价▼

[attach]23672[/attach]



如何获取本公众号精选的干货文章?

请在公众号后台回复"m"获取





加入社群

韦东山官方微信群开通,供学员交流,添加管理员微信(13266630429,验证:进群)即可加入,名额有限先到先得。


[attach]23673[/attach]

喜欢就点一下[ 好看 ]呗







欢迎光临 嵌入式开发交流网论坛 (http://www.dianzixuexi.com/bbs/) Powered by Discuz! X3.2