硬汉嵌入式论坛

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

[FMC] 基于V7的新版RL-USB和RL-FlashFS的NAND完整解决方案,实现更简单,用户仅需初始化FMC

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106557
QQ
发表于 2019-7-3 00:15:36 | 显示全部楼层 |阅读模式
说明:
1、新版方案更加好用,不管用户使用的那家NAND,用户要做的仅仅是初始化FMC,其它读写API,擦写均衡,坏块管理,ECC校验和掉电保护都不用操心了。
2、新版RL-USB相比老版本功能强劲了不少,比如新增的WebUSB以及更好的配合WinUSB实现上位机开发。
3、新版RL-FlashFS V6.X相比老版本功能更强些,API更加全面(FlahFS是采用的标准C库API),已经支持删除文件夹时,同步删除其子文件。
4、RL-FlashFS是兼容Fat的,新版最大容量支持2TB。同时也支持EFS嵌入式文件系统,主要用于NOR型Flash。
5、RL-FlashFS与FatFS的区别:
(1)FatFS仅是一个FAT类的文件件系统,擦写均衡,坏块管理,ECC校验和掉电保护都不支持。这些都需要用户自己去实现,而FlashFS都支持。
(2)RL-FlahFS操作文件名,不支持中文,而FatFS支持。

6、RL-USB:



链接:https://pan.baidu.com/s/1Go9VPpHvWlSqoA7SMTV2xw 提取码:ymkm


测试例子需要安装的库版本(同一个软件包可以安装多个不同版本):
下面三个软件包的版本(这个三个版本的软件包务必要安装):




调试组件
RL-FlashFS
1.jpg

RL-USB
2.jpg

FreeRTOS
3.jpg

RTX5
4.jpg

USB测试:
888.jpg
FlashFS测试:
2019-07-03_005023.jpg
写速度2-3MB/S,读速度4-6MB/S,可以修改FMC参数,加大NAND缓冲和设置MDK优化提升速度
当前测试比较保守
2019-07-03_005215.jpg






评分

参与人数 1金币 +20 收起 理由
missfox + 20 赞一个!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106557
QQ
 楼主| 发表于 2019-7-3 00:58:44 | 显示全部楼层
更新完毕
回复

使用道具 举报

3

主题

26

回帖

35

积分

新手上路

积分
35
发表于 2019-7-3 08:59:29 | 显示全部楼层
硬汉哥,这个有没有整个移植过程比较详细的说明呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106557
QQ
 楼主| 发表于 2019-7-3 09:55:34 | 显示全部楼层
fl7547454 发表于 2019-7-3 08:59
硬汉哥,这个有没有整个移植过程比较详细的说明呢?

好的,后面有时间了做个简易移植说明。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2019-7-3 10:14:29 | 显示全部楼层
期待后面的移植说明
回复

使用道具 举报

23

主题

1403

回帖

1472

积分

至尊会员

积分
1472
发表于 2019-7-3 12:02:52 | 显示全部楼层
给力,V7没白买
代码不规范,亲人两行泪!
回复

使用道具 举报

0

主题

84

回帖

84

积分

初级会员

积分
84
发表于 2019-7-8 10:23:17 | 显示全部楼层
可不可以这么理解:
NANDFLASH 出厂前或者使用过程中容易出现坏块,所以使用这个FLASH 必须要坏块管理,否则就会出问题?然而自带的RL-FlashFS 是具有坏块管理和ECC校验功能的,所以我们只管使用,无需再做相关的处理,就能正常使用NANDFLASH了? 基本上使用过程出现坏块了,RL-FlashFS也会自动帮忙处理好?

是不是可以这么理解?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106557
QQ
 楼主| 发表于 2019-7-8 11:00:32 | 显示全部楼层
xk2yx 发表于 2019-7-8 10:23
可不可以这么理解:
NANDFLASH 出厂前或者使用过程中容易出现坏块,所以使用这个FLASH 必须要坏块管理,否 ...

对。
回复

使用道具 举报

2

主题

15

回帖

21

积分

新手上路

积分
21
发表于 2019-7-8 11:37:03 | 显示全部楼层
回复

使用道具 举报

1

主题

49

回帖

52

积分

初级会员

积分
52
发表于 2019-7-9 11:00:03 | 显示全部楼层
请问硬汉哥,这个RL-FlashFs收费嘛?
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2019-8-15 10:45:18 | 显示全部楼层
求移植说明
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106557
QQ
 楼主| 发表于 2019-8-16 00:40:02 | 显示全部楼层

