打印

【我的DIY设计】在STM32F3 Discovery中移植RL-FlashFS

[复制链接]
9129|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 gaupen1186 于 2013-1-20 23:39 编辑

最近一直忙的不可开交,自从6号拿到板子,一直没怎么顾得上深入玩玩,那陀螺仪跟加速度传感器真是挺诱人的,只可惜还没时间去弄。本来打算趁着这个周末玩玩呢,谁知两天都临时有事,昨天去火车站接人,今天又去郑州东站接人,还偏偏赶上下大雪晚点,弄到刚才11:10分才回到家里,到现在肚子还空着呢。。。万幸的是,昨天晚上提前写了点,现在离21号零点还差半小时呢,终于能多少拿出点东西来,要不然就悲剧了,怎么对得起ST跟21ic辛辛苦苦为咱着想呢!好了,下面进入正题,把word贴上来,然后煮点面吃去。。。等我吃饱喝足,再来继续完善帖子。

在Mini STM32中移植RL-FlashFS
嵌入式文件系统现在非常流行,常用的嵌入式文件系统有FATfs,ZLGfs,znFAT等,虽然它们各有优点吧,但总归是一个独立的文件系统,移植到STM32 F3上还是需要费一番功夫的。
RL_FlashFS是Keil ARM自家的嵌入式文件系统,包含在arm mdk专业版本中。其实,RL-FlashFS是RL-ARM的一部分,它可以脱离RTX内核独立运行。不得不说,keil给我们提供了一个非常好的开发环境,有操作系统,协议栈,文件系统,usb,can。相对于其他文件系统,RL_FlashFS的移植还是非常简单的,因为keil已经为我们做好了很多很多工作,我们需要做的已经很少了,另外,keil也提供了非常详尽的移植手册,步骤,范例等。
在性能方面,keil也提供了非常详细的数据,如下:

Board

  
Device
  
  
CPU Core
  
  
CPU Speed
  [MHz]
  
  
Card Interface
  
  
Write
  [KB/s]
  

Read
  [KB/s]


AT91SAM9260-EK

  
Atmel AT91SAM9160
  
  
ARM9
  
  
96.1
  
  
SD4 at 25MHz
  
  
4785.0
  

5044.0


AT91SAM9261-EK

  
Atmel AT91SAM9161
  
  
ARM9
  
  
96.1
  
  
SD4 at 25MHz
  
  
4790.6
  

5069.3


AT91SAM9G20-EK

  
Atmel AT91SAM9G20
  
  
ARM9
  
  
99.1
  
  
SD4 at 25MHz
  
  
4899.5
  

5418.0


AT91SAM9RL-EK

  
Atmel AT91SAM9RL64
  
  
ARM9
  
  
100.0
  
  
SD4 at 25MHz
  
  
4096.0
  

5211.2


MCB2400

  
NXP LPC2468
  
  
ARM7
  
  
48.0
  
  
SD4 at 24MHz
  
  
4084.3
  

5525.9


MCB2300

  
NXP LPC2368
  
  
ARM7
  
  
48.0
  
  
SD4 at 24MHz
  
  
3946.3
  

5330.6


MCB2140

  
NXP LPC2148
  
  
ARM7
  
  
60.0
  
  
SPI at 7.5MHz
  
  
299.4
  

313.4


MCBSTR9

  
ST STR912
  
  
ARM9
  
  
48.0
  
  
SPI at 12MHz
  
  
355.2
  

357.1


MCBSTR750

  
ST STR750
  
  
ARM7
  
  
60.0
  
  
SPI at 15MHz
  
  
402.2
  

416.1


MCBSTM32

  
ST STM32
  
  
Cortex-M3
  
  
72.0
  
  
SPI at 18MHz
  
  
711.1
  

758.1


LM3S8962

  
Luminary LM3S8962
  
  
Cortex-M3
  
  
50.0
  
  
SPI at 12.5MHz
  
  
537.8
  

607.6


LM3S6965

  
Luminary LM3S6965
  
  
Cortex-M3
  
  
50.0
  
  
SPI at 12.5MHz
  
  
539.2
  

603.6


LM3S3768

  
Luminary LM3S3768
  
  
Cortex-M3
  
  
50.0
  
  
SPI at 12.5MHz
  
  
539.5
  

603.8


