外部存储器

FAQ1 Solution支持哪些外部存储?

Solution支持Nor、NAND、eMMC、SD/TF卡,具体可参见方案选型 -> 选型原则,以及FLASH分配 -> 不同芯片PSRAM + Flash的典型配置

  1. 支持从NAND、eMMC启动

  2. 支持双Nor的方案

  3. SD/TF卡需要先从Nor或NAND/eMMC启动后再挂载


FAQ2 怎么调整Flash的分区?

  1. 参照Flash 分区表(flashmap)制作介绍,新建工程时,配置好分页 1:FLASH_Config

  2. 分页 2:FLASH_Map中,

    • 保留产品/项目需要的分区。(注意表里面有公式,有些单元格是自动生成的,删除和新增时注意保持链接和引用的正确性)

    • 第3列SIZE调整分区的大小(单位是KB),分区大小注意快对齐。确保第12列JUDGE(对齐/超界)为0,

    • 确保第一个区域第10列OFFSET最后一行为0。表明全部分配完成

注意:

  1. NAND/eMMC方案中,code bin 需要搬到PSRAM中执行(可参见方案选型 -> 选型原则),因此为有效的使用PSRAM的容量,需要注意code bin的size定义在合适的尺寸

  2. NAND/eMMC方案中,内置资源采用文件系统与Builtin_Res的方案,分页 2:FLASH_Map中分区是不一样的,因此注意选择Solution已有的工程模板做参考

  3. 双Nor Flash的方案,或Nor + SD卡(或NAND/eMMC)中,分页 2:FLASH_Map中会有两个分区的信息,注意分区放置内容的正确。


FAQ3 固件里怎么添加新的Flash驱动?

Solution通过 Flash ID 自动适配不同型号及规格的 Flash 驱动。分两种情况:

  1. 新 Flash 和已支持 Flash 功能一致(仅加 ID)

    • 查 Flash 规格书,搜 9Fh/RDID,获取 3 个 ID: Manufacture_id(厂商) / Memory_type(扩展) / Memory_density(密度)和 mem_size(容量)

      • 其中,mem_size: 16Mb = 0x200000、 32Mb = 0x400000、 256Mb = 0x2000000)

    • 打开flash_table.c(Nor)/ nand_table.c (NAND),找到flash_cmd_id_pool_typX数组(X 为 0-5,选择与新 Flash 功能一致的),按FLASH_RDID_TYPE_T类型格式新增一行,注意保留末尾{FLASH_INVALID_ID, 0, 0, 0, 0}

    • 编译固件测试即可

    示例:新增 W25Q32

    • 在规格书中,找到ID 0xEF/0x60/0x16,32Mb=0x400000

    • flash_cmd_id_pool_typ0中加入一行{0xEF, 0x60, 0x16, 1, 0x400000}

  2. 新 Flash 和已支持 Flash 功能不一致(新增驱动)

    • 打开flash_table.c(Nor)/ nand_table.c (NAND),在FLASH_CMD_TABLE_ID_T枚举末尾加新类型(如NOR_TYPE6

    • flash_cmd_table_list数组末尾加配置,复制已有的模板,修改Manufacture_id / Memory_type / Memory_density ID,其余参数保持默认

    • 新增flash_cmd_id_pool_typX数组(X = 新类型序号,如NOR_TYPE6 对应 flash_cmd_id_pool_typ6),填入 ID 和容量

    • flash_cmd_id_pool数组末尾加&flash_cmd_id_pool_typX[0],编译测试。

⚠️ 注意

  • NOR Flash 修改 flash_table.c,NAND Flash 修改 nand_table.c

  • ID 数组末尾必须保留{FLASH_INVALID_ID, 0, 0, 0, 0},不可删除

具体可参考Flash Chipid 和Type配置指南


FAQ4 烧录驱动里怎么添加新的Flash驱动?

UartburnEx工具 里添加对应的manufacture_id memory_typememory_densityext_flagsmem_size,生成下载的Flash驱动

具体可参考Flash Chipid 和Type配置指南 -> UartburnEx.exe工具