RTE环境直接添加就行,后面会做个移植教程的。
回复

使用道具 举报

45

主题

60

回帖

195

积分

初级会员

积分
195
发表于 2020-2-5 10:00:39 | 显示全部楼层
eric2013 发表于 2019-8-16 00:40
RTE环境直接添加就行,后面会做个移植教程的。

请问,我在MDK5里并没有看到“调试组件”啊,只有配置用的manage run-time环境
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106557
QQ
 楼主| 发表于 2020-2-6 00:56:45 | 显示全部楼层
perfect_co 发表于 2020-2-5 10:00
请问,我在MDK5里并没有看到“调试组件”啊,只有配置用的manage run-time环境

进入调试状态才可以看到。
回复

使用道具 举报

7

主题

33

回帖

54

积分

初级会员

积分
54
发表于 2020-5-22 10:31:58 | 显示全部楼层
啥时候出个移植说明就好了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106557
QQ
 楼主| 发表于 2020-5-22 10:43:13 | 显示全部楼层
king3306 发表于 2020-5-22 10:31
啥时候出个移植说明就好了

这个可以有,写个移植专题还是没问题的。
回复

使用道具 举报

61

主题

62

回帖

245

积分

高级会员

积分
245
发表于 2020-7-9 23:00:28 | 显示全部楼层
经过大量测试吗? 我用在项目中担心
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106557
QQ
 楼主| 发表于 2020-7-10 02:31:17 | 显示全部楼层
vzhaodan 发表于 2020-7-9 23:00
经过大量测试吗? 我用在项目中担心

最新的V6.X版本还没有大批量测试过。

老版已经测试了,项目使用没问题,可以直接用于产品量产:

【原创开源应用第2期】基于RL-USB和RL-FlashFS的完整NAND解决方案,稳定好用,可放心用于产品批量
http://www.armbbs.cn/forum.php?m ... 7118&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 2020-12-19 10:58:50 | 显示全部楼层
你好 ,我移植到H750 一直有问题,请教下一般是哪里不对

挂载文件系统成功 (fsOK:成功)
挂载文件系统失败 (fsNoFileSystem:文件系统未格式化)
文件系统格式中......
文件系统格式化 (fsOK:成功)
------------------------------------------------------------------
NAND没有volume label
NAND的volume serial number是 -1
NAND剩余容量 =          0字节
NAND总容量 = 502.923.264字节
SD卡的总扇区数 = 982272
NAND读扇区大小 = 512字节
NAND写扇区大小 = 512字节
卸载文件系统成功
------------------------------------------------------------------
挂载文件系统失败 (fsNoFileSystem:文件系统未格式化)
卸载文件系统成功
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106557
QQ
 楼主| 发表于 2020-12-19 12:57:54 | 显示全部楼层
tankooo 发表于 2020-12-19 10:58
你好 ,我移植到H750 一直有问题,请教下一般是哪里不对

挂载文件系统成功 (fsOK:成功)

低格了没,可以考虑先低格一下。
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 2020-12-21 10:41:35 | 显示全部楼层
谢谢,低格了还是不行
挂载文件系统成功 (fsOK:成功)
挂载文件系统失败 (fsNoFileSystem:文件系统未格式化)
文件系统格式中......
文件系统格式化 (fsDriverError:读写操作)
------------------------------------------------------------------
Volume访问错误
NAND剩余容量 = 1266874889.709.551.613字节
NAND总容量 = 27.000.832字节
SD卡的总扇区数 = 52736
NAND读扇区大小 = 512字节
NAND写扇区大小 = 512字节
卸载文件系统成功
------------------------------------------------------------------
挂载文件系统成功 (fsOK:成功)
挂载文件系统失败 (fsNoFileSystem:文件系统未格式化)
文件系统格式中......
文件系统格式化 (fsOK:成功)
------------------------------------------------------------------
NAND没有volume label
NAND的volume serial number是 -1
NAND剩余容量 =          0字节
NAND总容量 = 27.000.832字节
SD卡的总扇区数 = 52736
NAND读扇区大小 = 512字节
NAND写扇区大小 = 512字节
卸载文件系统成功
------------------------------------------------------------------
挂载文件系统成功 (fsOK:成功)
挂载文件系统失败 (fsNoFileSystem:文件系统未格式化)
文件系统格式中......
文件系统格式化 (fsOK:成功)
------------------------------------------------------------------
NAND没有volume label
NAND的volume serial number是 -1
NAND剩余容量 =          0字节
NAND总容量 = 27.000.832字节
SD卡的总扇区数 = 52736
NAND读扇区大小 = 512字节
NAND写扇区大小 = 512字节
卸载文件系统成功

