【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
:该参数指定了系统可用的内存大小为 128MBconsole=ttyAMA0,115200
:它表明使用ttyAMA0
作为控制台设备,通信波特率为 115200root=/dev/mtdblock2
:指定根文件系统所在的设备为mtdblock2
,mtd
代表内存技术设备,常用于闪存设备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 0
:sf
代表 SPI Flash,此命令用于探测 SPI Flash 设备,0
是设备编号sf read 0x82000000 0x1E00000 0x100000
:从 SPI Flash 的0x1E00000
地址处读取0x100000
字节的数据到内存的0x82000000
地址处setenv jpeg_addr 0x82000000
:设置环境变量jpeg_addr
为0x82000000
,表示 JPEG 图片的内存地址setenv jpeg_size 0x100000
:设置环境变量jpeg_size
为0x100000
,表示 JPEG 图片的大小setenv jpeg_emar_buf 0x82200000
:设置环境变量jpeg_emar_buf
为0x82200000
,代表 JPEG 解码的临时缓冲区地址setenv vobuf 0x90000000
:设置环境变量vobuf
为0x90000000
,表示视频输出缓冲区的地址decjpg 0
:调用 JPEG 解码程序对之前读取的 JPEG 图片进行解码,0
是解码参数startvo 0 32 10
:启动视频输出功能,0
、32
和10
是视频输出的相关参数startvl 0 0x90000000 1920 0 0 1920 1080
:启动视频层显示,0
是视频层编号,0x90000000
是视频缓冲区地址,1920
和1080
分别代表视频的宽度和高度,即分辨率为1080psf read 0x96000000 0x100000 0x400000
:从 SPI Flash 的0x100000
地址处读取0x400000
字节的数据到内存的0x96000000
地址处,这部分数据是 Linux 内核bootm 0x96000000
:启动内存中位于0x96000000
地址处的内核
显示开机logo的操作就到这里了~