SSU_BOOTLOGO使用说明
1. 概述¶
Bootlogo是设备启动时,屏幕输出的logo图像,一般用于展示客户的品牌标志,或在设备升级时用于显示设备的状态。Bootlogo可以显示在各种屏幕上,包括TTL屏、MIPIDSI屏、LVDS屏等。
2. Menuconfig配置¶
1、open bootlogo
Command line interface ---> SigmaStar Common commands ---> bootlogo

2、open mhal driver
SigmaStar drivers ---> Sigmastar camdriver ---> Sigmastar DISP driver SigmaStar drivers ---> Sigmastar camdriver ---> Sigmastar JPD driver
如将bootlogo在GOP显示则打开Sigmastar RGN driver,否则为MOP显示。JPD mode可以修改为JPD_HW使用硬件解码,但是使用JPD_HW时必须关闭RGN,因为硬件解码输出格式为YUV,而GOP只支持ARGB格式显示。

3、open pwm & cjson parser
SigmaStar drivers ---> Sigmastar PWM SigmaStar drivers ---> Sigmastar CJSON FILE PARSER

4、modify file system configuration
File systems ---> Support Firmware FileSystem
如果存储介质使用的是emmc,需把Use firmwarefs on emmc/sdcard device也选中,否则不可选中。

5、modify file partition
ARM architecture ---> SigmaStar arch features support ---> logo patition name
修改logo patition name为"MISC"

3. DTS配置¶
select device tree
Device Tree Control ---> Default Device Tree for DT control
修改为自己板子对应的设备树

点屏的dts配置与kernel下是一样的,可以参考《SSU_点屏参考》配置来选择对应的屏参。
prefer = <1>表示该device是最高优先级,优先使用;若要优先使用DISP1,则将prefer = <1>移到disp1。prefer = <1>关键字只能被一个device拥有,接多个屏时,后续的屏默认使用次优先级的device,比如最高优先级设为DSIP0,优先级顺序为DISP0 → DISP1;若最高优先级设为DSIP1,则优先级顺序为DISP1 → DISP0。

4. JSON文件配置¶
Alkaid默认将以下文件打包到了misc分区
project/board/ini/misc/logo_configuration.json project/board/ini/misc/sigmastar1024_600.jpg project/board/ini/misc/upgrade.jpg
logo_configuration.json中需要关注以下参数

分别是disp0和disp1的旋转参数、PQ文件路径以及logo_id对应的logo文件路径。
rotate取值为0:不旋转;1:90°;2:180°;3:270°
5. MMAP配置¶
Alkaid project config下默认reserved了一块8MB大小的物理内存给bootlogo使用,此块内存将在kernel下drm第一次做commit时释放还给kernel。

如8MB不够使用,可以对size以及start end地址做调整,但是需要确保不会和其他reserved的地址重叠。建议使用物理内存末尾的地址,否则容易出现踩内存问题。
6. 使用示例¶
bootlogo参数说明:
"bootlogo [logo_id] [aspect ratio] [x] [y]" logo_id: image id. default is 0 aspect_ratio: 0: zoom, 1: center, 2: usr. default is 0 x: show horizontal start. it's valid when aspect_ratio is 2. default is 0 y: show vertical start. it's valid when aspect_ratio is 2. default is 0 Example: bootlogo bootlogo 1 bootlogo 0 0 bootlogo 0 1 bootlogo 0 2 32 64 Note: bootlogo inner flow: disp_init -> disp_decode -> disp_inject
我们可以将bootlogo命令加到bootcmd的最开头,这样在每次启动的时候都会运行bootlogo,举例:
setenv bootcmd 'bootlogo 0 0 0 0;dcache on ; nand read.e 0x23000000 KERNEL ${kernel_file_size}; nand read.e 0x26D00000 DTB ${dtb_file_size}; bootm 0x23000000 - 0x26D00000; dcache on ;nand read.e 0x23000000 RECOVERY ${recovery_file_size}; bootm 0x23000000' saveenv reset
