U-boot启动菜单实现
来源:互联网 发布:淘宝单品爆款技巧 编辑:程序博客网 时间:2024/05/23 01:11
1、实现原理
向U-boot中添加命令bootmenu(实现菜单),并设置U-boot自启动参数为该命令,改变U-boot启动延时为1,则U-boot启动后就运行该命令。
2、实现过程
(1)、在common目录下新增bootmenu.c文件,代码如下:
#include <common.h>#include <command.h>static char waitconsoleinput(unsigned long delay){ int i; if (-1 == delay) { while (1) { if(tstc()){ return getc(); } } } else { for (i = 0; i < delay; i++) { if(tstc()){ return getc(); } udelay(10*1000);/*时间快的话自己调整下*/ } } return 0;}void menu_usage(void){ printf("\r\n=========Menu for XXX=========\r\n"); printf("\r\n"); printf("[1] download Linux(zImage) and boot kernel \r\n"); printf("[2] Reset\r\n"); printf("[q] Exit\r\n"); printf("\r\n"); printf("Please Input: ");}void menu_shell(void){ char c; char cmdbuf[128]; while (1) { menu_usage(); c = waitconsoleinput(-1); switch (c) { case '1': strcpy(cmdbuf, "tftp 0x20008000 zImage; go 0x20008000"); run_command(cmdbuf, 0); break; case 'r': strcpy(cmdbuf, "reset"); run_command(cmdbuf, 0); break; case 'q': return; }; };}int do_menu (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]){ menu_shell(); return 0;}U_BOOT_CMD( bootmenu, 1, 0, do_menu, "Boot Menu", "U-boot Boot Menu\n");
(2)、修改common目录下的Makefile文件
添加如下:
COBJS-y += bootmenu.o
(3)、修改环境变量
A、修改源码板子头文件
include\configs\xxx.h(板子头文件),添加如下内容:
#define CONFIG_BOOTDELAY 1
#define CONFIG_BOOTCOMMAND "bootmenu"
B、启动U-boot后进到控制台来手工修改
$ setenv bootcmd bootmenu
$ setenv bootdelay 1
$ saveenv
- U-boot启动菜单实现
- U-boot实现Nand/Nor 双启动
- U-Boot启动过程
- u-boot启动过程
- U-boot启动详解
- Bootloader U-boot启动
- u-boot启动流程
- u-boot 启动成功
- u-boot启动流程
- U-BOOT启动
- u-boot启动流程
- U-boot启动分析
- u-boot启动流程
- U-Boot启动过程
- U-boot启动分析
- U-BOOT启动分析
- U-Boot启动过程
- U-Boot启动过程
- 开源大型网游服务器架构项目
- 海淘第一单
- 4路QTI巡航程序
- C语言调用终端命令行批处理【小尝试】
- mysql的查询笔记.
- U-boot启动菜单实现
- 用QtCreator开发OpenGL游戏
- 如何学好C语言
- 能力很有限,差距很大,需要继续努力
- Linux 关闭/开启图形界面(X-window) 命令
- 加密与解密小软件
- cocos2d-x touch
- 【6】Virtualizing disk performance
- 精品网站集合 .