[ZLG-MCU] SD卡向普通E2一样读写

[复制链接]
 楼主| ren35240039 发表于 2009-11-25 11:36 | 显示全部楼层 |阅读模式
最近看了看SD卡的读写,希望能向E2一样随意读写,但是SD规范里写到,只能块读、块写,而且对起始地址和结束地址都有要求。请教各位大虾,sd卡读写起始地址能不能不是512的整数倍,还有怎样设置CSD寄存器内容,谢谢!
mohanwei 发表于 2009-11-25 12:00 | 显示全部楼层
靠驱动实现。
在RAM里开辟一个扇区的缓冲区……
xwj 发表于 2009-11-25 12:07 | 显示全部楼层
呵呵,LS正解,你应该这样做:
块读、然后改写缓存,最后块写回去:)
 楼主| ren35240039 发表于 2009-11-25 13:36 | 显示全部楼层
哦,我用的是NEC单片机读SD 卡,现在块读可以设定长度,但是起始地址必须是512整数倍,块写时长度只有512通过,起始地址也必须是512整数倍,不能是任意地址, 不知怎样设定?
kiton_law 发表于 2009-11-25 14:01 | 显示全部楼层
SD卡是块设备,物理层的读写只能通过块,如果要进行流式读写,需要增加中间层,使用逻辑接口进行流读写。

比如中间层有一个缓冲区,上层输入一个地址的时候,中间层把地址转换成块地址和块地址内偏移地址,然后通过物理接口把该块读到缓冲区,然后在把缓冲区中对应你给的地址的偏移地址内容返回给上层,通过缓冲区模拟流式读写,,这样在上层看来就和流读写一样了,文件系统在块设备上就是干这项工作的,但你不需要实现文件系统那么复杂,只需要实现块到流的转换和缓冲机制。
kiton_law 发表于 2009-11-25 14:03 | 显示全部楼层
类似的东西比如Nand Flash也是块设备,硬盘也是块设备,Nor Flash写入的时候也是块设备(读的时候是流设备)

PS:流设备的读取单位为字节时也叫做字符设备。
 楼主| ren35240039 发表于 2009-11-25 17:20 | 显示全部楼层
首先感谢各位大虾指教。我在SD规范协议里看到CSD寄存器里有四个位是可以控制块写的长度,即起始地址和结束地址可以为任意字节值,不知有没有哪位大虾改过其值,实现过此操作,望指教,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部