GD32 FATFS+FTL Nand解决方案

发布者:悠闲之旅最新更新时间:2024-11-06 来源: elecfans关键字:GD32  FATFS  Nand 手机看文章 扫描二维码
随时随地手机看文章

1. 方案简介

Nand flash有非易失、存储容量大、寿命长等优点;同时具有存在坏块、擦除次数有限、易出现error bit的缺点;并且具有擦除以block(块)为单位,写入以page(页)为单位,读取以sector(512 byte)为单位的特点。


基于上述原因,对Nand flash的应用不仅要避免坏块、均衡块擦除次数、纠正error bit,而且需要按照其读写擦的特点进行应用。若没有一套管理软件针对nand的特性,则对其应用将非常困难。

FTL(Flash Transform Layer)是基于nand flash的管理算法软件,可解决上述提出的所有问题,将Nand flash模拟成如。

wKgZomT6tyuALfWtAABfyq_CB1s924.jpg?imageView2/2/w/1000

▲ FTL软件架构图

2. 功能描述

FTL(Flash Transform Layer)是基于nand flash的管理算法软件,具有地址映射管理,垃圾回收,坏块管理和磨损均衡等功能。

• 地址映射:上层应用使用逻辑地址来访问,FTL把逻辑地址映射到不同物理地址上,管理着每个逻辑地址最新的数据存放的物理位置。

• 垃圾回收:随着数据的写入,闪存设备上有些块的部分数据已经无效了,需要把有效的数据从块上搬走,然后擦除用来接收新的数据。

• 磨损均衡:因为每个块的P/E次数是有限的,某些块可能被重复使用而损坏了,而有些块数据很少被访问,所以一直没有进行操作过。为了避免这种情况,FTL加入磨损均衡的功能,大致是通过控制垃圾回收和空块池的管理,从而平衡每个块的使用次数。

• 坏块管理:由于Flash本身就存在部分坏块,在使用的过程中部分块会变坏,所以FTL在管理的时候需要避开这些无用块,把使用后变得不稳定块上的数据及时拷贝到稳定位置。

BCH软件实现error bit错误检查和纠正功能,对于Nand flash本身不带ECC “Error Correcting Code”功能的方案中是不可或缺的。BCH软件对用户写入flash的数据进行编码,当用户读取写入flash的数据时,按照编码规则对数据进行解码,当发现error bit时,对error bit进行纠正,保证数据可靠性。

3. 主要特性

相对于目前存在的Nand flash管理软件方案,FTL具有读写速度快、内存消耗小、擦除块磨损均衡好的特点。

A) FTL方案在相同平台下(GD32F450+SPI2G颗粒)与YAFFS嵌入式文件系统分别做性能测试,测试结果如下:

wKgZomT6tyyAI7WHAACQe5W9Zuo218.jpg?imageView2/2/w/1000

B) FTL方案在相同平台下(GD32F450+SPI2G颗粒)与YAFFS嵌入式文件系统分别做内存消耗统计,统计结果如下:

wKgaomT6ty6AfBD-AACDOsW9t_0437.jpg?imageView2/2/w/1000

C) FTL方案在相同平台下(GD32F450+SPI2G颗粒)与YAFFS嵌入式文件系统分别做磨损均衡测试,统计结果如下:(注:block 1023为坏块)

wKgZomT6ty-AabZvAABrE3tQcO4904.jpg?imageView2/2/w/1000

4. 开发资料

推荐用于功能评估的开发板型号为GD32450i-EVAL和GD32303E-EVAL,支持SPI/EXMC两种接口nand flash。

我们可提供评估套件、用户指南、硬件原理图、软件代码等整套的开发资料,请联系您当地的GigaDevice销售办事处或GD32授权代理商获取。

5. 典型应用

对于一些要求存储容量较高的使用场景,FTL使用尤为突出。如图片、音频、视频的保存、重要信息的保存等。

工业领域,如电表、水表信息的存储;汽车电子领域,如设备运行状态信息存储;消费电子领域,如摄像监控视频、图片存储。


关键字:GD32  FATFS  Nand 引用地址:GD32 FATFS+FTL Nand解决方案

上一篇:GD32 MCU上电跌落导致启动异常如何解决
下一篇:GD32 MCU碰到IIC总线卡死怎么办?

推荐阅读最新更新时间:2026-03-25 13:31