一直出现这个
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 2020-12-21 10:44:51 | 显示全部楼层
貌似这个函数 没有用,我直接堵塞了,程序也可以跑,是不是没被调用啊
int32_t Driver_NAND0_GetDeviceBusy (uint32_t dev_num)
{
    while(1)
    {
        dev_num=dev_num;
    }
        return 0;
}
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 2020-12-21 11:15:59 | 显示全部楼层
测试任务如下

void AppTaskMsgPro(void *argument)
{
    uint8_t result;
   
    MX_FMC_Init();
    osDelay(100);
    HAL_NAND_Reset(&hnand1);
    osDelay(100);
   
    #if 0
    printf("低格...\r\n");
    for(uint16_t i=0;i<2048;i++)
    {
        nandadd.Block=i;
        nandadd.Plane=0;
        HAL_NAND_Erase_Block(&hnand1,&nandadd);
        osDelay(10);
    }   
    osDelay(100);
    for(uint16_t i=0;i<2048;i++)
    {
        nandadd.Block=i;
        nandadd.Plane=1;
        HAL_NAND_Erase_Block(&hnand1,&nandadd);
        osDelay(10);
    }   
    osDelay(100);
    #endif
   
   
    result = finit("N0:");
        if(result != NULL)
        {
                /* 如果挂载失败,务必不要再调用FlashFS的其它API函数,防止进入硬件异常 */
                printf("挂载文件系统失败 (%s)\r\n", ReVal_Table[result]);
        }
        else
        {
                printf("挂载文件系统成功 (%s)\r\n", ReVal_Table[result]);
        }
          
    osDelay(100);
    ViewSDCapacity();
   
    //osDelay(100);
    //CreateNewFile();
        while(1)
        {
                osDelay(100);
        }       
}

硬件应该是好的,直接用hal nand库 读,写,擦除都可以用.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106557
QQ
 楼主| 发表于 2020-12-22 09:59:11 | 显示全部楼层
tankooo 发表于 2020-12-21 11:15
测试任务如下

void AppTaskMsgPro(void *argument)

