跳转至

Bootlogo使用指南


1. 概述

bootlogo是开机时显示的画面,可以显示在各种LCD屏上,包括TTL,BT656,SRGB,也可以显示在MIPI屏幕上。

本文将介绍bootlogo如何配置与使用。


2. 编译配置选项

cd boot
make menuconfig
Command line interface ---> Sgs common commands ---> bootlogo

2.2 分区选择

ARM architecture ----> Sgs arch features support

logo partition name: 该分区存放图片和屏参(config.json)。

2.3 开启驱动

2.3.1 PWM

如果背光需要用PWM控制,那么需要开启PWM驱动

Sgs drivers ----> Sgs PWM

2.3.2 CJSON 解析器

Sgs drivers ----> Sgs CJSON FILE PARSER

2.3.3 开启 camdriver 模块

Sgs drivers----> Sgs camdriver ----> Sgs DISP driver
Sgs drivers ----> Sgs camdriver ----> Sgs JPD driver

如果使用gop显示,那么需要开启

Sgs drivers ----> Sgs camdriver ----> Sgs RGN driver

2.4 文件系统

File systems ----> Support Firmware FileSystem

如果存储介质使用的是emmc,需把Use firmwarefs on emmc/sdcard device也选中,否则不可选中。

cd project
make menuconfig
Misc options ----> BOOTLOGO----> Support BOOTLOGO


3. Logo 预留 buffer

该buffer用于bootlogo显示,如果kernel没有操作或者释放这段地址,那么将一直维持显示。

project/configs/verify/defconfigs/$(project_defconfig)

"CONFIG_LOGO_MEM_SIZE":logo显示存放的地址配置大小

上述设定完成后,可在烧录完成的板端查看对应的uboot环境变量。如下图所示:


4. Padmux

屏幕点屏需要设置padmux

boot/arch/arm/dts/$(boardname)-padmux.dtsi

例如需要点TTL屏,那么只需要将#if 0更改为#if 1,如下图所示


project/board/ini/misc/$(logo_name)

若想将图片默认放进misc分区,可以修改如下位置:

project/image/packaging/common/misc.mk

也可以在板子启动后将图片copy到misc分区。


相关文件路径:

project\board\$(chip)\screen_param\config_disp.json
project\board\$(chip)\$(boardname)\config\config_board.json

config_disp.json存放屏参,config_board.json指定bootlogo显示的屏参、屏幕类型等。config_disp.json和config_board.json具体描述请参考:屏参使用指南

下面描述config_board.json中和bootlogo相关的节点。如下图所示,bootlogo节点包含backlight和logo_file两个子节点:backlight描述背光信息,logo_file描述logo图片路径信息。此外,config_board.json中还有和bootlogo同级的dev_property节点,用于指定bootlogo显示的接口类型和屏参,详见下文。

  • backlight

    参数 描述
    power_gpio power pin 的 gpio id
    power_gpio_value power pin level
    0: gpio active low
    1: gpio active high
    power_gpio_up_delay 上电后延时时间,单位 ms
    power_gpio_down_delay 下电前延时时间,单位 ms
    reset_gpio reset pin 的 gpio id
    reset_gpio_value reset pin level
    0: gpio active low
    1: gpio active high
    reset_gpio_up_delay 上电后延时时间,单位 ms
    reset_gpio_down_delay 下电前延时时间,单位 ms
    backlight_gpio backlight pin 的 gpio id
    backlight_gpio_value backlight pin level
    0: gpio active low
    1: gpio active high
    backlight_gpio_up_delay 开背光后延时时间,单位 ms
    backlight_gpio_down_delay 关背光前延时时间,单位 ms
    pwm_channel PWM 通道
    pwm_period PWM 周期,单位是 ns
    backlight_percent 背光亮度百分比,范围 [0, 100],默认 100

    注:backlight gpio是为不需要PWM控制背光预留的,可以通过拉gpio pin开启背光。

    如果使用PWM配置背光,除了配置pwm_channel、pwm_period、backlight_percent,还需配置uboot的PWM padmux。PWM config必须开启:PWM config

    PWM channel 查询方法请参考PWM使用参考

    如果有特殊的上下电时序,请结合MIPIDSI接口特有参数

    上电时按 power_gpio -> reset_gpio -> backlight_gpio 的顺序依次拉电平,每个 pin 拉到指定 value 后等待对应的 up_delay;下电时反向操作并等待 down_delay。未配置的 gpio pin 不操作,未配置的 delay 视为 0。

    配置示例(使用 power gpio 上电 + PWM 控制背光亮度):

    "backlight": [
        {
            "power_gpio": 132,
            "power_gpio_value": 1,
            "power_gpio_up_delay": 10,
            "pwm_channel": 4,
            "pwm_period": 100000,
            "backlight_percent": 80
        }
    ]
    

    上面示例中 power_gpio = 132 拉高后延时 10ms 完成上电,pwm_period = 100000 表示周期为 100000 ns(即 10kHz),backlight_percent = 80 表示占空比 80%。若不需要某个 gpio 或延时,省略对应参数即可。

  • logo_file

    logo_file 是一个 JSON 数组,每个数组元素是一个对象,包含参数 logo_file_name,描述 logo 图片的存放路径。

    参数 描述
    logo_file_name logo 图片的存放路径

    数组元素的下标即为该 logo 对应的 logo_id:第 1 个元素 logo_id 为 0,第 2 个元素 logo_id 为 1,以此类推。启动时可通过 bootlogo <logo_id> 命令选择显示哪一张,logo_id 参数说明见bootlogo命令介绍

    配置示例(单张 logo):

    "logo_file": [
        {
            "logo_file_name": "logo.jpg"
        }
    ]
    

    配置示例(多张 logo):

    "logo_file": [
        {
            "logo_file_name": "logo.jpg"
        },
        {
            "logo_file_name": "logo_backup.jpg"
        }
    ]
    

    logo 图片默认存放路径与打包方式见logo存放位置

    修改 logo 最大数量

    logo_file 数组支持的最大元素个数由宏 MAX_LOGO_FILE_NUM 限定(默认值为 2):

    boot/cmd/sgs/include/bootlogo_common.h
    #define MAX_LOGO_FILE_NUM (2)
    
    • 若数组元素个数超过 MAX_LOGO_FILE_NUM,超出部分不会被加载。
    • bootlogo <logo_id> 指定的 logo_id 大于等于 MAX_LOGO_FILE_NUM,将报越界错误,无法显示。

    如需支持更多 logo,将 MAX_LOGO_FILE_NUM 修改为目标值后重新编译 uboot 即可。

  • dev_property

    dev_property 是 config_board.json 中和 bootlogo 同级的节点,用于指定 bootlogo 显示使用的接口类型和屏参。当需要更换不同 interface(如 TTL 换成 MIPIDSI)显示 bootlogo 时,修改 device_type 和 panel_name 即可。

    参数 描述
    device_type 屏幕类型(接口类型),bootlogo 使用
    取值:TTL/BT656/SRGB/MCU/MCU_NOFLM/MIPIDSI
    panel_name 屏参名称,即 config_disp.json 中对应屏参的 section 名,其接口类型需与 device_type 一致
    dev_id device id
    rotate 旋转角度,bootlogo 使用
    0:0°
    90:90°
    180:180°
    270:270°

    更换 interface 的步骤:

    1. 确认目标接口对应的屏参已存在(section 名,如 RM68200_LX50HDH40145)。
    2. 将 device_type 改为目标接口类型(如 TTL 改为 MIPIDSI),panel_name 改为对应屏参的 section 名。device_type 与 panel_name 对应同一份屏参即可。
    3. 在板子上直接修改 config.json 对应内容后生效。

    配置示例(以 MIPIDSI 屏为例):

    "dev_property": [
        {
            "device_type": "MIPIDSI",
            "panel_name": "RM68200_LX50HDH40145",
            "dev_id": 0,
            "rotate": 0
        }
    ]
    