stm32--FatFs移植(SPIFlash)
前言 硬件: 单片机:stm32f072CB,sram大小16k。(其他单片机只要sram 8k即可通用) SPIFlash:W25Q128FV,16Mbyte,单次擦除最小4k。 程序使用Keil编译器,C99标准。 程序已经全部完成并测试通过,目前没出现明显问题。 程序使用的FatFs库版本:R0.13b。下文所有内容仅保证在此版本可行。 添加文件 获取FatFs库(官网) 将source文件夹全部复制到目标工程中 添加所有.c文件到工程中,添加相关路径 移植修改 需要修改的文件: integer.h:修改各种整型的宏定义(注:C99--long long对应64位整型) f
[单片机]
STM32CubeMX系列 | FATFS文件系统
1. FATFS文件系统简介 文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构(即在存储设备上组织文件的方法)。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统;不带文件系统的SD卡仅能实现简单的读写扇区操作,要真正应用SD卡必须要使用文件系统 FATFS文件存储原理(以FAT32为例),下图为FAT32文件系统布局: 簇是文件存储的最小单元,FAT32分区大小与对应簇空间大小关系如下表示: 分区空间大小 簇空间大小 每个簇包含的扇区数 8GB 4KB 8 ; //磁盘是否初始化 Diskio_drvTypeDef *drv ; //磁盘的驱动 uint8_t
[单片机]
stm32的USB(二)Fatfs在stm32上的移植
前言 相信大家不会对FAT文件系统感到陌生,在Windows上就能够直接操作FAT文件,Fatfs是一个完全免费和开源的文件系统模块,它支持FATl2、FATl6 和FAT32,支持多个存储媒介,有独立的缓冲区,可以对多个文件进行读/写,在嵌入式系统中得到广泛应用。Fatfs有Fatfs和FatFs/Tiny两个版本,FatFs/Tiny占用RAM较小,但是以更慢的读写速度和更少的API函数为代价,下面以Fatfs版本作介绍大家可以从以下链接下载源码:http://elm-chan.org/fsw/ff/00index_e.html。 移植 Fatfs的层次结构如下图所示: 应用层提供了接口函数,如f_open,f_rea
[单片机]
stm32的USB(二)<font color='red'>Fatfs</font>在stm32上的移植
stm32专题十九:FatFs文件系统简单读写
首先,我们需要向FatFs来提供一些硬件接口,包括储存设备的初始化,读 / 写函数,硬件参数等,这些在diskio.c中实现: diskio.c /*-----------------------------------------------------------------------*/ /* Low level disk I/O module skeleton for FatFs (C)ChaN, 2014 */ /*-----------------------------------------------------------------------*/ /* If a working sto
[单片机]
stm32专题十九:<font color='red'>FatFs</font>文件系统简单读写
【STM32Cube_20】在SD卡上移植FATFS文件系统
本篇详细的记录了如何使用STM32CubeMX移植FATFS文件系统到SD卡上。 1. 准备工作 硬件准备 开发板 首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi): Micro SD卡 小熊派开发板板载 Micro SD 卡槽,需要提前自行准备一张 Micro SD卡,如图: 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码; 准备一个串口调试助手,这里我使用的是Serial Port Utility; 2.生成MDK工程 选择芯片型号 打开STM32CubeMX,打开MCU选择器: 搜索并选中芯片STM32L431RCT6: 配置时
[单片机]
【STM32Cube_20】在SD卡上移植<font color='red'>FATFS</font>文件系统
FATfs 在STM32F107VC上的移植过程
简介: FatFs是一个通用的文件系统模块,以小的嵌入式系统的FAT文件系统。 FatFs的编程遵守的ANSI C格式语法标准,因此,它是具有独立于硬件架构。 在不做任何改变就可以被移植到常用的微控制器中,如8051, PIC, AVR, SH, Z80, H8, ARM等。 FatFs 特点 分离缓冲的FAT结构和每一个文件,适合快速访问多个文件。 支持多个驱动器和分区。 支持FAT12 , FAT16和FAT32 。 支持8.3格式的文件名(LFN不支持) 支持两个分区规则: Fdisk和超级软盘。 优化8/16-bit微控制器。 应用接口 FatFs /微型FatFs模块提供下列功能。 f
[单片机]
<font color='red'>FATfs</font> 在STM32F107VC上的移植过程
STM32 文件系统 fatfs 移植笔记详解
1、内存和Flash介绍 stm32 的 flash 地址起始于 0x0800 0000,结束地址是 0x0800 0000 加上芯片实际的 flash 大小,不同的芯片 flash 大小不同。 RAM 起始地址是 0x2000 0000,结束地址是 0x2000 0000 加上芯片的 RAM 大小,不同的芯片RAM也不同。 Flash 中的内容一般用来存储代码和一些定义为 const 的数据,断电不丢失,RAM 可以理解为内存,用来存储代码运行时的数据,变量等等,掉电数据丢失。 stm32 将外设等都映射为地址的形式,对地址的操作就是对外设的操作。 stm32 的外设地址从 0x4000 0000 开始,可以看到在
[单片机]
STM32 文件系统 <font color='red'>fatfs</font> 移植笔记详解
STM32L4新版HAL库SDIO(DMA)、FatFs使用教程(四)
添加FreeRtos支持。 FreeRtos中使用FATFS是强制要求使用DMA模式的SDIO驱动。步骤如下: 1、打开工程配置文件,添加FreeRtos支持 2、配置参数 发现configuration选项卡SDMMC1报错,信息如下,意思是中断优先级问题。 打开NVIC配置界面,修改中断优先级,注意,DMA优先级要比SD中断优先级低。 打开FREERTOS选项,如图所示适当配置任务堆栈大小,这里为了测试方便,放到Start Task中测试,正式使用时,不要放在这里,要新建任务。文件操作所在的任务需要适当加大堆栈。 3、生成代码,打开工程,将main函数中的Fatfs_RW_test();语句剪切,粘贴到
[单片机]
STM32L4新版HAL库SDIO(DMA)、<font color='red'>FatFs</font>使用教程(四)
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved