当前位置: 首页 > news >正文

【Linux开发】Hi3516dv300-DC-182型开发板显示开机logo的相关操作

在这里插入图片描述

个人主页~


Hi3516dv300-DC-182型开发板显示开机logo的相关操作

  • 一、改变烧录内容
  • 二、改变环境变量
    • 1、修改内核启动参数
    • 2、修改启动时执行的命令序列

我们可以在Hi3516dv300-DC-182型开发板烧录的时候,对结构进行更改,将我们的开机logo加载到烧录固件内容当中

一、改变烧录内容

在这里插入图片描述
将原本的26M的根文件系统的最后1M裁掉,然后在后面加上1M的图片logo, 这里的长度都是以M为单位的,所以我们取最小单位1M,其内容分别是1M的boot(引导程序),4M的kernel(核心),以及25M的rootfs(根文件系统),和1M的logo(一张图片)

二、改变环境变量

因为我们修改了烧录的内容,所以我们要对环境变量进行重新配置,才能让程序正确启动起来,以下是要修改的环境变量:

setenv bootargs 'mem=128M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:1M(boot),4M(kernel),25M(rootfs),1M(logo)'
setenv bootcmd 'sf probe 0;
sf read 0x82000000 0x1E00000 0x100000;
setenv jpeg_addr 0x82000000;
setenv jpeg_size 0x100000;
setenv jpeg_emar_buf 0x82200000;
setenv vobuf 0x90000000;
decjpg 0;
startvo 0 32 10;
startvl 0 0x90000000 1920 0 0 1920 1080;
sf read 0x96000000 0x100000 0x400000;
bootm 0x96000000'
saveenv

实际上这里配置了两个大的环境变量,一个是bootargs(内核启动参数),另一个是bootcmd(启动时执行的命令序列),bootcmd中的配置小环境变量我们用回车分开了,方便注释,实际上,上面的' '之间的都是属于一个大的环境变量

1、修改内核启动参数

setenv bootargs 'mem=128M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:1M(boot),4M(kernel),25M(rootfs),1M(logo)'

bootargs 是一个特殊的环境变量,它保存着传递给 Linux 内核的启动参数

  • mem=128M:该参数指定了系统可用的内存大小为 128MB
  • console=ttyAMA0,115200:它表明使用 ttyAMA0 作为控制台设备,通信波特率为 115200
  • root=/dev/mtdblock2:指定根文件系统所在的设备为 mtdblock2mtd 代表内存技术设备,常用于闪存设备
  • rootfstype=jffs2:说明根文件系统的类型是 JFFS2(Journaling Flash File System 2),这是一种专门为闪存设计的日志型文件系统
  • rw:表示以读写模式挂载根文件系统
  • mtdparts=hi_sfc:1M(boot),4M(kernel),25M(rootfs),1M(logo):此参数对 MTD 设备进行分区。hi_sfc 是 MTD 设备名,后面依次为各个分区的大小和名称,即 1MB 的 boot 分区、4MB 的 kernel 分区、25MB 的 rootfs 分区以及 1MB 的 logo 分区

2、修改启动时执行的命令序列

bootcmd 作用是定义系统启动时自动执行的命令序列

  • sf probe 0sf 代表 SPI Flash,此命令用于探测 SPI Flash 设备,0 是设备编号
  • sf read 0x82000000 0x1E00000 0x100000:从 SPI Flash 的 0x1E00000 地址处读取 0x100000 字节的数据到内存的 0x82000000 地址处
  • setenv jpeg_addr 0x82000000:设置环境变量 jpeg_addr0x82000000,表示 JPEG 图片的内存地址
  • setenv jpeg_size 0x100000:设置环境变量 jpeg_size0x100000,表示 JPEG 图片的大小
  • setenv jpeg_emar_buf 0x82200000:设置环境变量 jpeg_emar_buf0x82200000,代表 JPEG 解码的临时缓冲区地址
  • setenv vobuf 0x90000000:设置环境变量 vobuf0x90000000,表示视频输出缓冲区的地址
  • decjpg 0:调用 JPEG 解码程序对之前读取的 JPEG 图片进行解码,0 是解码参数
  • startvo 0 32 10:启动视频输出功能,03210 是视频输出的相关参数
  • startvl 0 0x90000000 1920 0 0 1920 1080:启动视频层显示,0 是视频层编号,0x90000000 是视频缓冲区地址,19201080 分别代表视频的宽度和高度,即分辨率为1080p
  • sf read 0x96000000 0x100000 0x400000:从 SPI Flash 的 0x100000 地址处读取 0x400000 字节的数据到内存的 0x96000000 地址处,这部分数据是 Linux 内核
  • bootm 0x96000000:启动内存中位于 0x96000000 地址处的内核

显示开机logo的操作就到这里了~

在这里插入图片描述

http://www.xdnf.cn/news/945685.html

相关文章:

  • 统计学(第8版)——假设检验学习笔记(考试用)
  • 阿里云服务器 篇十七:网站悬浮球
  • Jenkins构建时出现报错`ERROR: Failed to install JDK. Exit code=2`的终极解决方案
  • 2025年- H79-Lc187--118. 杨辉三角(找规律)--Java版
  • Java性能测试工具列举
  • 相机Camera日志实例分析之一:相机Camx【前置慢动作分辨率切换720P、1080P录制】单帧流程日志详解
  • PolyU Palmprint Database掌纹识别数据集预处理(踩坑版)
  • Maven从入门到精通指南
  • Linux边缘智能:物联网的终极进化
  • 职坐标物联网全栈开发全流程解析
  • 算法刷题-回溯
  • SpringCloudGateway 自定义局部过滤器
  • WEB3全栈开发——面试专业技能点P8DevOps / 区块链部署
  • Conda 创建新环境时报错 HTTP 502,如何解决?
  • 【Zephyr 系列 16】构建 BLE + LoRa 协同通信系统:网关转发与混合调度实战
  • 【前端实战】如何让用户回到上次阅读的位置?
  • 板凳-------Mysql cookbook学习 (十--3)
  • Tomcat Jetty 和 UnderTow 的粗略对比
  • 企业级AI-DevOps工具链的构成及实现方案
  • 借助 LangGraph 对 Agent 进行测试
  • Redis实战-黑马点评项目完结(p78-p95)
  • 解决网页导出PDF部分内容被遮挡问题
  • 性能优化中,多面体模型基本原理
  • 使用centos服务器和Let‘s Encypted配置SpingBoot项目的https证书
  • JVM如何优化
  • 深度解析 Linux 内核参数 net.ipv4.tcp_rmem:优化网络性能的关键
  • DeFi模式:去中心化金融架构与流动性池设计
  • Dify 社区版本地docker compose部署记录
  • Docker环境下安装 Elasticsearch + IK 分词器 + Pinyin插件 + Kibana(适配7.10.1)
  • uni-app学习笔记三十五--扩展组件的安装和使用