RK3568用户自定义开机画面功能
RK方案中的开机画面处画逻辑
在RK的方案中,如RK1109,RK1126,RK3568这些嵌入式LINUX方案在开机画面的处理逻辑都是一致的.
用户的uboot,kernel开机画面都是同dts,kernel一起入在一个boot.img文件中的.
boot.img的文件结构,基本又同Android的boot文件结构类似,具体的文件结构,可以参考uboot,kernel中的对应的定义!
资源打包工具
在uboot中的tools目录下 u-boot\tools\rockchip 工具 resource_tool.c,即是资源打包工具!
具体的用户在BSP中可以参考 mkimg 这个脚本!
如,我们需要把 dtb, 开机画面等文件一起打包:
resource_tool test.dtb logo.bmp logo_kernel.bmp > /dev/null
执行完以后,在目录下得到 resource.img 这样一个文件!
再使用kernel中的 mkbootimg 脚本同kernel一起打包成 boot.img!
mkbootimg --kernel zImage --second resource.img -o boot.img
RK3568用户自定义开机画面功能
在RK方案中,用户的uboot,kernel开机画面都是同dts,kernel一起入在一个boot.img文件中的,
在嵌入式产品中,如果面对全包升级时,dts,kernel,图片文件等资源文件是一同升级的!在一些应用产品的应用场景上,
如客户要求的开机画面自定义,即比较难满足要求!
设计逻辑
1、在系统中添加一个专用的分区来放用户的资源文件,如开机画面等!
2、修改uboot中加载图片的代码,从专用的分区来加载图片文件!
添加资源文件分区
修改 parameter.txt 分区配置,在其中添加一个如,OEM的分区!,如我的分区位置:
0x00010000@0x00048000(oem)
修改uboot中的代码加载用户图片
这个分区规划在 1M~5M区间用来放用户的图片!
在uboot中把以上分区的代码通过emmc指令读到指定的内存,如:
emmc read 0x88000000 0x48800 0x2000
这样把用户的图片加载到了 0x88000000了,接下来修改uboot中的代码(rockchip_display.c)
参照 load_bmp_logo 修改加载的的位置方式,完成图片的加载方式!
系统应用层加添加用户修改图片的工具
1、把resource_tool编译一个板端版本!
2、用户上传一个bmp文件格式(要求小于4M,24bit图片);
3、调用resource_tool把用户上传的bmp文件生成resource.img文件;
4、使用dd命令把resource.img文件写到oem的特定分区(1~5MB分区位置);
通过以上手段即完成了,用户可以自定义用户图片了!