SMARTARM2200 ADS工程在IAR EWARM 5.3上的移植(10)-uCFS的移植(uCFS在SD上的移植)

SD卡驱动完成之后接下来就是实现uCFS与SD卡的接口.主要代码实现在DEVICE/SDMMC/sd_drv.c中.
整个工程代码可在http://download.csdn.net/source/1796291下载到.

1.添加对MMC/SD的支持配置
在fs_conf.h中打开对MMC和uCOSII的支持
#define FS_OS_UCOS_II                1    /* 1 = use uC/OS-II */
#define FS_USE_MMC_DRIVER       1    /* MMC/SD card driver */
其他配置可参考例子工程,大部分按照默认配置,具体含义可参考注释

2.增加文件系统与SD驱动的接口
在uCFS中通过FS__device_type的结构体来声明,该结构体原型为:
定义了读写,状态还有ioctl函数

在sd_drv.c中定义

注意该驱动的名称必须为mmc,否则无法正常工作.因为在fs_info.c中定义了如下的结构,而uCFS正式通过FS__pDevInfo来访问设备,因此必须保证命名的一致性,除非两处名称修改成同一个名称.这样就可以通过FS_FOpen("mmc://flash.txt", "rb")之类的函数来访问文件系统了.

3.FS_MMC_HW_X_BusyLedOff和FS_MMC_HW_X_BusyLedOn
这个两个函数是显示MMC状态的,这里采用LED显示的方式.

还有一个函数FS_MMC_HW_X_IsPresent用来检测SD卡是否插入,调用之前实现的SD_ChkCard即可

4.FS_GetMediaStartSec
这个函数用来获取MBR的信息,从主引导记录或者分区表获得逻辑起始sector地址
具体的参数与FAT文件系统有关

5._FS_MMC_DevStatus
这个函数来获得SD卡的状态,首先进行一些状态的检测,输出,设置标志,接着初始化SD卡,然后读取SD卡的第一块,调用上面的FS_GetMediaStartSec获得逻辑起始地址

6._FS_MMC_DevRead
这个函数实现读SD卡的操作,主要就是调用SD_ReadBlock来进行数据的读操作,将读到的数据放到参数传递的缓冲区中.

7._FS_MMC_DevWrite
这个函数实现写SD卡的操作.实现方式与读相似,调用SD_WriteBlock将数据写到指定的sector中.实际写时加了一个起始sector地址的偏移量.

8._FS_MMC_DevIoCtl
这个函数用来实现不同的命令,主要实现了FS_CMD_GET_DEVINFO命令,来获得存储设备信息
主要过程就是首先读第一个SD块分析出起始逻辑sector地址,然后读该sector内容获得FAT文件系统的信息

9.一个简单的测试代码,测试uCFS是否正常工作

如果运行成功,会输出如下的信息:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值