点击上方"百问科技",置顶公众号
嵌入式干货,及时送达
-
作者: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”命令,同样可以调出这个界面。
二、操作步骤
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线上培训领域的佼佼者。
如果你是设备树初学者,或是工作中要用到设备树的嵌入式工程师,这门课就是为你量身打造的。我们有足够的把握,学完课程后你不仅能修改设备树,看懂设备树文件,而且对设备树的内在原理有更深的理解。
为什么我们这么有把握?
- 先讲解非设备树和使用了设备树代码之间的区别,更深刻的让你理解设备树的作用
- 边讲边画、现场写代码,先理论后实践,对于难点(比如内核对设备树的处理)重点讲解
- wiki教程、随堂笔记和代码应有尽有,学习的同时辅助理解,综合填补知识空白点,从而找到自己的学习路径。
学完课程后,你将获得:
- 深刻理解设备树的由来和作用
- 能看懂设备树文件,能修改驱动支持设备树
- 对设备树的内在原理有所了解
课程目录
购买地址
http://item.taobao.com/item.htm?spm=a1z10.1-c-s.w5003-18996326770.1.764a82accZHBAf&id=577749510933&scene=taobao_shop
如果有顾虑,请先试看:
以下是部分设备树学员的评价▼
如何获取本公众号精选的干货文章?
请在公众号后台回复"m"获取
加入社群
韦东山官方微信群开通,供学员交流,添加管理员微信(13266630429,验证:进群)即可加入,名额有限先到先得。
|