硬汉嵌入式论坛

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

[RL-FlashFS] 关于新版本的RL-FlashFS文件系统fileSystem移植问题

[复制链接]

2

主题

31

回帖

37

积分

新手上路

积分
37
发表于 2016-5-29 11:10:22 | 显示全部楼层 |阅读模式
在Keil 5.0之后RL-Flashfs的改变不少
最近想在SPI Flash上跑新版本的filesystem
与之前的RL-Flashfs不是的是驱动接口也变了
RL-Flashfs 基本是只要提供初始化、读、写、擦出接口即可。
Keil 5.0之后为了Pcak 包方便配置做了修改
大概的看了层次如下:
fileststem- > flash api(初始化、读、写、擦出接口) -> cmsis driver -> device


其中flash api是需要针对片子移植的,其它分部都是标准Pack里选和配置
且没有专门的SPI Flash选项,在安装目录下找到了模版文件,
C:\Keil_v5\ARM\PACK\Keil\MDK-Middleware\7.1.0\FileSystem\Driver\Flash
Flash_Template.c
Flash_Template.h
目前正在移植到W25xxx
还没有成功
大家有空一起研究。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2016-5-29 11:19:24 | 显示全部楼层
帮顶
回复

使用道具 举报

2

主题

31

回帖

37

积分

新手上路

积分
37
 楼主| 发表于 2016-5-29 12:36:56 | 显示全部楼层
需要针对芯片实现以下几个接口:
ARM_DRIVER_VERSION(*     GetVersion )(void)
     Pointer to ARM_Flash_GetVersion : Get driver version.

ARM_FLASH_CAPABILITIES(*     GetCapabilities )(void)
     Pointer to ARM_Flash_GetCapabilities : Get driver capabilities.

int32_t(*     Initialize )(ARM_Flash_SignalEvent_t cb_event)
     Pointer to ARM_Flash_Initialize : Initialize Flash Interface.

int32_t(*     Uninitialize )(void)
     Pointer to ARM_Flash_Uninitialize : De-initialize Flash Interface.

int32_t(*     PowerControl )(ARM_POWER_STATE state)
     Pointer to ARM_Flash_PowerControl : Control Flash Interface Power.

int32_t(*     ReadData )(uint32_t addr, void *data, uint32_t cnt)
     Pointer to ARM_Flash_ReadData : Read data from Flash.

int32_t(*     ProgramData )(uint32_t addr, const void *data, uint32_t cnt)
     Pointer to ARM_Flash_ProgramData : Program data to Flash.

int32_t(*     EraseSector )(uint32_t addr)
     Pointer to ARM_Flash_EraseSector : Erase Flash Sector.

int32_t(*     EraseChip )(void)
     Pointer to ARM_Flash_EraseChip : Erase complete Flash.

ARM_FLASH_STATUS(*     GetStatus )(void)
     Pointer to ARM_Flash_GetStatus : Get Flash status.

ARM_FLASH_INFO *(*     GetInfo )(void)
     Pointer to ARM_Flash_GetInfo : Get Flash information.



而且这几个接口依赖于cmsis driver包。
回复

使用道具 举报

2

主题

31

回帖

37

积分

新手上路

积分
37
 楼主| 发表于 2016-5-29 16:17:53 | 显示全部楼层
在Keil 5.20中官方给的模块文件最后一个有问题:
错误:
  1. /**
  2.   \\fn          int32_t ARM_Flash_GetInfo (ARM_FLASH_INFO *info)
  3.   \\brief       Get Flash information.
  4.   \\param[out]  info  Pointer to Flash information \\ref ARM_FLASH_INFO retrieved.
  5.   \\return      \\ref execution_status
  6. */
  7. static int32_t GetInfo (ARM_FLASH_INFO *info) {
  8.   if (info == NULL) {
  9.     return ARM_DRIVER_ERROR_PARAMETER;
  10.   }
  11.   info = &FlashInfo;
  12.   return ARM_DRIVER_OK;
  13. }
复制代码



正确的应该是:
  1. /**
  2.   \\fn          int32_t ARM_Flash_GetInfo (ARM_FLASH_INFO *info)
  3.   \\brief       Get Flash information.
  4.   \\param[out]  info  Pointer to Flash information \\ref ARM_FLASH_INFO retrieved.
  5.   \\return      \\ref execution_status
  6. */
  7. static int32_t GetInfo (ARM_FLASH_INFO *info) {
  8.   if (info == NULL) {
  9.     return ARM_DRIVER_ERROR_PARAMETER;
  10.   }
  11.   info = &FlashInfo;
  12.   return ARM_DRIVER_OK;
  13. }
复制代码
回复

使用道具 举报

2

主题

31

回帖

37

积分

新手上路

积分
37
 楼主| 发表于 2016-5-30 13:57:14 | 显示全部楼层
QQ图片20160530135244.png

创建了文件,再删除,占用的空间不释放
之前使用的RL-FlashFs也是这样
站长没有测试过fdelete()
调用fdelete()后文件系统剩下的空间没有增加。
修改一个文件也是,比如原来文件是1KByte,
我改成1byte的内容,文件系统剩下的空间也没有增加。

很是奇怪。
回复

使用道具 举报

2

主题

31

回帖

37

积分

新手上路

积分
37
 楼主| 发表于 2016-5-30 15:55:02 | 显示全部楼层
http://www.keil.com/forum/20206/

应该是驱动层写的有问题
回复

使用道具 举报

2

主题

31

回帖

37

积分

新手上路

积分
37
 楼主| 发表于 2016-5-30 17:31:53 | 显示全部楼层
芯片换成w25Q128
支持64K 擦出
删除文件时会多删除其它文件

