外部存储器¶
FAQ1 Solution支持哪些外部存储?¶
Solution支持Nor、NAND、eMMC、SD/TF卡,具体可参见方案选型 -> 选型原则,以及FLASH分配 -> 不同芯片PSRAM + Flash的典型配置
支持从NAND、eMMC启动
支持双Nor的方案
SD/TF卡需要先从Nor或NAND/eMMC启动后再挂载
FAQ2 怎么调整Flash的分区?¶
参照Flash 分区表(flashmap)制作介绍,新建工程时,配置好
分页 1:FLASH_Config-
保留产品/项目需要的分区。(注意表里面有公式,有些单元格是自动生成的,删除和新增时注意保持
链接和引用的正确性)在
第3列SIZE调整分区的大小(单位是KB),分区大小注意快对齐。确保第12列JUDGE(对齐/超界)为0,确保第一个区域
第10列OFFSET最后一行为0。表明全部分配完成
注意:
NAND/eMMC方案中,code bin 需要搬到PSRAM中执行(可参见方案选型 -> 选型原则),因此为有效的使用PSRAM的容量,需要注意code bin的size定义在合适的尺寸
NAND/eMMC方案中,内置资源采用文件系统与
Builtin_Res的方案,分页 2:FLASH_Map中分区是不一样的,因此注意选择Solution已有的工程模板做参考双Nor Flash的方案,或Nor + SD卡(或NAND/eMMC)中,
分页 2:FLASH_Map中会有两个分区的信息,注意分区放置内容的正确。
FAQ3 固件里怎么添加新的Flash驱动?¶
Solution通过 Flash ID 自动适配不同型号及规格的 Flash 驱动。分两种情况:
新 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}
新 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_densityID,其余参数保持默认新增
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},不可删除
FAQ4 烧录驱动里怎么添加新的Flash驱动?¶
在UartburnEx工具 里添加对应的manufacture_id、 memory_type、 memory_density、 ext_flags、 mem_size,生成下载的Flash驱动