Bootlogo使用指南¶
1. 概述¶
bootlogo是开机时显示的画面,可以显示在各种LCD屏上,包括TTL,BT656,SRGB,也可以显示在MIPI屏幕上。
本文将介绍bootlogo如何配置与使用。

2. 编译配置选项¶
2.1 开启 bootlogo¶

2.2 分区选择¶

logo partition name: 该分区存放图片和屏参(config.json)。
2.3 开启驱动¶
2.3.1 PWM¶
如果背光需要用PWM控制,那么需要开启PWM驱动

2.3.2 CJSON 解析器¶

2.3.3 开启 camdriver 模块¶
Sgs drivers----> Sgs camdriver ----> Sgs DISP driver
Sgs drivers ----> Sgs camdriver ----> Sgs JPD driver
如果使用gop显示,那么需要开启

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

2.5 Bootlogo 所需文件¶

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

"CONFIG_LOGO_MEM_SIZE":logo显示存放的地址配置大小
上述设定完成后,可在烧录完成的板端查看对应的uboot环境变量。如下图所示:

4. Padmux¶
屏幕点屏需要设置padmux
例如需要点TTL屏,那么只需要将#if 0更改为#if 1,如下图所示

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

也可以在板子启动后将图片copy到misc分区。
6. Bootlogo屏参配置¶
相关文件路径:
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 highpower_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 highreset_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 highbacklight_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/MIPIDSIpanel_name 屏参名称,即 config_disp.json 中对应屏参的 section 名,其接口类型需与 device_type 一致 dev_id device id rotate 旋转角度,bootlogo 使用
0:0°
90:90°
180:180°
270:270°更换 interface 的步骤:
- 确认目标接口对应的屏参已存在(section 名,如
RM68200_LX50HDH40145)。 - 将 device_type 改为目标接口类型(如 TTL 改为 MIPIDSI),panel_name 改为对应屏参的 section 名。device_type 与 panel_name 对应同一份屏参即可。
- 在板子上直接修改 config.json 对应内容后生效。
配置示例(以 MIPIDSI 屏为例):
"dev_property": [ { "device_type": "MIPIDSI", "panel_name": "RM68200_LX50HDH40145", "dev_id": 0, "rotate": 0 } ] - 确认目标接口对应的屏参已存在(section 名,如
7. Bootlogo命令介绍¶
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