OMAPL138 uboot分区

2019-07-13 03:27发布

一 配置Uboot:  编译配置时选择make CROSS_COMPILE=arm-none-linux-gnueabi- da850sdi_tl_config,使用默认配置da850sdi_tl_config,查找对应的配置文件。 1.      make da850sdi_tl_config分析     %_config::    unconfig
    @$(MKCONFIG) -A $(@:_config=)    等于执行:/mkcoinfig –A da850sdi_tl 然后查看mkconfig文件,是个脚本文件 2.        line=`egrep -i"^[[:space:]]*${2}[[:space:]]" boards.cfg` 3.        board.cfg 文件中 da850sdi_tl                  arm         arm926ejs   da8xxevm            davinci        davinci     da850sdi:SPL_MMC_LOAD,SPL_NAND_LOAD 4.        执行echo "Configuring for ${BOARD_NAME} - Board: ${CONFIG_NAME},Options: ${options}" 5.        # Create link to architecturespecific headers 然后ln -s ../arch/${arch}/include/asm asm,在include目录下建立asm的链接 6.        # Create include file for Make,创建/include/config.mk文件,> config.mk 7.        # Create board specific headerfile,创建/include/config.h文件,> config.h 8.        往config.h中添加内容#define等,自动生成 #define CONFIG_SPL_MMC_LOAD    1
#define CONFIG_SPL_NAND_LOAD    1
#define CONFIG_BOARDDIR board/davinci/da8xxevm
#include
#include
#include
#include 9.    mkconfig脚本执行结束。 二   Uboot里的nand flash里分区表     根据配置文件找到需要 修改地址include/configs/da850sdi.h 1 查看是否开启nanf flash #define CONFIG_DRIVER_TI_EMAC
#define CONFIG_MAC_ADDR_DIEID
#ifndef CONFIG_USE_NAND
#define CONFIG_USE_NAND
#endif 2 配置u-boot参数存储在nand flash 第一块 长度为128K ,地址范围为0x00~0x20000 #define CONFIG_ENV_IS_IN_NAND        /* U-Boot env in NAND Flash  */
#define CONFIG_ENV_OFFSET        0x0 /* Block 0--not used by bootcode */
#define CONFIG_ENV_SIZE            (128 << 10) 3配置u-boot.bin存储在nand flash 第一块分区 长度为496K ,地址范围为0x28000~0xA0000 #define CONFIG_SYS_NAND_U_BOOT_OFFS    0x28000        /* used UBL part */
#define CONFIG_SYS_NAND_U_BOOT_SIZE    (0x80000 - 0x8000)/* max size is 512KB */ 注意 如果编译生成的是u-boot.ais 是程序有自动转码了的,在u-boot.bin文件 加入了AIS编码。关于AIS编码具体信息可以参考https://blog.csdn.net/j00362/article/details/50069349此微博。AIS存在nand flash的地址为0x20000~0x28000. 三  内核里的nand flash里分区表 内核里的分区表位于文件linux-3.3archarmmach-davincioard-da850-evm.c static struct mtd_partition da850_evm_nandflash_partition[] = {
    {
        .name        = "u-boot env",
        .offset        = 0,
        .size        = SZ_128K,
        .mask_flags    = MTD_WRITEABLE,
     },
    {
        .name        = "UBL",
        .offset        = MTDPART_OFS_APPEND,
        .size        = 4 * SZ_128K,
        .mask_flags    = 0,
    },
    {
        .name        = "u-boot",
        .offset        = MTDPART_OFS_APPEND,
        .size        = 4 * SZ_128K,
        .mask_flags    = 0,
    },
    {
        .name        = "kernel",
        .offset        = MTDPART_OFS_APPEND,
        .size        = SZ_4M,
        .mask_flags    = 0,
    },
#if defined(CONFIG_MACH_OMAPL138_CFGZ)
    {
        .name        = "filesystem",
        .offset     = MTDPART_OFS_APPEND,
        .size        = SZ_32M,
        .mask_flags = 0,
    },
    {
        .name        = "data",
        .offset        = MTDPART_OFS_APPEND,
        .size        = MTDPART_SIZ_FULL,
        .mask_flags    = 0,
    },
#else
    {
        .name        = "filesystem",
        .offset        = MTDPART_OFS_APPEND,
        .size        = MTDPART_SIZ_FULL,
        .mask_flags    = 0,
    },
#endif
}; 编译生成u-boot.ais文件, 烧写到指定地址范围。 四 启动内核后的引导分区表 0-0x20000: 保存 U-Boot 环境变量,128KB 大小(0x20000)。 
0x20000-0xa0000: 保存 u-boot.ais 镜像,512KB 大小(0x80000)。 
0xa0000-0x120000: 预留区域,512KB 大小(0x80000)。因为之前 U-Boot 和 SPL 需要占
用两个分区,目前已将 U-Boot 和 SPL 合成为一个 U-Boot 镜像 u-boot.ais,所以此区域暂
时预留。 
0x120000-0x520000:保存内核镜像 uImage,4MB 大小(0x400000)。 
0x520000-0x20000000:保存文件系统,506MB 大小(0x1FAE0000)。