STM32 下 FatFs的移植,实现了擦写均衡,坏块管理,硬件 ECC,ECC纠错

最近因项目需要,做一个数据采集的单片机平台。需要移植 FatFs 。现在把最后成果贴上来。

在 STM32 单片机上,成功移植 FatFs 0.12b,使用的 Nand Flash 芯片为 K9F2G08 。

特点: 系统配合 FatFs 实现了擦写均衡,坏块管理,硬件ECC,软件 ECC 纠错

文件组成:

FatFs 目录

+---- ffconf.h 对 FatFs 进行配置的文件

+---- ff.h

+---- ff.c 是 FatFs 的实现文件,擦写均衡 在 f_getfree 函数中已实现。

+---- ccsbcs.c 文件名支持英文

+---- cc936.c 文件名支技中文

+---- diskio.c 是 FatFs 与自定义驱动层的接口函数

+---- NandDisk.c 为自己实现的 NandFlash 匹配函数,坏块管理在这里实现。 BSP 目录

+---- fsmc_nand.h 对 K9F2G08 的各种参数定义

+---- fsmc_nand.c 实现硬件级别的读写驱动,STM32 的 硬件 ECC 在这里使用。还 实现了 ECC 自动纠错。

注:为了获得 64*2K 的擦除缓冲区,系统还使用了一块 SRAM 芯片,以支持 malloc 内存 分配函数。这个文件由你自己的系统提供。

引用:

FatFs 系统 http://elm-chan.org/fsw/ff/00index_e.html

ECC 算法详细说明 http://www.360doc.com/content/11/0523/17/496343_118837985.shtml

最后如果想要下载程序的朋友请点这里:源程序下载

时间: 2024-10-25 10:18:30

STM32 下 FatFs的移植,实现了擦写均衡,坏块管理,硬件 ECC,ECC纠错的相关文章

S3C2416裸机开发系列十七_GCC下Fatfs的移植

S3C2416裸机开发系列十七 GCC下Fatfs的移植 象棋小子    1048272975 对于固态存储器,其存储容量可以很大,往往需要一款文件系统对存储器用户数据进行组织文件的管理.它对文件存储器空间进行组织和分配,负责文件的存储并对存入的文件进行保护和检索.在嵌入式系统中,往往需要采用windows兼容的文件系统,像相机的照片.视频监控.语音产品等,很多都需要从windows计算机上提取资源或在windows计算机上进一步处理.Fatfs由于其开源免费,支持fat32,受到了广泛的应用,

STM32下波特率计算详解

波特率的计算 STM32下的波特率和串口外设时钟息息相关,USART 1的时钟来源于APB2,USART 2-5的时钟来源于APB1.在STM32中,有个波特率寄存器USART_BRR,如下: STM32串口波特率通过USART_BRR进行设置,STM32的波特率寄存器支持分数设置,以提高精确度.USART_BRR的前4位用于表示小数,后12位用于表示整数.但是它还不是我们想要设置的波特率,想要设置我们串口的波特率大小还需要进行计算.其实有关波特率的计算是下面这一条表达式: 从上面的表达式,我们

Windows下将ImageMagick移植到Android平台

Windows下将ImageMagick移植到Android平台 原文链接  http://www.pedant.cn/2014/06/18/imagemagick-ported-android/ ImageMagick是一个用来创建.编辑.合成图片的软件.它可以读取.转换.写入多种格式的图片.在移动平台做一些较复杂的图像处理时,难免会请出这尊大神.官方网站上也说明了它可以运行在多个平台之上,包括Android.不过官方的Releases版本只有Unix.Mac OS X.IOS.Windows

VMWare下克隆或移植过来的centOS6.5虚拟机不能上网的解决

VMWare下克隆或移植过来的centOS6.5虚拟机不能上网的解决 一.删除原来的网卡 二.重启系统 用命令:vim /etc/sysconfig/network-scripts/ifcfg-eth0 查看eth0网卡的配置,依然存在,如下图: 并注意网的MAC地址是:00:0c:29:e5:38:14 用命令:vim /etc/udev/rules.d/70-persistent-net.rules 查看文件:70-persistent-net.rules 由此可以看两文件MAC地址是相同的

S3C2416裸机开发系列十五_GCC下uCOS的移植(1)

S3C2416裸机开发系列十五 GCC下uCOS的移植(1) 象棋小子    1048272975 操作系统是用来管理系统硬件.软件及数据资源,控制程序运行,并为其它应用软件提供支持的一种系统软件.根据不同的种类,又可分为实时操作系统.桌面操作系统.服务器操作系统等.对于一些小型的应用,对系统实时性要求高,硬件资源有限等的情况下,应尽量避免使用复杂庞大的操作系统(如Linux),使用小型的实时操作系统(如uCOS)更能满足应用的需求.笔者此处就uCOS-II的移植作一个简单的介绍. 1. 代码准

S3C2416裸机开发系列十五_GCC下uCOS的移植(2)

S3C2416裸机开发系列十五 GCC下uCOS的移植(2) 象棋小子    1048272975 4. uCOS配置 uCOS是可裁减实时操作系统,可以根据实际的应用对内核未使用到的功能进行裁减,以进一步节省系统宝贵的硬件资源,通常可用的uCOS-II内核代码在6K~26K,这在uCOS-II配置文件os_cfg.h中进行配置,这个配置文件在源码目录为os_cfg_r.h,从目录中拷贝添加到uCOS/uCOS-II/Cfg目录中,并重命名为os_cfg.h. #ifndef OS_CFG_H

S3C2416裸机开发系列十四_GCC下UCGUI的移植(2)

S3C2416裸机开发系列十四 GCC下UCGUI的移植(2) 象棋小子    1048272975 现在主要讲解一下在GCC移植UCGUI,Makefile工程如何加入目录,加入源码,c标准库,编译选项的设置. 笔者的Makefile模板提取自uboot,工程中加入目录,加入源码都是很简单的,详细的介绍请参考前面章节" GCC启动代码工程应用实例".下面主要介绍UCGUI目录下很多的源码文件Makefile的编写,一种可行的方式就是把GUI目录上所有的c文件,不管有无用到,均加入工程

S3C2416裸机开发系列十四_GCC下UCGUI的移植(1)

S3C2416裸机开发系列十四 GCC下UCGUI的移植(1) 象棋小子    1048272975 GUI(图形用户界面)极大地方便了非专业用户的使用,用户无需记忆大量的命令,取而代之的是可以通过窗口.菜单.按键等方式进行操作.在某些场合,设计一款人机界面丰富友好的嵌入式产品能赢得更多的用户.笔者此处就s3c2416基于UCGUI图形用户界面的使用作一个简单的介绍. 1. 代码准备 UCGUI 3.98源码,这个版本的UCGUI是开放源码的最高版本,之后版本只提供库文件,不再开源.笔者以UCG

NOR Flash擦写和原理分析

NOR Flash擦写和原理分析 1. NOR FLASH 的简单介绍 NOR FLASH 是很常见的一种存储芯片,数据掉电不会丢失.NOR FLASH支持Execute On Chip,即程序可以直接在FLASH片内执行(这意味着存储在NOR FLASH上的程序不需要复制到RAM就可以直接运行).这点和NAND FLASH不一样.因此,在嵌入式系统中,NOR FLASH很适合作为启动程序的存储介质.NOR FLASH的读取和RAM很类似(只要能够提供数据的地址,数据总线就能够正确的给出数据),