最近移植了一个SD卡的文件系统,用掉两周多的时间。
硬件环境:
s3c44b0平台,SD卡接口用SPI模式,IO口模拟SPI通讯。
编译环境:
ADS,uCosII平台
步骤:
1、评估了几个SD卡驱动的源代码。
网上的SD卡的驱动源代码很多,鱼龙混杂,做的比较不错的有周立功公司的(我找到的是05年1月的V1.0版本),条理很清晰,但个人感觉不完善。
另外一个,也是我用到的,是一个开源项目,网址:
http://www.roland-riegel.de/sd-reader/index.html
AVR平台下的SD卡驱动和FAT文件系统。
只是使用ANSI-C99标准,编译器不支持,变量须做修改,所以,只使用了它的SD卡驱动部分。
使用到的文件有:
sd_raw.c // SD卡驱动
sd_raw.h // SD卡头文件
sd_raw_config.h // SD卡设置文件
byteordering.c // 类型转换
byteordering.h
2、SD卡驱动底层函数移植
在sd_raw_config.h文件中,定义了使用到的IO口:
在sd_raw.c文件中,修改了如下函数:
测试了sd_raw_read()函数,可以正确读出SD卡block0的数据,移植完成