好郁闷啊
回复

使用道具 举报

7

主题

16

回帖

37

积分

新手上路

积分
37
发表于 2016-5-30 17:53:11 | 显示全部楼层

回 worldsing 的帖子

worldsing:芯片换成w25Q128
支持64K 擦出
删除文件时会多删除其它文件

好郁闷啊
....... (2016-05-30 17:31) 
如果用KEIL4.74版本的flashfs 就不会出现这个问题了吧?
回复

使用道具 举报

2

主题

31

回帖

37

积分

新手上路

积分
37
 楼主| 发表于 2016-5-30 20:33:44 | 显示全部楼层

回 raulyourhero 的帖子

raulyourhero:如果用KEIL4.74版本的flashfs 就不会出现这个问题了吧? (2016-05-30 17:53) 
明天安装一个4.7的看看
回复

使用道具 举报

2

主题

31

回帖

37

积分

新手上路

积分
37
 楼主| 发表于 2016-5-30 21:03:29 | 显示全部楼层
试验了几次,删除文件是读sector 然后擦出sector
基本能验证我说的
64K内存在两个文件删除其中一个
那就整个64K擦出另外一个文件也没有了
打断点测试的
回复

使用道具 举报

2

主题

31

回帖

37

积分

新手上路

积分
37
 楼主| 发表于 2016-5-30 21:06:45 | 显示全部楼层
我把移植完的代码传上

大家有空验证一下看看

但愿不是官方库的bug

PS:使用的是官方提供的模版文件改的,其中在3楼就发现了一个BUG
回复

使用道具 举报

2

主题

31

回帖

37

积分

新手上路

积分
37
 楼主| 发表于 2016-5-30 21:10:08 | 显示全部楼层
Keil5FileSystem.zip (84 KB, 下载次数: 350)
硬件:W25Q128
些代码只使用了4Mbyte
回复

使用道具 举报

12

主题

48

回帖

84

积分

初级会员

积分
84
发表于 2018-2-28 15:26:46 | 显示全部楼层
谢谢
回复

使用道具 举报

5

主题

68

回帖

83

积分

初级会员

积分
83
发表于 2020-2-21 15:59:34 | 显示全部楼层
用模板改,让我有点望而却步,看见有N25Q032A的驱动,就稍微一改试了下手上的N25Q128A。驱动成功了但还没有实际用上,一看不支持文件夹,还和FAT不兼容,还是等有这方面需求的时候再试吧
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2020-2-21 16:03:15 | 显示全部楼层
ruboss 发表于 2020-2-21 15:59
用模板改,让我有点望而却步,看见有N25Q032A的驱动,就稍微一改试了下手上的N25Q128A。驱动成功了但还没有 ...

FlashFS用于nor型flash,属于嵌入式类文件系统,而用于其它类型设备是FAT类,也就说FlashFS支持两种类型文件系统。

之所以这么整,主要是因为NOR性的Flash容量比较小,用FAT太浪费。
回复

使用道具 举报

9

主题

28

回帖

55

积分

初级会员

积分
55
发表于 2020-7-3 09:09:17 | 显示全部楼层
请问BUG后来解决了吗,是官方驱动的问题么
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2020-7-3 11:08:33 | 显示全部楼层
jiulinzeng 发表于 2020-7-3 09:09
请问BUG后来解决了吗,是官方驱动的问题么

不是,是修改了底层驱动的实现方式,进入MDK5后,全部开始采用CMSIS-Driver了
回复

使用道具 举报

9

主题

28

回帖

55

积分

初级会员

积分
55
发表于 2020-7-3 14:30:07 | 显示全部楼层
eric2013 发表于 2020-7-3 11:08
不是,是修改了底层驱动的实现方式,进入MDK5后,全部开始采用CMSIS-Driver了

硬汉哥,有没有采用CMSIS-Driver,在W25Q128上面搞文件系统的例子,尝试了一下,没成功
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2020-7-3 17:13:17 | 显示全部楼层
jiulinzeng 发表于 2020-7-3 14:30
硬汉哥,有没有采用CMSIS-Driver,在W25Q128上面搞文件系统的例子,尝试了一下,没成功

本帖12楼,楼主发了他的测试代码,你看看是否正常。
回复

使用道具 举报

9

主题

28

回帖

55

积分

初级会员

积分
55
发表于 2020-7-10 14:29:08 | 显示全部楼层
worldsing 发表于 2016-5-29 16:17
在Keil 5.20中官方给的模块文件最后一个有问题:
错误:

正确的代码和错误的代码怎么是一样的啊
回复

使用道具 举报

9

主题

28

回帖

55

积分

初级会员

积分
55
发表于 2020-7-17 13:40:27 | 显示全部楼层
eric2013 发表于 2020-7-3 17:13
本帖12楼,楼主发了他的测试代码,你看看是否正常。

楼主的代码用不起来,一直想搞RL-TCPnet的FTP的,就卡在文件系统这儿了,搞了快一周了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2020-7-17 14:39:35 | 显示全部楼层
jiulinzeng 发表于 2020-7-17 13:40
楼主的代码用不起来,一直想搞RL-TCPnet的FTP的,就卡在文件系统这儿了,搞了快一周了

还是你之前数的W25Q的SPI Flash?
回复

使用道具 举报

9

主题

28

回帖

55

积分

初级会员

积分
55
发表于 2020-7-17 16:25:03 | 显示全部楼层
eric2013 发表于 2020-7-17 14:39
还是你之前数的W25Q的SPI Flash?

是的,官方没有提供W25Q的驱动,自己改的驱动,各种小问题,一会不能读,一会删除有问题。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-1 07:22 , Processed in 0.752274 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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