由于有时候需要不同类型的屏幕显示,但是来回烧写又显得非常的麻烦,遇到上述问题的话,我们可以采取以下方法去解决刚刚的问题。
尝试过在STM32MP157,RK356X,RK3588里使用
新建一个指令文件:u-boot/cmd/hybmenu.c
#include
#include
#include
void do_choose_screen(void)
{
char c;
c = getc();
printf("option=%c\n",c);
switch (c)
{
case '0':
printf("choose [0] LCD Srceen \r\n ");
env_set("hyb_dts_index", "0");
env_save();
break;
case '1':
printf("choose [1] MIPI Srceen \r\n ");
env_set("hyb_dts_index", "1");
env_save();
break;
case '2':
printf("choose [2] HDMI Srceen \r\n ");
env_set("hyb_dts_index", "2");
env_save();
break;
default:
printf("[0] default.... \r\n ");
env_set("hyb_dts_index", "2");
env_save();
break;
}
}
//指令对应的操作函数
int do_menu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
printf("Please select the type of DTB you want\r\n");
printf("******************************************\r\n ");
printf("[0] LCD Srceen \r\n ");
printf("[1] MIPI Srceen \r\n ");
printf("[2] HDMI Srceen \r\n ");
printf("******************************************\r\n ");
do_choose_screen();
return 0;
}
U_BOOT_CMD(
hybmenu, 2, 0, do_menu,
"choose menu",
"choose dtb menu"
);
u-boot/cmd/Makefile文件新增如下语句
obj-y += hybmenu.o
sdk/u-boot/common/autoboot.c
void autoboot_command(const char *s)
{
debug("### main_loop: bootcmd=\"%s\"\n", s ? s : "" );
if (stored_bootdelay != -1 && s && !abortboot(stored_bootdelay)) {
#if defined(CONFIG_AUTOBOOT_KEYED) && !defined(CONFIG_AUTOBOOT_KEYED_CTRLC)
int prev = disable_ctrlc(1); /* disable Control C checking */
#endif
run_command_list(s, -1, 0);
#if defined(CONFIG_AUTOBOOT_KEYED) && !defined(CONFIG_AUTOBOOT_KEYED_CTRLC)
disable_ctrlc(prev); /* restore Control C checking */
#endif
}
+ printf("hybmenu autostart...\r\n");
+ run_command("hybmenu",0);
#ifdef CONFIG_MENUKEY
if (menukey == CONFIG_MENUKEY) {
s = env_get("menucmd");
if (s)
run_command_list(s, -1, 0);
}
#endif /* CONFIG_MENUKEY */
}
U_BOOT_CMD()函数
#define U_BOOT_CMD(_name, _maxargs, _rep, _cmd, _usage, _help) \
U_BOOT_CMD_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help, NULL)
_name: 命令的名称,以字符串形式表示。
maxargs: 命令最大的参数个数,包括命令本身。
_rep: 重复次数,表示命令可以被连续执行的次数。
_cmd: 执行函数。
_usage: 命令的使用说明,以字符串形式表示。
_help: 命令的帮助信息,以字符串形式表示。