配置选项里面的参考配置没问题吧
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2020-12-24 10:02:21 | 显示全部楼层
tankooo 发表于 2020-12-21 10:41
谢谢,低格了还是不行
挂载文件系统成功 (fsOK:成功)
挂载文件系统失败 (fsNoFileSystem:文件系统未格 ...

我现在调试nandflash,出现的情况和你一样,急需解决。
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2020-12-30 17:02:09 | 显示全部楼层
本帖最后由 ychaojie@gmail. 于 2020-12-30 18:09 编辑
wavesurge 发表于 2020-12-24 10:02
我现在调试nandflash,出现的情况和你一样,急需解决。

我改了一下堆栈大小就能正常读写了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106557
QQ
 楼主| 发表于 2020-12-31 09:57:54 | 显示全部楼层
ychaojie@gmail. 发表于 2020-12-30 17:02
我改了一下堆栈大小就能正常读写了

好的,解决了就好
回复

使用道具 举报

2

主题

31

回帖

37

积分

新手上路

积分
37
发表于 2021-1-5 16:20:28 | 显示全部楼层
有RL_USB的虚拟串口工程吗?
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2021-1-6 15:05:48 | 显示全部楼层
刚调通了nand和emmc的rl-flash和usb,分享下遇到的坑。我是参照v7的工程进行修改,使用rte中cubemx生成的定时器、rcc等驱动,cube生成的nand和emmc驱动好像有问题,直接使用会导致媒介错误提示,更换v7带的驱动后正常读写。使用cubemx的device驱动是要注意将USBD_STM32H7xx.c文件中#include“stm32h7xx.h往上移,否则会找不到很多定义。实测nand写2.3m,读4m,与v7的板子差不多,emmc读写均约11m,都带掉电保护。
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2021-1-6 15:07:44 | 显示全部楼层
生成的最终工程
111.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106557
QQ
 楼主| 发表于 2021-1-7 08:04:38 | 显示全部楼层
aming882046 发表于 2021-1-5 16:20
有RL_USB的虚拟串口工程吗?

RL-USB教程在制作中,会有虚拟串口的案例:

RL-USB教程开工制作,各种常用USB通信协议和上位机案例统统整出来,更新至第9章(2020-11-16)
http://www.armbbs.cn/forum.php?m ... 9710&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

1

主题

12

回帖

15

积分

新手上路

积分
15
发表于 2021-9-6 15:04:07 | 显示全部楼层
这个可以移植到其他RTOS或者裸机跑吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106557
QQ
 楼主| 发表于 2021-9-7 00:08:29 | 显示全部楼层
higeo 发表于 2021-9-6 15:04
这个可以移植到其他RTOS或者裸机跑吗

可以,整个CMSIS-RTOS封装层更方便。
回复

使用道具 举报

26

主题

70

回帖

148

积分

初级会员

积分
148
发表于 2022-3-5 10:02:30 | 显示全部楼层
主要关心收不收费, 公司都喜欢白嫖.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106557
QQ
 楼主| 发表于 2022-3-5 10:07:20 | 显示全部楼层
hjhj7591418 发表于 2022-3-5 10:02
主要关心收不收费, 公司都喜欢白嫖.

喜欢白嫖的话,上FileX+LevelX,开源的,国外的单片机厂家差不多都免费使用了。
如果是国产单片机的话,可以Github上搜些开源方案玩。
回复

使用道具 举报

1

主题

30

回帖

33

积分

新手上路

积分
33
发表于 2023-6-13 10:01:03 | 显示全部楼层
硬汉哥我有个疑问,这个只初始化了FMC接口,FMC读写接口   与  文件系统的读写接口没有看到在某个地方连接,这个也不用管嘛?(我看例子里好像没有管这些都是配置了下就可以用了)还有这个CMSIS Driver底下的NAND 驱动   custom与Memery BUS有什么区别~
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106557
QQ
 楼主| 发表于 2023-6-13 10:04:02 | 显示全部楼层
ldd69arm 发表于 2023-6-13 10:01
硬汉哥我有个疑问,这个只初始化了FMC接口,FMC读写接口   与  文件系统的读写接口没有看到在某个地方连接 ...

CMSIS-Driver已经都做了支持。
回复

使用道具 举报

0

主题

8

回帖

8

积分

新手上路

积分
8
发表于 2023-12-11 11:31:37 | 显示全部楼层
硬汉哥,下载下来的V7-FreeRTOS + RL-FlashFS V6.X + NAND,编译不通过,三个软件包的版本按图片上安装的,
fs.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106557
QQ
 楼主| 发表于 2023-12-11 13:36:34 | 显示全部楼层
jungle1989 发表于 2023-12-11 11:31
硬汉哥,下载下来的V7-FreeRTOS + RL-FlashFS V6.X + NAND,编译不通过,三个软件包的版本按图片上安装的, ...

从这个提示来看,你的安装环境是不对的,你那边应该没有正常打开这个例子,打开的时候弹出了好几个问题。

这个帖子里面的早期例子严重依赖环境,必须使用指定版本,其他版本不可以安装。

解决办法
1、MDK使用5.26, 然后安装帖子里面截图的这几个软件包,注意不要安装其他版本,再重新解压出来一个例子编译
2、或者此贴的解决办法,这个是后来做的一个NAND的例子,可以使用新版打开,你试试正常不

BSP视频教程第18期:基于NAND,eMMC,SD卡和U盘的BootLoader实战,带CRC完整性校验(2022-06-16)
https://www.armbbs.cn/forum.php? ... 3053&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

0

主题

8

回帖

8

积分

新手上路

积分
8
发表于 2023-12-11 17:43:35 | 显示全部楼层
本帖最后由 jungle1989 于 2023-12-11 18:25 编辑

谢谢硬汉哥,Keil5.30编译成功,使用的是MT29F4G08ABADA,文件写入成功,也能正常查询到目录,但读文件失败。
配置如下:

#elif NAND_TYPE == MT29F4G08ABADA
        #define NAND_PAGE_SIZE             ((uint16_t)0x0800) /* 2 * 1024 bytes per page w/o Spare Area */
        #define NAND_BLOCK_SIZE            ((uint16_t)0x0040) /* 64 pages per block */
        #define NAND_ZONE_SIZE             ((uint16_t)0x0800) /* 2048 Block per zone */
        #define NAND_SPARE_AREA_SIZE       ((uint16_t)0x0040) /* last 64 bytes as spare area */
        #define NAND_MAX_ZONE              ((uint16_t)0x0002) /* 2 zones of 2048 block */
        #define NAND_ADDR_5                         1                        /* 1表示只发送4个字节的地址,1表示5个 */





还有哪儿需要配置呢?

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 04:51 , Processed in 0.323469 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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