SSU_BOOTLOGO使用说明


1. 概述

Bootlogo是设备启动时,屏幕输出的logo图像,一般用于展示客户的品牌标志,或在设备升级时用于显示设备的状态。Bootlogo可以显示在各种屏幕上,包括TTL屏、MIPIDSI屏、LVDS屏等。 pic

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