硬汉嵌入式论坛

 找回密码
 立即注册
查看: 12222|回复: 34
收起左侧

基于RL-FlashFS的F429驱动NAND Flash例子下载,支持擦写均衡,坏块管理,ECC和掉电

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2016-6-11 22:42:41 | 显示全部楼层 |阅读模式
说明:
0. NAND Flash这块经常有人问,就做个例子吧,发布下。
1. 此例子仅支持MDK4.74版本,因为RTX和RL-FlashFS都是来自MDK4.74的安装目录,使用MDK4.74才是最佳组合。
2. RL-FlashFS本身支持擦写均衡,坏块管理,ECC和掉电保护。其中使用掉电保护的话,请开启配置文件中的FAT Journal。
3. 在前几年的时候,有客户反应使用RL-FlashFS写入文件多后会写入越来越慢,原因是没有正确配置,加大文件名缓冲个数即可
4. 当前使用的短文件名的库,使用长文件名的话请更换为长文件名的库,也在MDK的安装目录里面。
5. RL-FlashFS是FAT兼容的文件系统,也就是说可以在window系统上面模拟U盘,配合RTX操作系统的中间件RL-USB即可
    关于RL-USB的移植,后面有精力了做一个。
6. RL-FlashFS的文件名仅支持ASCII,不支持中文,这点要特别注意。
7. 首次格式化后使用,读速度2.3MB/S左右,写速度3.2MB/S左右,配置不同的文件系统缓冲大小,速度有区别。
8. RL-FlashFS的函数是标准的C库函数,跟电脑端的文件系统使用方法一样。
9. RL-FlashFS与FatFS的区别,FatFS仅是一个FAT类的文件件系统,擦写均衡,坏块管理,ECC和掉电保护都不支持。
    这些都需要用户自己去实现。
======================================================================
当前NAND的配置如下:
1.png
使用说明如下:

请选择串口操作命令,电脑键盘打印数字即可:
首次使用,务必调用串口命令0,进行NAND Flash的低级格式化和文件系统格式化!!
0 - 低级格式化,显示NAND Flash容量和剩余容量
1 - 显示NAND Flash根目录下的文件
2 - 创建三个text文本并使用不同函数写入内容
3 - 使用三个不同函数读取文本\r\n");
4 - 创建一个text文本并指定一个位置对其进行读写操作
5 - 删除文件夹和文件
6 - 测试文件读写速度
7 - 写数据到CSV文件中
8 - 从CSV文件中读数据
========================================================
工程下载: 基于RL-FlashFS的F429驱动NAND Flash.rar (7.7 MB, 下载次数: 15701)
========================================================
2016-06-11_223350.png
回复

使用道具 举报

116

主题

799

回帖

1147

积分

至尊会员

积分
1147
QQ
发表于 2016-6-12 08:32:57 | 显示全部楼层
[s:151]  [s:151]  [s:151] 如果能出在ucos中使用这个文件系统就更帅了,跨平台移植
回复

使用道具 举报

0

主题

5

回帖

0

积分

新手上路

积分
0
发表于 2016-6-12 18:23:04 | 显示全部楼层
[s:151]  [s:151]
回复

使用道具 举报

10

主题

40

回帖

70

积分

初级会员

积分
70
发表于 2016-7-13 08:32:18 | 显示全部楼层
以为RL-FlashFS是开源的呢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2016-7-13 10:04:36 | 显示全部楼层

回 ljt8015 的帖子

ljt8015:以为RL-FlashFS是开源的呢!


 (2016-07-13 08:32) 
除了RTX,其它所有的中间件全部是库。
回复

使用道具 举报

17

主题

177

回帖

233

积分

高级会员

积分
233
QQ
发表于 2016-7-14 14:36:34 | 显示全部楼层
自己搞的小板子FAT32格式化老是失败怎么回事
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2016-7-15 10:21:07 | 显示全部楼层

回 yumeng 的帖子

