1.问题
rt_device_find的设备名与fal_mtd_nor_device_create中的分区名最大长度限定不一致,导致dfs_mkfs时传入分区名时无法使用rt_device_find找到匹配的设备。
2.问题代码
如下面代码,摘抄于RT官方示例程序,当FS_PARTITION_NAME(对应fal中分区表的名字)的长度超过RT_NAME_MAX时,dfs_mkfs就会出错。

dfs_mkfs报错:The flash device type must be MTD
3.问题原因
原因在:fal分区名的长度由FAL_DEV_NAME_MAX限定,而dfs_mkfs中rt_device_find函数比较的设备名使用RT_NAME_MAX限定,而RT_NAME_MAX默认为8,当fal分区名超过RT_NAME_MAX就可能出现dfs_mkfs出错的情况。


4.解决办法
我目前使用的解决办法最简单,就是把分区名改短,只要不超过RT_NAME_MAX就行,或者也可以把RT_NAME_MAX的长度改大。例如把filesystem2改为filesys2.


2665

被折叠的 条评论
为什么被折叠?



