FLASH分区应用笔记

1. 简介

  • Flash 分区通过 excel 表定义,编译工具会根据 excel 生成flash_map.h供代码使用;可通过修改 excel 表实现分区的增删、大小调整。

  • excel 包含 4 个核心 sheet:FLASH_CONFIG、FLASH_MAP、FS_RES_PATH、MEM_Map_Customize。

2. FLASH_Config说明

FLASH_Config Sheet主要对当前产品使用的FLASH进行定义:

  1. 选择:表示是否被选择使用

  2. 起始地址:FLASH的base addr,参见对应平台mem_map内的base_addr

  3. 空间大小:FLASH的总大小

  4. 分区对齐IMAGE:Image 分区的Align size

  5. 分区对齐非IMAGE:非Image 分区的Align size

  6. C_BUS:对应PSARM的c_bus addr

  7. 备注:存储设备的注释说明

../../_images/flashconfig.png

3. FLASH_MAP说明

FLASH_MAP sheet主要是针对产品功能定义进行分区划分

  • OFFSET:分区起始的偏移地址

  • SIZE:分区的大小

  • PARTITION_TYPE:分区所属类型

    类型

    说明

    BIN

    flash分区,需要生成bin文件进行烧录,大小需要对齐,Align size参照FLASH_Config(分区对齐IMAGE),若FS_DIR为有效路径,会通过mkfatimg/mklfsimg工具打包生成对应的bin文件

    RSV

    预留的FLASH分区,不生成bin文件烧录,常用于NVM分区

    FS

    以文件的方式存在,放入文件系统空间(root或其它)

    BIN_EXT

    fat文件系统分区类型,SD/EMMC,在生成对应分区的bin文件后,还会生成mbr.bin供烧录使用

    FS_EXT

    fat文件系统分区类型,SD/EMMC使用,不生成bin文件烧录,同时将对应分区信息生成写入到mbr.bin供烧录使用

    FS_FAT

    FAT文件系统分区类型,通过mkfatimg工具打包生成bin文件

    FS_LFS

    LFS文件系统分区类型,通过mklfsimg打包生成bin文件

  • XIP:用户软件xip运行地址

  • IS_RESET:Reserved field,未使用

  • GC_RATIO:文件系统GC参数 (主要用于 elmfat+dhara文件系统组合时使用)

  • FS_DIR:文件系统分区mount 路径

  • PARTITION_MACRO:分区宏定义,flash_map,h内会生成如下分区相关的宏,例如分区宏定义为HCPU_FLASH_CODE,头文件内生成的宏定义如下

    HCPU_FLASH_CODE_START_ADDR

    HCPU_FLASH_CODE_BURN_ADDR

    HCPU_FLASH_CODE_SIZE

    HCPU_FLASH_CODE_END_ADDR

../../_images/flashmap.png

4. FS_RES_PATH说明

用于定义文件系统目录对应的宏。其中RES_NAME中不可修改,butterfli会使用这些名字去对应相应的资源,然后放在指定的分区和路径下

  • RES_NAME:资源名称

  • MACRO:资源路径宏定义

  • PARTITION:资源所属分区,参见FLASH_MAP sheet添加的分区名称

  • Sub path:子路径

  • Full Path:完整路径,由文件系统分区路径+sub path拼接

../../_images/fs_res_path.png

5. MEM_Map_Customize说明

对已有的宏重定义

  • 宏重定义:原有宏定义

  • 选择:是否进行重定义

  • 值:宏重定义的值

../../_images/mem_map_customize.png

6. 如何进行分区的添加/删除

参见FLASH_MAP sheet说明根据分区功能进行对应分区的添加和删除。

7. 如何修改二级bootloader在RAM上运行

参见 MEM_Map_Customize说明,对BOOTLOADER_XIP_ADDR进行重定义到RAM地址上。

8. 如何使用双文件系统

FLASH MAP sheet内,对需要的分区选择不同的文件系统分区类型,menuconfig内打开对应文件系统配置,参见下图

../../_images/flashmap_filesystem.png
../../_images/flashmap_menuconfig.png