Bootlogo使用说明


1. 概述

本文档主要讲解SSR931G Bootlogo的使用。

目前SSR931G使用的是开源的fwfs文件系统,此文件系统支持读写,比较容易跨平台移植,rtk、uboot和linux中都有支持,并且读取速度非常快,支持掉电保护以及有不错的写均衡机制,对于使用者来说也更加方便对屏参进行修改。

2. 基础配置

Bootlogo使用的是misc/config.ini这个配置文件,编译的时候会把project/board/m6p/SSC025A-S01A/config/config.ini拷贝进来,该文件主要配置了:1.显示LOGO的设备类型; 2.输出的timming; 3.m_sLogoFile0,m_sLogoFile1:LOGO的id所对应的jpeg文件等,详细介绍见2.3节。

2.1. Uboot

Nand flash使用mercury6p_demo_spinand_defconfig这个配置,在此配置上还需要手动打开如下配置信息:

CONFIG_CMD_BOOTLOGO=y

CONFIG_SSTAR_DISP=y

CONFIG_SSTAR_JPD=y

CONFIG_JPD_SW=y (软解)

CONFIG_JPD_HW=y (硬解)注意软硬解只能选择其中一种

CONFIG_FS_FIRMWAREFS=y (默认选择该FS)

CONFIG_SSTAR_INI_PARSER=y

路径如下图:

  • CONFIG_CMD_BOOTLOGO

  • CONFIG_SSTAR_DISP、CONFIG_SSTAR_JPD、CONFIG_JPD_SW、CONFIG_JPD_HW、CONFIG_SSTAR_HDMITX

  • CONFIG_SSTAR_INI_PARSER

  • CONFIG_FS_FIRMWAREFS

Nor flash目前没有默认config,但是也可以在mercury6p_demo_defconfig这个配置上,手动打开上述和spi nand同样的配置。

另外nand和nor还需要根据显示输出类型进行不同的配置,如下HDMI输出配置、VGA输出配置、CVBS输出配置等。

2.1.1. HDMI输出配置

CONFIG_SSTAR_DISP_HDMITX_VGA=y

CONFIG_SSTAR_HDMITX=y //这个宏的配置路径上面图片有体现

并且需要关掉CONFIG_SSTAR_PNL。(注意931无PNL配置,其他芯片PNL和HDMI是互斥的)

config.ini 参考如下:

[LOGO] 
m_eDeviceType = 2; #0 None, 1 LCD, 2 HDMI, 3 VGA 4 CVBS
m_sParaTarget = DACOUT_1080P_60                 
m_wDispWidth = 1920                             
m_wDispHeight = 1080                            
m_wDispFps = 60                                 
m_sLogoFile0 = sigmastar1024_600.jpg            
m_sLogoFile1 = upgrade.jpg

以上修改需要更新uboot和重启,完成后开机进uboot下通过如下cmd测试是否可以正常显示:

bootlogo [logo_id] [aspect ratio '0: zoom' '1: center' '2: usr'] [x] [y] [section_name]

此命令会带四个参数:

logo id → LOGO中打包的JPEG的数字索引。

aspect ratio → 显示logo的aspect ratio。0表示zoom,全屏显示;1表示center,居中显示;2表示user,用户设定起始点,点对点显示。

x,y → 若aspect ratio为user,x、y表示图片显示的起始点。

[section_name] → 用来区分两个LOGO,如:

SigmaStar # bootlogo 0 0 0 0 LOGO

2.1.2. VGA输出配置

Uboot menuconfig同HDMI配置。

config.ini需要修改为VGA type,例如:

[LOGO]                                          
m_eDeviceType = 3; #0 None, 1 LCD, 2 HDMI, 3 VGA
m_sParaTarget = DACOUT_1080P_60                 
m_wDispWidth = 1280                             
m_wDispHeight = 800                             
m_wDispFps = 60                                 
m_sLogoFile0 = sigmastar1024_600.jpg            
m_sLogoFile1 = upgrade.jpg

2.1.3. CVBS输出配置

Uboot menuconfig同HDMI配置。

config.ini需要修改为CVBS type,例如:

[LOGO]                                          
m_eDeviceType = 4; #0 None, 1 LCD, 2 HDMI, 3 VGA 4 CVBS
m_sParaTarget = DACOUT_1080P_60                 
m_wDispWidth = 720                             
m_wDispHeight = 480                             
m_wDispFps = 30                                 
m_sLogoFile0 = sigmastar720_480.jpg            
m_sLogoFile1 = upgrade.jpg

目录misc中的图片尺寸也要跟上面设定尺寸一致。

2.1.4. HDMI/VGA+CVBS同时输出配置

Uboot menuconfig同HDMI配置。

config.ini中增加LOGO1的配置参数。LOGO/LOGO1可以任意定义显示HDMI/VGA,还是CVBS [LOGO]。

[LOGO]
m_eDeviceType = 4; #0 None, 1 LCD, 2 HDMI, 3 VGA
m_sParaTarget = DACOUT_1080P_60
m_wDevId = 0
m_wDispWidth = 720
m_wDispHeight = 576
m_wDispFps = 25
m_sLogoFile0 = sigmastar720_576.jpg
m_sLogoFile1 = upgrade.jpg

[LOGO1]
m_eDeviceType = 3; #0 None, 1 LCD, 2 HDMI, 3 VGA
m_sParaTarget = DACOUT_1080P_60
m_wDevId = 1
m_wDispWidth = 1920
m_wDispHeight = 1080
m_wDispFps = 60
m_sLogoFile0 = sigmastar1024_600.jpg
m_sLogoFile1 = upgrade.jpg

