1.前言
本文主要就Hi3556v200的U-boot+Liteos方案的编译流程做简要介绍,主要通过make过程的打印来逐步理清编译的过程,本文主要结合编译的打印信息介绍u-boot-hi3556v200.bin的编译过程。编译过程中会调用osdrv_mem_cfg.sh脚本来进行内存地址配置。
U-boot版本:u-boot-2016.11
2. osdrv_mem_cfg.sh脚本说明
位于osdrv/osdrv_mem_cfg.sh,它会根据芯片类型的不同来配置不同的地址,并对相关头文件进行修改,修改后的头文件,将在编译时使用
主要涉及如下几个地址的修改:
2.1 uboot
修改的文件为./opensource/uboot/u-boot-2016.11/include/configs/${CHIP}.h
-
CONFIG_SYS_TEXT_BASE = $UBOOT_TEXT_BASE
替换UBOOT的text基地址
UBOOT_TEXT_BASE=0x80800000 -
#define CFG_BOOT_PARAMS ($UBOOT_TEXT_BASE - 0x100)
替换CFG_BOOT_PARAMS 宏的定义 -
#define PHYS_SDRAM_1_SIZE $UBOOT_CFG_DDR_SIZE
替换SDRAM的size
UBOOT_CFG_DDR_SIZE=0x8000000
2.2 miniuboot
修改的文件为./opensource/uboot/mini-boot-2016.11/include/configs/${CHIP}.h
-
CONFIG_SYS_TEXT_BASE = $UBOOT_TEXT_BASE
替换UBOOT的text基地址
UBOOT_TEXT_BASE=0x80800000 -
#define CFG_BOOT_PARAMS ($UBOOT_TEXT_BASE - 0x100)
替换CFG_BOOT_PARAMS 宏的定义
2.3 liteos
修改的文件为:./platform/liteos/liteos/platform/bsp/board/${CHIP}/include/board.h
-
#define SYS_MEM_SIZE_DEFAULT $LITEOS_SYS_MEM_SIZE
LITEOS_SYS_MEM_SIZE=0x01e00000
设定了liteos系统运行的sdram的size -
#define SYS_MEM_BASE $LITEOS_SYS_MEM_BASE
LITEOS_SYS_MEM_BASE=0x80000000
设定了liteos系统运行的sdram的起始地址 -
#define MMZ_MEM_BASE $LITEOS_MMZ_MEM_BASE
LITEOS_MMZ_MEM_BASE=0x82100000
设定了MMZ区域的起始地址 -
#define MMZ_MEM_LEN $LITEOS_MMZ_MEM_SIZE
LITEOS_MMZ_MEM_SIZE=0x5f00000
设定了MMZ区域的大小 -
#define TEXT_OFFSET $LITEOS_TEXT_OFFSET
LITEOS_TEXT_OFFSET=0x00000000
设定了text段相对于LITEOS_SYS_MEM_BASE的偏移 -
#define DDR_MEM_SIZE $LITEOS_DDR_MEM_SIZE
LITEOS_DDR_MEM_SIZE=0x8000000
设定了DDR的大小
3 配置内存地址脚本打印
编译时会有如下的打印:
if [ hi3556v200 == "hi3559v200" ];then\
./osdrv_mem_cfg.sh uboot hi3556v200;\
fi;
if [ hi3556v200 == "hi3556v200" ];then\
./osdrv_mem_cfg.sh uboot hi3556v200;\
fi;
UBOOT_TEXT_BASE:0x80800000
UBOOT_CFG_DDR_SIZE:0x8000000
LITEOS_SYS_MEM_BASE:0x80000000
MEM_HUAWEILITE_SYS_SIZE:0x01e00000
LITEOS_MMZ_MEM_BASE:0x82100000
LITEOS_MMZ_MEM_SIZE:0x5f00000
LITEOS_TEXT_OFFSET:0x00000000
LITEOS_DDR_MEM_SIZE:0x8000000