最近接触了U-Boot,作为入门,在大概了解一下U-Boot之后,决定自己制作一个U-Boot的命令菜单,下面会描述怎么制作的,至于具体的实现过程,以后会再拿出来的。
拿样图吧,字母选项尚未完成,请忽略吧:
如图所示,我所用的开发板采用的是TFTP下载的方式,所以需要网络,这样的话IP地址就必须好好设了,服务器地址是Serverip,客户端也就是开发板的地址是Ipaddr,这两个地址是预先存储在开发板的环境变量中的,从中读出来的,并显示的。下面的菜单选项则根据需要,自己定义的。
思路
这个思路嘛,也是根据需求的来想的,我想做的是一个简单的快捷菜单去下载升级板子上相应的文件,而下载方式就是通过网络使用TFTP服务来的。下面看流程图:
检测网络是否畅通
图有点小,将就下吧
读取Flash上的环境变量,Serverip与Ipaddr,这两个地址,交由用户判断是否需要更改。
若需要,先提示用户输入服务端的ip地址即Serverip,输入完之后会检查格式是否正确,不正确会提示用户输入错误,并重新输入。通过之后,再让用户输入服务端的IP地址,与输入服务器的IP地址是一样的,检查格式是否正确。
当服务端与客户端都输入完成后,会提示用户配置完成,然后询问用户是否将此配置保存到Flash中。选择‘是’会保存,‘否’则不保存。
这个保存到Flash中的意思是,把这个保存的内容编程默认的,也就是下次开机时,就会变成这次所保存的值。提示保存成功。
然后会输出此时所用的网络配置。并检测此配置是否畅通,如果畅通则就显示出命令菜单,不畅通会提示用户去检查IP地址是否输入正确以及检查线路是否连接好了。
这个检测是用了Ping命令的机制,只不过就是读取了相应变量的值来获取网络状况。
我定义的U-Boot命令‘menu’
U_BOOT_CMD(
menu, 1, 0, do_menu,
"menu - display a menu, to select the items to do something",
" - display a menu, to select the items to do something"
);
接下来有时间的话在继续更新。。。