bootcmd需要增加bootlogo cmd参数 [section_name]用来区分两个LOGO:

bootlogo [logo_id] [aspect ratio '0: zoom' '1: center' '2: usr'] [x] [y] [section_name]

如:

bootcmd=bootlogo 0 0 0 0 LOGO;bootlogo 0 0 0 0 LOGO1;

可自行在image\configs\m6\script_nand.mk中修改自动增加LOGO1的bootcmd。

@echo setenv bootcmd \' $(if $(findstring misc,$(IMAGE_LIST)),bootlogo 0 0 0 0 LOGO\;) 
$(if $(findstring misc,$(IMAGE_LIST)),bootlogo 0 0 0 0 LOGO1\;) $(kernel$(BOOTCMD)) 
$(rootfs$(BOOTCMD)) bootm $(KERNELBOOTADDR)\;$(kernel$(BOOTREC)) $(rootfs$(BOOTREC)) bootm 
$(KERNELBOOTADDR) >> $(SCRIPTDIR)/set_config

Nor flash与上述操作一致,使用mercury6p_demo_defconfig这个config。

2.2. Kernel

通过make menuconfig打开FUSE:

以上设置完成并升级后可以看到board misc路径下有如下文件:

默认情况下spi nand用的是mercury6p_ssc025a_s01a_demo_spinand_defconfig,该选项默认打开状态。

2.3. project

  1. 需要注意config.ini的打包配置,config.ini实际对应代码里面project\board\m6p\SSC025A-S01A\config\config.ini,所有对LOGO显示的配置都集中在INI的"LOGO"的section中:

    [LOGO]                                      
    m_eDeviceType = 2; #0 None, 1 LCD, 2 HDMI, 3 VGA,  4 CVBS
    m_sParaTarget = SAT070AT50H18BH                   
    m_wDevId = 0;                                     
    m_wDispWidth = 1920                               
    m_wDispHeight = 1080                              
    m_wDispFps = 60              
    m_sLogoFile0 = sigmastar1024_600.jpg
    m_sLogoFile1 = upgrade.jpg   
    m_sPQFile0 = PQ.bin
    

    m_eDeviceType:表示需要显示LOGO的设备类型。

    m_sParaTarget:显示的屏参section索引,只有LOGO设备类型为LCD时才会生效。

    m_wDispWidth,m_wDispHeight,m_wDispFps:当显示设备为非LCD类型时,这些参数才有意义,表示的是HDMI/VGA输出的timming。

    m_sLogoFile0,m_sLogoFile1:LOGO的id所对应的jpeg文件。

    INI文件修改完成后重启生效。

  2. 添加bootlogo cmd到boot env

    Project\image\script.mk中:

    @echo setenv bootcmd \’ dcache on \; $(if $(findstring misc,$(IMAGE_LIST)),bootlogo 0 0 0 0 LOGO\;) $(kernel$(BOOTCMD)) $(rootfs$(BOOTCMD))
    
  3. Project/image/configs/general/spinand.squashfs.partition.config

    由于打开bootlogo相关配置,导致uboot变大,可能会超过原本设定的分区大小,所以要适当加大下uboot分区比如:

    misc 默认分区类型为fwfs,config.ini为只读模式,可以修改成RW方式。

    misc$(RESOUCE) = $(OUTPUTDIR)/misc
    misc$(FSTYPE) = fwfs
    misc$(PATSIZE) = 0x100000
    misc$(PATNAME) = MISC
    misc$(MOUNTTG) = /misc
    misc$(OPTIONS) = rw
    misc$(MOUNTPT) = /dev/mtd6
    misc$(MTDPART) = $(misc$(PATSIZE))(MISC)
    misc$(OTABLK) = /dev/mtd6
    

3. 其它设置

3.1. 分配bootlogo使用的buffer size

以上配置设置好了之后,烧写image,断电上电,按住enter键进入uboot,先printenv检查bootargs,需要手动在原有的bootargs基础上加入bootlogo所用到的logo图片显示buffer,默认的LX_MEM=0x80000000,建议在内存最后位置来分配bootlogo所需要的buffer size,目前测试时候是分配了2M,即如下:

mmap_reserved=fb,miu=0,sz=0x200000,max_start_off=0x7FE00000,max_end_off=0x80000000

设置完成之后,saveenv保存。例如:

setenv bootargs ubi.mtd=ubia,2048 root=/dev/mtdblock5 rootfstype=squashfs ro init=/linuxrc LX_MEM=0x80000000 mma_heap=mma_heap_name0,miu=0,sz=0x40000000 mma_heap=mma_heap_fb,miu=0,sz=0x1000000 mma_memblock_remove=0 mmap_reserved=fb,miu=0,sz=0x200000,max_start_off=0x7FE00000,max_end_off=0x80000000 cma=2M@0x1004000000 mtdparts=nand0:1664k@1280k(BOOT),1664k(BOOT_BAK),256k(ENV),5m(KERNEL),5m(RECOVERY),6m(rootfs),1m(MISC),108800k(ubia)

然后可以手动开启icahe和dcahe来加快显示速度,即输入命令:

icahe on; dcahe on

最后输入bootlogo指令进行显示即可:

bootlogo 0 0 0 0 LOGO

3.2. 升级UI显示

在uboot中需要打开 SSTAR UPGRADE UI,此命令依赖于SSTAR RGN、SSTAR DISP。

也可通过bootlogo cmd测试。

Uboot修改后请重新编译后手动Release更新后的u-boot_spinand.xz.img.bin到project/board/m6p/boot/spinand/uboot对应板子的路径下,更名为u-boot_demo_spinand.xz.img.bin再到project下重新make image打包烧录。