linux uboot制作自定义菜单指令menu

应用场景

由于有时候需要不同类型的屏幕显示,但是来回烧写又显得非常的麻烦,遇到上述问题的话,我们可以采取以下方法去解决刚刚的问题。

适用平台

尝试过在STM32MP157,RK356X,RK3588里使用

menu指令代码描述

新建一个指令文件:u-boot/cmd/hybmenu.c

#include <common.h>
#include <command.h>
#include <environment.h>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

进入到uboot下的cmdLine模式启动

sdk/u-boot/common/autoboot.c

void autoboot_command(const char *s)
{debug("### main_loop: bootcmd=\"%s\"\n", s ? s : "<UNDEFINED>");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 */
#endifrun_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_MENUKEYif (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: 命令的帮助信息,以字符串形式表示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/76827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现Internet的DNS服务架构

实现Internet的DNS服务架构 一.准备 1.安装最小化系统并进行必要配置 安装最小系统 配置网络 1.修改centos7,8网卡名为传统网卡名 sed -i.org /GRUB_CMDLINE_LINUX/s"$ net.ifnames0 " /etc/default/grub grub2-mkconfig -o /etc/grub2.cfg reboot 2.配置静态网址…

9月1日作业

思维导图 服务器代码 #include<myhead.h>#define PORT 4567 #define IP "192.168.6.225"struct msg //接收到的客户端信息结构体 {char type;char name[20];char txt[128]; };//定义节点类型 typedef struct Node {union{struct sockaddr_in cin; //数据…

SpringMVC增删改查(CRUD)的实现

目录 前言 一、前期准备 1.pom.xml---依赖与插件的导入 2.jdbc.properties---数据库连接 3.log4j2.xml---日志文件 4.spring-mybatis---mybatis与spring整合文件 5.spring-context---spring上下文配置 6.spring-mvc 7.generatorConfig.xml---代码生成器 8.web.xml 二…

核心实验16_端口镜像_ENSP

项目场景&#xff1a; 核心实验16_端口镜像_ENSP 实搭拓扑图&#xff1a; 具体操作&#xff1a; 交换机: [garliccc]observe-port 1 interface GigabitEthernet 0/0/3 /设置0/0/3为观察口 [garliccc]int g0/0/2 [garliccc-GigabitEthernet0/0/2]port-mirroring to observe-po…

win 10 安装新程序总是弹出提示:目前无法访问smartscreen

win 10 安装新程序总是弹出提示&#xff1a;目前无法访问smartscreen 因为后来无法再现警告&#xff0c;无法截图 搜索安全&#xff0c;找到 Windows 安全中心 找到“应用和浏览器控制”&#xff0c;关闭其中 2 项 SmartScreen 奇怪的是&#xff0c;之后我又改回去了&#x…

npm install失败的分析与解决方案,以及修复完成的代码地址

问题描述&#xff1a; 在引入vue-element-admin后npm i 初始化失败&#xff0c;或者对下载的vue项目npm i 任何插件都会失败&#xff0c;且安装依赖时报错 npm ERR! Error while executing npm ERR! Error while executing: npm ERR! H:\Program Files\git\Git\cmd\git.EXE ls…

latex 源码,\section如何居左显示

目录 问题描述&#xff1a; 问题解决&#xff1a; 不显示序号的办法&#xff1a; 居左对齐的方法&#xff1a; 问题描述&#xff1a; 一般无论是投稿期刊还是投稿会议&#xff0c;默认的.tex源码中的\section未必是居左显示的&#xff0c;有时候&#xff0c;需要在不更改.…

接口测试(详细总结)

序章 ​ 说起接口测试&#xff0c;网上有很多例子&#xff0c;看了不不知道他们说的什么&#xff0c;觉得接口测试&#xff0c;好高大上。认为学会了接口测试就能屌丝逆袭&#xff0c;走上人生巅峰&#xff0c;迎娶白富美。因此学了点开发知识后&#xff0c;发现接口测试其实都…

第P4周:猴痘病识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章&#xff1a;Pytorch实战 | 第P4周&#xff1a;猴痘病识别&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 一、前期准备 1.设置GPU 设置GPU device torch.device…

系统架构设计师-嵌入式系统

目录 一、嵌入式系统概述 1、基本概念 2、嵌入式系统软件组成架构 二、嵌入式软件开发 三、嵌入式硬件 1、嵌入式微处理器 2、人工智能芯片 3、嵌入式微处理器体系结构 4、总线 四、嵌入式操作系统 1、嵌入式实时操作系统 2、操作系统内核架构 3、鸿蒙操作系统 五、嵌入式…

hive的语言元素

参考文档地址 http://www.hplsql.org/doc 数据类型 可以在HPL/SQL程序中使用以下数据类型&#xff1a; 数据类型描述BIGINT / INT864位整数BINARY_DOUBLE双精度浮点数BINARY_FLOAT单精度浮点数BINARY_INTEGER32位整数BIT0、1或NULLBOOL / BOOLEAN真或假CHAR(n) / CHARACTER…

postman token 请求头添加

思路&#xff1a; 1、登录成功后将 得到的token设置为集合变量 2、在需要携带Authorization的请求头上使用该集合变量 关键代码 const responseData pm.response.json(); if(responseData.code 1) {// 获取tokenconst {data:{token}} responseData// 设置为集合变量pm.colle…

编译OpenWrt内核驱动

编译OpenWrt内核驱动可以参考OpenWrt内部其它驱动的编写例程&#xff0c;来修改成自己需要的驱动 一、OpenWrt源代码获取与编译 1.1、搭建环境 下载OpenWrt的官方源码&#xff1a; git clone https://github.com/openwrt/openwrt.git1.2、安装编译依赖项 sudo apt update -…

vue中如何给特殊字段设置插槽

大纲: <template><div><div><span>卡号</span><el-input type"text" v-model"cardNo" clearable placeholder"请输入卡号" /><el-button type"primary" plain icon"el-icon-search"…

Python操作Excel实战:Excel行转列

# 1、原始数据准备 样例数据准备 地区1m2-5m6-10m11-20m21-40m地区单价计费单位费用最小值费用最大值北京13012011010090     天津13012011010090     石家庄13012011010090     保定140130120110100     张家口170150130120110     邢台1401201101…

我们如何在工作与生活中找到平衡点?

找到工作与生活中的平衡点是每个人都必须面对的问题。以下是一些建议&#xff0c;可以帮助你在工作和生活之间找到平衡&#xff1a; 制定时间表&#xff1a;确保你有足够的时间来处理工作和生活中的各种任务。为工作、学习和个人生活设定优先级&#xff0c;并确保时间分配合理…

玩转Mysql系列 - 第15篇:详解视图

这是Mysql系列第15篇。 环境&#xff1a;mysql5.7.25&#xff0c;cmd命令中进行演示。 需求背景 电商公司领导说&#xff1a;给我统计一下&#xff1a;当月订单总金额、订单量、男女订单占比等信息&#xff0c;我们啪啦啪啦写了一堆很复杂的sql&#xff0c;然后发给领导。 …

ElasticSearch第三讲:ES详解 - Elastic Stack生态和场景方案

ElasticSearch第三讲&#xff1a;ES详解 - Elastic Stack生态和场景方案 本文是ElasticSearch第三讲&#xff0c;在了解ElaticSearch之后&#xff0c;我们还要了解Elastic背后的生态 即我们常说的ELK&#xff1b;与此同时&#xff0c;还会给你展示ElasticSearch的案例场景&…

k8s配置ingress访问集群外部资源

使用ingress访问外部资源&#xff0c;首先需要创建service指向我们需要访问的资源 而每个service包含一个endpoint endpoint是k8s集群中的一个资源对象&#xff0c;存储在etcd中&#xff0c;用来记录一个service对应的所有pod的访问地址。service配置selector&#xff0c;endpo…

浅谈限流式保护器在高校防火工作的应用

安科瑞 华楠 【摘要】摘要&#xff1a;为了预防火灾和减少火灾带来的危害&#xff0c;保护校园和师生生命财产安全&#xff0c; 建和谐安宁的校园环境&#xff0c;保障学校安全稳定发展&#xff0c;我们必须要时刻拧紧消防安全这弦&#xff0c;时刻注意这根高压线。随着近年来…