yumeng:自己搞的小板子FAT32格式化老是失败怎么回事 (2016-07-14 14:36) 
这个不好说,先裸机操作下NAND,保证硬件没问题,然后再排查软件的。
回复

使用道具 举报

3

主题

4

回帖

3

积分

新手上路

积分
3
发表于 2016-8-12 22:32:58 | 显示全部楼层
O,可以通过。1,就不行了,一直提示挂载失败。为什么呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2016-8-13 10:43:51 | 显示全部楼层

回 1551513811 的帖子

1551513811:O,可以通过。1,就不行了,一直提示挂载失败。为什么呢 (2016-08-12 22:32) 
估计是底层接口函数有问题,一定要保证返回正确的错误信息。
回复

使用道具 举报

0

主题

38

回帖

38

积分

新手上路

one is enough

积分
38
发表于 2017-2-14 09:57:43 | 显示全部楼层
学习了~支持1~
one is enough
回复

使用道具 举报

4

主题

30

回帖

42

积分

新手上路

积分
42
发表于 2017-2-16 15:58:14 | 显示全部楼层
顶!支持!
回复

使用道具 举报

58

主题

118

回帖

292

积分

高级会员

积分
292
发表于 2017-4-17 16:43:55 | 显示全部楼层
这个库的接口必须得使用RTX操作系统吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2017-4-17 17:00:29 | 显示全部楼层

回 yuanfp 的帖子

yuanfp:这个库的接口必须得使用RTX操作系统吗? (2017-04-17 16:43) 
用RTX是最好的,其它系统要重新移植,比较麻烦。
回复

使用道具 举报

0

主题

6

回帖

0

积分

新手上路

积分
0
发表于 2017-4-20 10:45:43 | 显示全部楼层
引入了RTX系统后,原先用STemWin做的界面运行不了了,请问同时使用二者时需要注意什么问题吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2017-4-21 00:32:32 | 显示全部楼层

回 weihua8207 的帖子

weihua8207:引入了RTX系统后,原先用STemWin做的界面运行不了了,请问同时使用二者时需要注意什么问题吗? (2017-04-20 10:45) 
可以看此贴:http://www.armbbs.cn/forum.php?mod=viewthread&tid=17330
回复

使用道具 举报

0

主题

6

回帖

0

积分

新手上路

积分
0
发表于 2017-4-27 14:09:25 | 显示全部楼层
我参照您贴中的例子进行了移植,移植后发现STemWin的定时器全都不能运行了(从前是能用的),屏幕上的按钮等控件均能正确响应,但定时器的事件都不能触发了(启动定时器后,无法等到WM_TIMER消息)。
代码大约是这样:

static void LinkWindowInit(WM_MESSAGE * pMsg)
{
    WM_HWIN      hItem;
   
    hItem = pMsg->hWin;
    WINDOW_SetBkColor(hItem, 0x00FF8000);
    WM_CreateTimer(hItem,0,200,0);
   
}






static void _cbLinkDialog(WM_MESSAGE * pMsg)
{
    WM_HWIN hItem;
    int     NCode;
    int     Id;
   
    switch (pMsg->MsgId)
    {
        case WM_PAINT:
            PaintDialog(pMsg);
            break;
        case WM_INIT_DIALOG:
            LinkWindowInit(pMsg);
            break;
        case WM_NOTIFY_PARENT:
            break;
        case WM_TIMER:
            if (s_bFlagLW)
            {
                switch(s_uiTagret)
                {
                    case 0:
                    {
                        CreateWindow1();
                        break;
                    }
                    case 1:
                    {
                        CreateWindow2();
                        break;
                    }
                    case 11:
                    {
                        CreateWindow3();
                        break;
                    }
                    case 2:
                    {
                        CreateWindow4();
                        break;
                    }
                    
                }
               
                s_bFlagLW = FALSE;
                GUI_EndDialog(pMsg->hWin,0);
                return;
            }
            break;
        default:
            WM_DefaultProc(pMsg);
            break;
    }
}

