Skip to main content

AD100快速启动

一 概述

AD100 的快速启动⽅案使⽤ spl + rtos + kernel + app, 即通过 spl 加载 rtos, 然后 rtos 去解压kernel, 初始化 lcd, 显⽰ logo, 等这三个任务完成后, 就会回到spl,然后启动 kernel, kernel 启动才会去启动 app. 这⾥的 lcd 初始化完成后, 在 kernel 阶段就不会再次初始化, 减少驱动安装的时间.

二 配置及编译

根据实际情况使用IConfigTool工具配置lcd, linux和rtos的屏幕相关配置必须保持一致 (lcd设备、背光设备),fb驱动与默认背光亮度继承rtos

2.1 spl配置

以配置文件ad100_evb_v10_nor_quickstart_lcd_5.10_defconfig为例

uboot配置

bhu@bhu-PC:~/work/build$ grep -nr "uboot"  configs/ad100_evb_v10_nor_quickstart_lcd_5.10_defconfig
3:APP_uboot_toolchain_dir=../tools/toolchains/mips-gcc720-glibc229
4:APP_uboot_dir=../bootloader/uboot-x2000
5:APP_uboot_config=ad100_uImage_quickstart_sfc_nor_lcd //需要快速启动,uboot的默认配置

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

ad100_uImage_quickstart_sfc_nor_lcd        mips     xburst2    ad100_base       ingenic    ad100   ad100_base:AD100N_DDR,SPL_SFC_NOR,ENV_IS_IN_SFC,MTD_SFCNOR,SPL_PARAMS_FIXER,SPL_OS_BOOT,NOR_SPL_BOOT_OS,LCD_MEM_MB=4,QUICK_START,LPJ="11935744"

LCD_MEM_MB的值是屏幕显示需要的内存, 计算方法:

lcd为720p的屏幕, 并且fb只配置一层, 然后为1个buffer时

720 ×1280 × 4 = 3686400 (lcd的内存是按ARGB的32位申请的,因此需要乘4) + 2k lcd描述符

2.2 rtos配置

以配置文件ad100_evb_v10_quick_start_lcd_nor_defconfig为例

linux接管rtos_lcd内存, 继承rtos fb配置

8

4

9

如上⾯linux分配的LCD_MEM_MB=4, 则对应的值为 0x400000. 固件加载的地址计算公式为:0x80000000 + ddr_size - rtos_size

ad100 的 ddr_size 为 64MB, 则固件加载的地址为 0x80000000 + 0x4000000 - 0x400000 =0x83c00000

U-Boot SPL 2013.07-00182-g5235b9cb0 (Jun 26 2024 - 15:47:44)
V1.0.0 <2024/06/25>
ERROR EPC 80019ef8
CPA_CPAPCR:0320490d
CPM_CPMPCR:0320490d
CPM_CPEPCR:0190510d
CPM_CPCCR:9a073310
DDR clk rate 600000000
DDR: M14F5121632A type is : DDR2
DDR_PAR of eFuse: 00000000 00000000
AD100 InnoPhy skew Settings...
GD25B512ME 00c8471a 00c8471a
[0.000085] gpio: VDDIO_SD(PD00~PD05) = 3.3V
[0.000252] pwm clk rate 400000000
[0.002043] lcd_mem left 0x7a000 bytes //LCD_MEM剩余内存
[0.002438] sfc_nor: find chip:GD25B512ME id:0xc8471a
[0.002658] vendor init...
[0.002776] get logo partition information fail!
[0.002938] now use default logo

背光配置

9

修改完成配置后保存.

在/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系统:

bhu@bhu-PC:~/rtos/freertos$ source build/envsetup.sh
bhu@bhu-PC:~/rtos/freertos$ make ad100_evb_v10_quick_start_lcd_nor_defconfig
bhu@bhu-PC:~/rtos/freertos$ make

2.3 linux 配置

1

2

pwm背光值继承rtos, 配置需要和rtos保持一致

3

编译Linux系统:

bhu@bhu-PC:~/ad100/build$ make ad100_evb_v10_nor_quickstart_lcd_5.10_defconfig
bhu@bhu-PC:~/ad100/build$ make

三 烧录

本开发板nor flash为64MB, 根据flash大小自行调节分区大小

7

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

5

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

6