2. 开机画面使用指南¶
此指南用以说明如何在uboot及alios下,显示出开机画面。
3. uboot¶
uboot提供以下功能:
提供boot环境下VO设备的开关,包含VO不同接口和时序。
提供boot环境下VL视频层的开关。
提供boot环境下VO设备背景色的设置。
VL视频层默认格式为YUV420 PLANAR。
3.1. uboot命令¶
- startvo:启动VO设备
参数:设备号,接口型别,时序。
<dev> 设备号,请参考 图表1-1
<intf-type> 接口型别,请参考 图表1-1
<timing> 时序
<> MIPI_TX、LVDS、I80不参考时序变量,会根据目前对应driver来设置时序
CV181X上的标准时序如下:
2(1080P24), 3(1080P25), 4(1080P30), 5(720P50) , 6(720P60) , 7(1080P50) , 8(1080P60), 9(576P50), 10(480P60), 11(800x600)
- stopvo:关闭VO设备
参数:设备号
<dev> 设备号,请参考 图表1-1
- startvl:启动VL视频层
参数:视频层号,图文件地址,视频地址,图文件大小,VO对齐
<layer> 视频层号,请参考 图表1-1
<addr_in> 图文件地址
<addr_out> 视频地址
<size> 图档大小
<alignment> VO对齐
- stopvl:关闭VL视频层
参数:视频层号
<layer> 视频层号,请参考 图表1-1
- setvobg:设定VO设备背景色
参数:设备号,背景色
<dev> 设备号,请参考 图表1-1
<bgcolor> 背景色 (10bit RGB排列,bit[29:20]为R,bit[19:10]为G,bit[9:0]为B)
图表 1-1
处理器类型 |
设备 |
视频层 |
图形层 |
接口类别 |
---|---|---|---|---|
CV181X |
[0] |
[0] |
[0] |
64(BT.1120), 1024(LCD_18BIT), 2048(LCD_24BIT), 4096(LCD_30BIT), 8192(MIPI_TX), 65536(I80) |
图表 1-2
处理器类型 |
视频层最大分辨率 |
图形层最大分辨率 |
---|---|---|
CV181X |
1280x720 |
1280x720 |
3.2. uboot函数相关代码¶
cmd/Makefile
cmd/cvi_vo.c
drivers/video/Makefile
drivers/video/cvitek/ (包含以下子目录)
include/cvi_disp.h
include/cvi_mipi.h
include/cvi_lvds.h
include/cvi_i80.h
include/cvi_panels/ (包含以下子目录)
3.3. uboot命令范例¶
以下以CV181X处理器操作,配置设备DHD的时序MIPI_TX 720*1080@60输出为例。
<> 各DDR放置图片地址不同,请根据处理器来使用DDR地址。
把JPEG档载入到内存
fatload mmc 1:1 0x84080000 logo.jpg
解码JPEG到内存(cvi_jpeg jpg_buf_addr dest_buf_addr jpg_size)
cvi_jpeg 0x84080000 0x82080000 0x80000
DHD0设备启动
startvo 0 8192 0 (MIPI_TX) startvo 0 1024 0 (单路6bit LVDS) startvo 0 2048 0 (单路8bit LVDS) startvo 0 4096 0 (单路10bit LVDS,暂不支持) startvo 0 65536 0 (I80)
VL视频层启动
startvl 0 0x84080000 0x82080000 0x80000 16
设置VO背景色为黑色
setvobg 0 0x00000000
VL视频层关闭
Stopvl 0
DHD0设备关闭
Stopvo 0
3.4. 使用储存装置并启用开机画面¶
将开机图档 logo.jpg (I80屏需要BMP格式图文件)拷贝至$ BOOTLOGO_PATH(默认为/build/tools/common/bootlogo/logo.jpg)
修改build/boards/cv18xx/cv18xx_defconfig配置所需的屏为y,其他需注释掉。
修改build/boards/cv18xx/u-boot/cv18xx_defconfig配置所需的屏接口为y,其他需注释掉,并且配置CONFIG_BOOTLOGO为y。
使用下列命令编译BSP。
export ENABLE_BOOTLOGO=1; source build/envsetup_soc.sh Build_all
3.5. 注意事项¶
配置开机画面,通过BT.1120/656接口显示时,外接处理器的驱动需自行移植实现。
如果开机画面使用的是MIPI_TX、LVDS或I80接口时,若有不支持的mipi_dsi、lvds或者i80 panel,可参考include/cvi_panels内的headers,新增相对应的header。只要按include/cvi_panels/cvi_panels.h参照其他panel修改即可对应不同的mipi_dsi、lvds或i80 panel。
使用储存装置并储存开机画面时,需于 CV181x_asic.dtsi 配置一块内存空间(默认为0x82080000),并确保u-boot/include/configs/CV181x-asic.h中的 LOGO_RESERVED_ADDR 设置为同样内存空间。
4. alios¶
alios开机画面目前仅支持MIPI_DSI接口,提供同linux一致的mipi_tx_xx接口(可参考Screen_Docking_Guide.pdf的MIPI_DSI章节)。用户通过在solution中调用这些接口实现VO设备的初始化。
4.1. panel添加及初始化¶
在mars_alios/solutions/helloworld/package.yaml中添加config选项并开启如:
CONFIG_PANEL_HX8394: 1
在mars_alios/components/cvi_mmf_sdk/cvi_middleware/include/panel下添加panel的header,可参考Screen_Docking_Guide.pdf或已支持panel实现combo_dev_cfg_s等数据结构。
在mars_alios/components/cvi_mmf_sdk/cvi_middleware/include/panel/dsi_panels.h中实现新panel的panel_desc_s结构体。
如需使用reset、power、backligt功能,需自行添加gpio相关信息如:
#define VO_GPIO_POWER_PORT 5 #define VO_GPIO_POWER_INDEX 2
在solution代码中引用dsi_panels.h头文件拿到panel_desc_s及gpio信息。
并调用csi_gpio_xx()接口设置供电,背光,复位。如:
csi_gpio_t gpio = {0}; csi_gpio_init(&gpio, VO_GPIO_POWER_PORT); csi_gpio_dir(&gpio, (1 << VO_GPIO_POWER_INDEX), GPIO_DIRECTION_OUTPUT); csi_gpio_write(&gpio, (1 << VO_GPIO_POWER_INDEX), 1);
调用mipi_tx_init()、mipi_tx_cfg()、mipi_tx_set_hs_settle()、mipi_tx_enable()初始化mipi_tx设备,如需发送dcs cmd还需调用mipi_tx_send_cmd()。
4.2. 启用开机画面¶
将开机图档 logo.jpg 拷贝至build/tools/common/bootlogo/logo.jpg,编译SDK。
在solution代码中,构建VDEC_STREAM_S结构体,并指定pu8Addr等于宏CVIMMAP_BOOTLOGO_ADDR,该地址保存着logo.jpg数据。
调用CVI_VB_Init()初始化VB。
初始化VDEC设备(可参考MediaProcessingSoftwareDevelopmentReference_zh.pdf第八章)。
调用CVI_VDEC_SendStream()将jpeg数据送VDEC解码。
调用CVI_VDEC_GetFrame()获取解码完成的VIDEO_FRAME_INFO_S结构体。
调用CVI_VO_SendLogoFromIon()送显,该接口目前仅支持NV21格式。