FATF移植到STM32F103 SPI Flash上

时间:2014-08-05 14:04:36

标签: filesystems stm32 spi freertos

我已经在32 Mbit的STM32F103 SPI Flash上​​为免费RTOS移植了FATFS。在演示应用程序中,我已成功创建了一个文件,编写了一个文件,并从该文件中读回。我的要求就像我必须在SPI flash中存储多个文件(图像)并在需要时将其读回。

我有以下条件/查询。

  1. 我已将扇区大小设置为512字节,SPI闪存的块擦除大小为4K。与SPI Flash一样,在写入之前需要擦除块。我是否需要跟踪特定块是否被删除,或者是否正在管理此文件系统?

  2. 如何验证我写的扇区是否已删除?我目前正在做的是,删除该部门的完整块,我将要写这个?

  3. 如何确定,我要擦除的SPI闪存块不会影响任何包含有用数据的扇区?

  4. 感谢期待,

    此致

    AK

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是将“群集”大小定义为4K,与闪存的页面大小相同。这意味着每个文件,即使只有1个字节,也需要4K,即每个512字节的8个连续扇区。 一旦需要再保留一个群集,当文件增长到4096字节以上时,您选择一个空闲群集,将其链接到FAT,然后写下一个字节。

出于性能原因和增加闪光灯的耐用性,应避免在不需要时擦除闪存扇区。读取然后擦除要快许多个数量级。因此,当您选择一个空闲群集时,您可以启动一个循环来读取每个扇区。一旦你发现一个字节不等于0xFF,你就中止循环并调用该扇区的闪存擦除。

如果闪存控制器能够直接执行空白测试,则可以进一步优化。这样的测试可以在几微秒内完成,同时读取8个扇区并循环检查每个4096字节可能更慢。