SD卡与fat32

「已注销」 2014-09-11 04:34:33
在已经移植好sd io和fat32的板子上读写文件,请问几个问题:

1、8G的SD卡现在被搞成这样:
winhex查看物理驱动器,显示分区类型:无法分区的... 文件是:volume(根目录),打开volume后,有空余空间,引导扇区,FAT1,FAT2,空闲空间。

我不记得之前这个SD有没有分区。请问现在我应不应该将SD分一个区? 还是说如果不分区就不能调用fatfs 的mount挂载,读写文件什么的?
也不知道fat32支不支持8G的区

2、现在SD卡里这些文件删不掉,不知道怎么来的,不知道怎么删除(格式化没用)
3、顺便问问winhex 里为什么这些文件offset都是0?原因大概是基地址不同,winhex哪里看基地址?

感谢!!
...全文
277 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2014-09-26
  • 打赏
  • 举报
回复
感谢!SDHC确实只支持512的块写!
of123 2014-09-18
  • 打赏
  • 举报
回复
实际上是与你调用的 f_write 函数的具体实现有关的,要看它如何将你的命令转为 SD 卡的 CMD24 或 CMD25 命令,以及它对上层调用有什么要求。 在 SD 卡的层面,符合大容量规范的卡,仅支持长度为 512B 的块写。对于块的部分写,应该是中间层先读出部分写的块,改写部分内容,再写入。 因此,你的问题,应该去看中间层的函数接口说明。
woshi_ziyu 2014-09-18
  • 打赏
  • 举报
回复
楼主用的是fatfs的哪个版本 修改一下配置文件
「已注销」 2014-09-16
  • 打赏
  • 举报
回复
引用 2 楼 of123 的回复:
SD 卡的规范本身不支持分区。你可以通过中间层人为地分区。 另外,所谓 SD 卡支持 FAT 文件系统什么的,都是中间层将 SD 卡报告为一个可移除多媒体存储驱动器的缘故。它将上层的文件读写命令,转换为 SD 卡的读写命令。
谢谢!照你说的我把中间层看了一遍。 请问f_read()的参数 用户自定义缓冲区 大小按照什么来设置? 见 http://www.openedv.com/posts/list/27427.htm 里读文件的说明图 因为我试了一遍,还是摸不着头脑, 程序如下: void xxx void{ //读文件,并写入新文件 char buf[BUF_SIZE] = {0}; // 改的是BUF_SIZE char *data = buf; UINT br; res = f_mount(0, &fs); res = f_open(&file, "1.dsb", FA_OPEN_ALWAYS | FA_READ); res = f_read(&file,data,sizeof(buf),&br); f_close(&file); res = f_open(&file, "1_temp.dsb", FA_CREATE_ALWAYS | FA_WRITE); res = f_write(&file, data, sizeof(buf), &br); res = f_close(&file); return TRUE; } 结果如下: 已知源文件大小:1616B 1.原来以为buf size 要大于等于(1616 mod 512=)80 Byte 但是20 Byte也不报错。结果是只写入开始的20B size为80,不报错,写入80B 20,不报错,写入20B 2.size为1616,溢出报错(hard fault),且未创建文件 1615,同1616 猜需要size mod 512=整数(包括0)?? 1024,同1616 512,不报错,写入前80B 不报错,写入前512B ( 写入512B这次可信。什么造成的80B结果????????) 猜确实跟mod余数(80)有关 2048,同1616
of123 2014-09-12
  • 打赏
  • 举报
回复
SD 卡的规范本身不支持分区。你可以通过中间层人为地分区。 另外,所谓 SD 卡支持 FAT 文件系统什么的,都是中间层将 SD 卡报告为一个可移除多媒体存储驱动器的缘故。它将上层的文件读写命令,转换为 SD 卡的读写命令。
「已注销」 2014-09-11
  • 打赏
  • 举报
回复
SD 属性里显示是FAT32,但是为什么文件不像别的那么清晰,有这么多乱七八糟的文件呢???

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