请问是哪里出了问题呢?
回复

使用道具 举报

0

主题

6

回帖

0

积分

新手上路

积分
0
发表于 2017-4-27 14:10:10 | 显示全部楼层

回 eric2013 的帖子

eric2013:可以看此贴:http://www.armbbs.cn/forum.php?mod=viewthread&tid=17330 (2017-04-21 00:32) 
我参照您贴中的例子进行了移植,移植后发现STemWin的定时器全都不能运行了(从前是能用的),屏幕上的按钮等控件均能正确响应,但定时器的事件都不能触发了(启动定时器后,无法等到WM_TIMER消息)。
代码大约是这样:

static void LinkWindowInit(WM_MESSAGE * pMsg)
{
    WM_HWIN      hItem;
   
    hItem = pMsg->hWin;
    WINDOW_SetBkColor(hItem, 0x00FF8000);
    WM_CreateTimer(hItem,0,200,0);
   
}






static void _cbLinkDialog(WM_MESSAGE * pMsg)
{
    WM_HWIN hItem;
    int     NCode;
    int     Id;
   
    switch (pMsg->MsgId)
    {
        case WM_PAINT:
            PaintDialog(pMsg);
            break;
        case WM_INIT_DIALOG:
            LinkWindowInit(pMsg);
            break;
        case WM_NOTIFY_PARENT:
            break;
        case WM_TIMER:
            if (s_bFlagLW)
            {
                switch(s_uiTagret)
                {
                    case 0:
                    {
                        CreateWindow1();
                        break;
                    }
                    case 1:
                    {
                        CreateWindow2();
                        break;
                    }
                    case 11:
                    {
                        CreateWindow3();
                        break;
                    }
                    case 2:
                    {
                        CreateWindow4();
                        break;
                    }
                    
                }
               
                s_bFlagLW = FALSE;
                GUI_EndDialog(pMsg->hWin,0);
                return;
            }
            break;
        default:
            WM_DefaultProc(pMsg);
            break;
    }
}

请问是哪里出了问题呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2017-4-27 14:10:30 | 显示全部楼层

回 weihua8207 的帖子

weihua8207:我参照您贴中的例子进行了移植,移植后发现STemWin的定时器全都不能运行了(从前是能用的),屏幕上的按钮等控件均能正确响应,但定时器的事件都不能触发了(启动定时器后,无法等到WM_TIMER消息)。
代码大约是这样:

