[分享]基于野火h7pro核心板的nand+levelx+fatfs适配
本帖最后由 mumuge 于 2022-5-28 11:33 编辑前段时间折腾好了在nand flash上使用fatfs的方案,磨损均衡层使用的是微软的levelx,用levelx对接fatfs实现在nand flash上挂在fat32文件系统。
我的硬件情况如下:
核心板:野火stm32h743xih6黑色核心板
NAND型号:W29N01HVSINA
建议在移植前先把nand全片擦除一遍。还有别忘了配置mpu加速nand的读写,配置方法参考硬汉哥前几期的mpu教程。
移植顺序:
首先要移植bsp_nand.c,bsp主要实现了data区和Spare区的读写,nand的id和状态读取, 全片和block擦除等操作,是为了对接上levelx。(看附件的bsp_nand.c和.h)
然后移植levelx,下载levelx源码,将lx_nand开头的c文件都加入到工程,再将附件的lx_stm32_nand_custom_driver.c和.h加入工程,这两个文件就是移植文件,将上面的bsp_nand与levelx对接,这一步完成后可以使用levelx的读写接口测试一下移植是否正常,看看写进去和读出来数据是否一致,这里就不提供测试代码了。参考微软官网的levelx接口操作教程。
下一步就是对接fatfs了,参考附件的user_diskio.c,fatfs需要特别设置的地方就是:
#define _MAX_SS 2048/* 512, 1024, 2048 or 4096 */
因为我的nand一个page是2048字节。这是与sd卡(512)和spi flash(4096)不同的地方。
这个时候调用f_mount会失败,因为nand里面还没有文件系统,但是调用f_mkfs会出现莫名其妙的错误,所以我建议将nand再对接到usb msc,插到pc上来格式化nand成fat32文件系统。
对接usb msc也很简单,cubemx上配置好后就只要完成usbd_storage_if.c就行了,附件有提供我写好的usbd_storage_if.c。
到这一步将开发板usb插上电脑,右键此电脑-->管理-->磁盘管理。会发现有一个未分区的盘,你需要将它格式化成fat32格式。具体操作应该不用我多说。
接下来就可以愉快地使用f_mount挂载了,然后在开发板和pc都可以操作nand里的文件了!!
谢谢楼主分享。 你好,请问可以麻烦您分享一下工程文件吗,谢谢,我这个移植后debug就Default_handler,不知道哪出了问题 Ash1n 发表于 2022-9-28 16:21
你好,请问可以麻烦您分享一下工程文件吗,谢谢,我这个移植后debug就Default_handler,不知道哪出了问题
我的邮箱是1033026448@qq.com,谢谢 大佬,能否分享一下完整的例程学习一下,{:8:} 今天正好有时间,尝试移植未成功。 谢谢楼主分享,正在移植到FATFS上使用。 ECC在Spare区的读写没有看到 楼主你好,这个工程你那边测试性能吗?读写速度大概能达到多少?
页:
[1]