从上表可以看出,STM32的F1系列,在72Mhz的spi18Mhz模式下,已经能达到七百多KB/s的读写速度,说明RL_FlashFS的性能还是非常不错的。
(这些数据都可以从keil Arm MDK的帮助手册中找到。下面的移植步骤也是参考自其中,只是另外修改增加了一些个人心得与注意事项。)
不再废话这么多了,下面就进入正题,开始真正的移植。
首先,从整体上来概括一下:
第一,肯定是先创建好工程文件,初始化mcu等等一些列必须的事情,然后就是拷贝RL_FlashFS相关的文件,添加进工程内,下面是配置spi接口,然后修改spi与sd卡的接口函数,最后最后调试烧写。
一、 从mdk安装目录内拷贝File_Config.c、FS_CM3.lib、fs_time.c、Retarget.c、SPI_STM32F103.c到自己工程文件夹内。
二、 添加File_Config.c、FS_CM3.lib、fs_time.c、Retarget.c、SPI_STM32F103.c到工程中。
三、 在main.c主函数文件中添加头文件RTL.h。
四、 打开File_Config.c,切换到 Configuration Wizard 模式,如图配置完成后切换回代码编辑模式并保存。

五、 修改SPI_STM32F103.c文件中关于spi以及片选CS的配置。(很关键很重要的一步)
1. Init(),UnInit(),Send,SendBuf,RecBuf,BusSpeed函数一般不需要改动。
2. SetSS(u32 ss)函数,也就是SD卡片选函数。除函数名不变,函数内部全部重写,(按如下思路),先设置gpio为推挽输出(这个都会吧?太简单了,直接写寄存器或者用库函数都行),然后判断参数ss为0时,片选CS拉低,ss为非0时,片选CS拉高。

3. CheckMedia函数。如果你的硬件用到了SD卡写保护,那么只需要将其修改成对应的gpio就行。如果没用到写保护,那更简单,直接来一句“stat |= M_INSERTED;”将此函数写死。
六、 对于STM32平台,到此就移植完毕,你可以尽情的参照帮助文件里相关函数来操作SD卡了。
沙发
gaupen1186|  楼主 | 2013-1-20 23:39 | 只看该作者
占楼备用~~~

使用特权

评论回复
板凳
gaupen1186|  楼主 | 2013-1-20 23:39 | 只看该作者
继续占楼备用~~~

使用特权

评论回复
地板
gaupen1186|  楼主 | 2013-1-20 23:40 | 只看该作者
先到这,饿死我了,吃饱了再回来继续完善。

使用特权

评论回复
5
fanwenbing| | 2013-12-17 11:36 | 只看该作者
亲 你好 我看了你的帖子 可是有的地方还有点疑惑  能请教吗 我扣扣 2263281023

使用特权

评论回复
6
prayerwind| | 2013-12-17 14:28 | 只看该作者
FAT Journal是安全模块啊吗?RL_FlashFS是针对Flash的特性的文件系统吗?跪求楼主解答。

使用特权

评论回复
7
wyq200704| | 2013-12-26 20:16 | 只看该作者
遗憾的是如果有sdio的例程就好啦

使用特权

评论回复
8
dongranmengming| | 2014-1-18 15:01 | 只看该作者
make

使用特权

评论回复
9
一清如水| | 2014-2-26 18:04 | 只看该作者
mark


-----------来自为洗衣而生,海尔洗衣机客户端

使用特权

评论回复
10
sinadz| | 2014-2-26 18:11 | 只看该作者
鼓励这种DIY作品,多谢分享

使用特权

评论回复
11
秋天落叶| | 2014-2-26 18:25 | 只看该作者
仔细拜读一下LZ的DIY大作

使用特权

评论回复
12
xsgy123| | 2014-2-26 18:31 | 只看该作者
能DIY的都是牛人啊

使用特权

评论回复
13
xinn2000| | 2014-11-26 11:38 | 只看该作者
东西不错

使用特权

评论回复
14
小班儿| | 2014-11-26 14:48 | 只看该作者
向DIY靠拢

使用特权

评论回复
15
star_tale| | 2015-3-12 10:24 | 只看该作者
求rl-falshfs

使用特权

评论回复
16
gaupen1186|  楼主 | 2015-4-8 11:13 | 只看该作者

mdk 安装目录有。对于keil5,目录为 C:\Keil_v5\ARM\Pack\Keil\MDK-Middleware

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:我是苦瓜脸,苦瓜脸呀苦瓜脸

109

主题

140

帖子

0

粉丝