static void LinkWindowInit(WM_MESSAGE * pMsg)
{
....... (2017-04-27 14:09) 
参考这个例子:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=17330
回复

使用道具 举报

0

主题

6

回帖

0

积分

新手上路

积分
0
发表于 2017-4-27 14:13:24 | 显示全部楼层

回 eric2013 的帖子

eric2013:参考这个例子:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=17330 (2017-04-27 14:10) 
额,就是参照这个例子移植的,我一开始用的是STemWin5.26.  现在我用您的RTX+FlashFS+emWin这几个库(CAN和TCP我没用),把我原来的库整体替换掉了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2017-4-27 14:19:19 | 显示全部楼层

回 weihua8207 的帖子

weihua8207:额,就是参照这个例子移植的,我一开始用的是STemWin5.26.  现在我用您的RTX+FlashFS+emWin这几个库(CAN和TCP我没用),把我原来的库整体替换掉了 (2017-04-27 14:13) 
多试试吧。
回复

使用道具 举报

45

主题

70

回帖

205

积分

高级会员

积分
205
发表于 2018-3-22 08:55:10 | 显示全部楼层
下载后,解压一直有错误,尝试了很多方法。能不能在给个下载地址啊!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2018-3-22 11:08:03 | 显示全部楼层
chinashaoshu 发表于 2018-3-22 08:55
下载后,解压一直有错误,尝试了很多方法。能不能在给个下载地址啊!

估计是你电脑系统的问题,换个别人的电脑帮忙下载即可,或者手机下载导出。
回复

使用道具 举报

0

主题

38

回帖

38

积分

新手上路

one is enough

积分
38
发表于 2018-4-8 16:20:07 | 显示全部楼层
mark~~~~
one is enough
回复

使用道具 举报

0

主题

17

回帖

106

积分

初级会员

积分
106
发表于 2018-5-10 08:34:18 | 显示全部楼层
回复的目的就是表示支持~
回复

使用道具 举报

0

主题

16

回帖

16

积分

新手上路

积分
16
发表于 2019-3-19 11:07:18 | 显示全部楼层
请教下,RL-FlashFS如果需要使用中文名有办法实现吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2019-3-19 11:19:30 | 显示全部楼层
hyghyg1234 发表于 2019-3-19 11:07
请教下,RL-FlashFS如果需要使用中文名有办法实现吗

暂时没有想到好的办法,得给他套一层UNICODE和GBK的封装,不太好接入。
回复

使用道具 举报

0

主题

16

回帖

16

积分

新手上路

积分
16
发表于 2019-3-19 11:22:06 | 显示全部楼层
eric2013 发表于 2019-3-19 11:19
暂时没有想到好的办法,得给他套一层UNICODE和GBK的封装,不太好接入。

是因为没有源码的原因吗,不知道官方有没有支持的打算。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2019-3-19 11:22:52 | 显示全部楼层
hyghyg1234 发表于 2019-3-19 11:22
是因为没有源码的原因吗,不知道官方有没有支持的打算。

老外貌似没有支持中文的打算
回复

使用道具 举报

0

主题

16

回帖

16

积分

新手上路

积分
16
发表于 2019-3-19 11:25:14 | 显示全部楼层
eric2013 发表于 2019-3-19 11:22
老外貌似没有支持中文的打算

哦哦,我先继续用FATFS吧,目前我的存储用的tf卡。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2019-3-19 11:26:14 | 显示全部楼层
hyghyg1234 发表于 2019-3-19 11:25
哦哦,我先继续用FATFS吧,目前我的存储用的tf卡。

TF卡就没必要整了,FatFS整就行。
回复

使用道具 举报

0

主题

16

回帖

16

积分

新手上路

积分
16
发表于 2019-3-19 11:32:31 | 显示全部楼层
eric2013 发表于 2019-3-19 11:26
TF卡就没必要整了,FatFS整就行。

回复

使用道具 举报

3

主题

38

回帖

47

积分

新手上路

积分
47
发表于 2019-3-28 22:38:57 | 显示全部楼层
eric 您好!
   
      我整合了RL-FLASHFS SD卡和USB HOST U盘,结果U盘识别不了,如果单独U盘的话,就可以,这是哪里配置问题吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2019-3-29 00:34:01 | 显示全部楼层
也许在明天 发表于 2019-3-28 22:38
eric 您好!
   
      我整合了RL-FLASHFS SD卡和USB HOST U盘,结果U盘识别不了,如果单独U盘的话,就 ...

这里有个SD卡和NAND组合到RL-FlashFS下面的

http://www.armbbs.cn/forum.ph ... &extra=page%3D1
回复

使用道具 举报

3

主题

38

回帖

47

积分

新手上路

积分
47
发表于 2019-3-29 08:53:58 | 显示全部楼层
eric2013 发表于 2019-3-29 00:34
这里有个SD卡和NAND组合到RL-FlashFS下面的

http://www.armbbs.cn/forum.ph ... &extra=page%3D1

谢谢,后面参照这个配置,现在可以同时挂载U盘和SD卡了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2019-3-29 17:20:32 | 显示全部楼层
也许在明天 发表于 2019-3-29 08:53
谢谢,后面参照这个配置,现在可以同时挂载U盘和SD卡了

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 05:29 , Processed in 0.294244 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表