bootlogo [logo_id] [aspect_ratio] [x] [y] [device_id]

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

device_id   : device ID. default is 0

示例:

bootlogo             // 不带参,默认参数全为0

bootlogo 1           // logo选择第二张显示,其他参数默认0

bootlogo 0 1         // logo选择第一张,图像比例居中

bootlogo 0 2 1 1     // logo选择第一张,图像从(1,1)开始显示

bootlogo 0 0 0 0 0   // device id为0

注:aspect ratio功能需要输入图片的size小于屏幕输出的size,才能正常使用。本芯片只有一路device,device_id只能填0。

8. 升级画面命令介绍

8.1 升级画面命令

注:升级画面显示需开启GOP配置,开启配置参考open camdriver module

disp_ui_update [percentage/success/fail] [device_id]

percentage: percentage. range [0, 100]

device_id : device ID. default is 0

示例:

disp_ui_update 10      // 进度条为10%

disp_ui_update success // 升级成功

disp_ui_update fail    // 升级失败

8.2 画UI的单独命令

disp_ui bar [percentage] [bar_color] [text_color] [bg_color] [device_id]

bar       : 画进度条

percentage: percentage. range [0, 100]

bar_color : show bar color. fmt is rgb(bit[23, 0]). default is green

text_color: show text color. default is white

bg_color  : show bar background. default is blue

device_id : device ID. default is 0

示例:

disp_ui bar 10                            // 进度条为10%

disp_ui bar 10 0xff00                     // 10%的进度条颜色为绿色

disp_ui bar 10 0xff00 0xffffff            // 10%的进度条颜色为绿色,10%字符为白色

disp_ui bar 10 0xff00 0xffffff 0xffffff   // 进度条背景色为白色,10%的进度条颜色为绿色,10%字符为白色

disp_ui bar 10 0xff00 0xffffff 0xffffff 0 // device id为0
disp_ui msg [text] [x] [y] [text_color] [bg_color] [device_id]

msg       : 画字符

text      : ascii text. default is blank

x         : show text horizontal start. default is 0

y         : show text vertical start. default is 0

text_color: show text color. default is white

bg_color  : show bar background. default is blue

device_id : device ID. default is 0

示例:

disp_ui msg update                 \\ 画字符"update",默认从(0,0)开始画

disp_ui msg update 1 1              \\ 从(1,1)开始画字符"update"

disp_ui msg update 1 1 0xffffff      \\ 字符颜色为白色

disp_ui msg update 1 1 0x0 0xffffff  \\ 字符颜色黑色,背景颜色白色

disp_ui msg update 1 1 0x0 0xffffff 0 \\ device id为0
disp_ui blank [x] [y] [w] [h] [BlankColor] [device_id]

blank     : 擦除

x         : erase horizontal start. default is 0

y         : erase vertical start. default is 0

w         : erase the length. default is 0

h         : erase the width. default is 0

BlankColor: erase the color. default is blue

device_id : device ID. default is 0

示例:

disp_ui blank 1 1 10 10 \\ 擦除起点(1,1)宽高为10的面积,颜色为蓝色

disp_ui blank 1 1 10 10 0xffffff \\ 擦除颜色为黑色

disp_ui blank 1 1 10 10 0xffffff 0 \\ device id为0