Skip to main content

X2600 提前初始化屏幕显示logo

一 概述

SPL(core0) 加载引导 RTOS(core0), RTOS(core0)同时进行加载kernel镜像和显示logo 任务, 二者均完成后返回SPL(core0), SPL(core0) 引导 kernel(core0)

本文以 PD_X2600E_VAST_V2.0 开发板为例进行说明。

本文用到linux和rtos代码,所以需要同时下载两份代码。

根据实际情况使用IConfigTool工具配置屏幕, linux和rtos的屏幕相关配置必须保持一致 (lcd设备、背光设备、供电)

二 Linux配置

本文以linux系统x2600e_vast_v20_nand_5.10_quickstart_defconfig为例。

2.1 uboot配置

SHARE_MEM_MB:预留给rtos系统来储存共享内存的大小,以兆字节为单位。rtos先初始化外设并将配置结构体写入共享内存 share_mem,linux 启动后直接读取接管(共享内存 share_mem 中的配置、帧内存、pwm背光配置等),避免linux系统启动时重复初始化显示设备。

QUICK_START:快启的宏定义开关,定义了就会spl先加载运行rtos镜像,再加载运行kernel镜像。

xy@vb:~/job/linux/testcode$ cat build/configs/x2600e_vast_v20_nand_5.10_quickstart_defconfig|grep uboot
APP_uboot_toolchain_dir=../tools/toolchains/mips-xburst2-gcc1210-glibc238
APP_uboot_dir=../bootloader/uboot-x2000 # spl的编译目录
APP_uboot_config=x2600e_base_uImage_quickstart_sfc_nand # spl的编译配置

查找/Linux工程目录/bootloader/uboot-x2000/boards.cfg内的x2600e_base_uImage_quickstart_sfc_nand:

x2600e_base_uImage_quickstart_sfc_nand		mips        xburst2     x2600_base            ingenic        x2600         x2600_base:SPL_SFC_NAND,MTD_SFCNAND,SPL_OS_BOOT,SPL_PARAMS_FIXER,X2600E_DDR,SHARE_MEM_MB=16,QUICK_START

2.2 IConfigTool配置

LCD外设配置(lcd复位引脚、背光控制引脚、电源控制引脚)

1

2

3

FrameBuffer驱动 选择lcd配置方式为 使用rtos相同配置

4

编译Linux系统:

/Linux工程目录/build$ make x2600e_vast_v20_nand_5.10_quickstart_defconfig
/Linux工程目录/build$ make

三 rtos配置

本文以rtos系统x2600e_vast_nand_quick_start_defconfig为例

rtos和linux的屏幕相关配置必须保持一致(lcd设备、背光设备)

同大核LCD型号相同的LCD驱动:

7

8

9

根据大核需求配置rtos的FrameBuffer驱动

10

11

jpeg硬件解码

12

修改完成配置后保存,在rtos工程目录/freertos/vendor/vendor.c中,修改代码如下:

#include <stdio.h>
#include "../example/driver/quick_boot_logo_and_load_split_uimage_example.c"
void vendor_init(void *arg)
{
printf("vendor init...\n");
quick_boot_logo_and_load_kernel(arg);
}

rtos加载完logo进入kernel例子,源码位于/rtos工程目录/freertos/example/driver/quick_boot_logo_and_load_split_uimage_example.c

logo图片位于/rtos工程目录/freertos/example/resource/test.jpeg,可替换,格式仅限jpeg

/******************************boot_logo******************************/
#include <driver/fb.h>
#include <driver/backlight.h>
#include <driver/irq.h>

#include <include_bin.h>
#include <jpegd_decoder.h>

// #define LCD_ROTATE

#ifdef LCD_ROTATE
INCBIN(jpeg_display, "example/resource/ingenic_logo_720p.jpeg");
#else
INCBIN(jpeg_display, "example/resource/ingenic_logo.jpeg"); //示例中存放开机logo图片位置,根据lcd驱动数据通路是否为rotator选择
#endif

static struct fb_info info;
static struct fb_handle *fb0_handle;

开发板为gpio背光, linux和rtos的背光设备需配置为gpio背光. 若需要pwm背光,可修改例子为pwm背光方式

14

编译rtos系统:

/rtos工程目录/freertos$ make x2600e_vast_nand_quick_start_defconfig
/rtos工程目录/freertos$ make

四 烧录

分区表配置如下, 在烧录工具分区内分配一块rtos分区:

15

rtos分区烧录/rtos工程目录/freertos/zero.bin文件, 烧录成功后板子上电显示logo后启动Linux。

16