搜索
bottom↓
回复: 70

刚Google 一个SD卡和FAT16读写源代码 支持长文件名和子目录,一起测试下.

[复制链接]

出0入4汤圆

发表于 2007-11-5 09:12:54 | 显示全部楼层 |阅读模式
点击此处下载ourdev_179854.zip(文件大小:217K)

出0入4汤圆

 楼主| 发表于 2007-11-5 09:24:47 | 显示全部楼层
最近在搞FAT文件系统,SD写的时间太慢,SPI写最高有多快(FAT16+SPI <10M).

出0入4汤圆

发表于 2007-11-5 09:28:10 | 显示全部楼层
好的 谢谢 过些时候测试一下

出0入4汤圆

 楼主| 发表于 2007-11-5 09:34:36 | 显示全部楼层
总算有人回啦,初看了一下还不错,昨天我用本网下的一个测了一下,写文件好慢啊....

出0入4汤圆

 楼主| 发表于 2007-11-5 09:37:00 | 显示全部楼层
对啦小松大虾测了别忘了发个测试情况,我下班后也去测一下.

出0入4汤圆

发表于 2007-11-5 11:54:23 | 显示全部楼层
我还没研究透呢 现在不行啊 最近没时间搞这个

出0入0汤圆

发表于 2007-11-5 13:43:30 | 显示全部楼层
如果也支持FAT32就好了:p

出0入4汤圆

 楼主| 发表于 2007-11-6 08:14:59 | 显示全部楼层
昨晚初测了一下,感觉太酷啦,把测试情况如下:

测试条件: M64  7.3728M  9600,8,1,N  SPI/128  超级终端  Kingston512
测试命令: >disk  显示磁盘信息  可显示磁盘容量和可用空间等信息
          >mkdir 建立目录 
         支持长目录名(我写入中文文件名在超级终端下可显示
         但WINXP下是乱码,可能是编码不对写入的是uncode显示GB码)     
          >cd    进入目录
          >ls    显示文件和目录
          >touch 创建文件 支持长文件件名
          >write 写入文件  
                 写入文件是从串口输入文件的,在上面的条件上从超级终端里输入
                 信息并写入比较流畅(其实还可提高,满足我的要求)

总结:  程序做了一个类似于DOS的文件和磁盘管理核,在超级终端上使用就像在
     DOS环境下.强烈推介给网友(特别对于做MP3的朋友)移植方便.程序
     还没完全看懂,好像支持多任务的操作系统(个人理解)是一个很好的读
     SD+FAT16的好例程.

出0入0汤圆

发表于 2007-11-6 09:01:24 | 显示全部楼层
"支持长目录名(我写入中文文件名在超级终端下可显示
         但WINXP下是乱码,可能是编码不对写入的是uncode显示GB码)"

应该是写入GBK码显示unicode,所以乱了。
如果是卡原来就有的长文件名,并且是中文的,那用这个程序也不能正确显示。
如果要做必须有两张表,unicode与gbk的互查表。

我以前做过类似的程序,当时想支持中文的,但是因这个原因算了。

出0入0汤圆

发表于 2007-11-6 10:43:03 | 显示全部楼层
原网站地址好像是这个:http://www.roland-riegel.de/sd-reader/index.html
上面有新的程序。

出0入0汤圆

发表于 2008-1-19 01:42:25 | 显示全部楼层
你这个是什么版本,我怎么没有找到
disk mkdir命令

出0入0汤圆

发表于 2008-1-19 10:33:50 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-1-19 11:42:21 | 显示全部楼层
留个记号,以后再拜读

出0入0汤圆

发表于 2008-1-19 12:01:46 | 显示全部楼层
收藏

出0入70汤圆

发表于 2008-1-19 13:08:10 | 显示全部楼层
我也记号

出0入0汤圆

发表于 2008-3-11 14:20:44 | 显示全部楼层
是个好东西,新版的结构非常的好,真佩服这些人写的代码,我就拿来用在我的电路上了,谢谢了

出0入0汤圆

发表于 2008-3-11 19:27:06 | 显示全部楼层
代码效率如何?我最近在研究TFF(TINY FATFS)

出0入0汤圆

发表于 2008-3-11 22:48:40 | 显示全部楼层
刚才试了一下,我的128上可能有点问题,可以看到目录和文件大小,但是显示不了SD卡的信息,也无法创建文件,明天看看代码,今天休息了
这是个好东西,我收藏了,感谢开源

出0入0汤圆

发表于 2008-4-29 11:26:31 | 显示全部楼层
MARK

出0入0汤圆

发表于 2008-4-29 11:35:17 | 显示全部楼层
mark!!

出0入0汤圆

发表于 2008-4-29 12:37:01 | 显示全部楼层
收藏

出0入4汤圆

 楼主| 发表于 2008-4-29 14:18:25 | 显示全部楼层
我已经把上面的文件作了调整了http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=827990&bbs_page_no=3&bbs_id=1000

出0入0汤圆

发表于 2008-4-29 15:57:52 | 显示全部楼层
MARK

出0入0汤圆

发表于 2008-5-14 00:14:35 | 显示全部楼层
看一下 最近在看fat16

出0入0汤圆

发表于 2008-5-14 09:22:05 | 显示全部楼层
收藏

出0入0汤圆

发表于 2008-5-14 10:53:09 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-5-14 16:12:14 | 显示全部楼层
做个记号,要用再来看。

出0入0汤圆

发表于 2008-5-16 09:18:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-5-16 12:03:33 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-5-16 12:24:22 | 显示全部楼层
收藏

出0入0汤圆

发表于 2008-5-16 16:22:01 | 显示全部楼层
收藏,记号
结束手头的项目后就开始研究这个SD卡了

出0入0汤圆

发表于 2008-5-16 18:23:12 | 显示全部楼层
收藏一下...
这样的开源不错

出0入0汤圆

发表于 2008-5-17 15:26:41 | 显示全部楼层
略看了下源码,在性能和可扩充性上做得都不错,如chairang所说,稍加改动即可应用在操作系统上以加载多个文件或多个存储介质,比ZLGFATFS好得多(不知道有没有最新版的,至少没看到,呵呵)具体读速度大约是100KB/S(7.3728的频率下),手头只有M16接了SD卡,所以没有实际测试。
M16只有1K内存,性能不好测,要用大点的内存才好,上面的那个数是跟据以前的实验估算来的,应该相差不大。
另外读写速度还依赖于族大小,实际的程序结构等,总知只要不是对速度要求特别苛刻的场合这个代码足够了。
没做过MP3,bozai可以移植下看看啊,放320K的音乐估计没有问题,呵呵

出0入0汤圆

发表于 2008-5-20 11:22:34 | 显示全部楼层
昨天测试了一下 用的M16 可是只有cd 命令和ls命令有效 其他命令都出错 请问 这个是怎么回事呢? 有人测试过吗
我开始以为是搭焊干扰大 所以 把初始化成功后提高spi速度那里屏蔽了 一直用的慢速spi 还是不行

注释掉这里
/* switch to highest SPI frequency possible */
// SPCR &= ~((1 << SPR1) | (1 << SPR0)); /* Clock Frequency: f_OSC / 4 */
// SPSR |= (1 << SPI2X); /* Doubled Clock Frequency: f_OSC / 2 */
还是不行 嗯 大家帮忙

出0入0汤圆

发表于 2008-5-21 10:30:07 | 显示全部楼层
终于调通了 现在可以创建文件夹和文件了
但是write命令和cat命令还是不会用
请用过的兄弟贴几个write命令和cat命令的例子出来 谢谢

出0入0汤圆

发表于 2008-5-22 09:24:20 | 显示全部楼层
一用cat命令或者write命令 单片机就重启 是什么原因呢?

出0入0汤圆

发表于 2008-5-23 09:29:46 | 显示全部楼层
汗一个 嗯 问题已经解决

出0入0汤圆

发表于 2008-5-30 21:37:34 | 显示全部楼层
好东西,谢谢LZ!

出0入0汤圆

发表于 2008-11-7 10:08:08 | 显示全部楼层
学习一下

现在正搞SD卡的Fat系统

出0入0汤圆

发表于 2008-11-7 12:25:11 | 显示全部楼层
这么爽,回家也试试

出0入0汤圆

发表于 2008-11-15 12:45:41 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2008-11-27 17:47:24 | 显示全部楼层
不错,试试!

出0入0汤圆

发表于 2009-1-15 22:11:10 | 显示全部楼层
记号~~~~~~~~~~~

出0入0汤圆

发表于 2009-1-16 08:50:53 | 显示全部楼层
研究了不少时间,原来按照他的指令倒是没有什么问题,因为我要求的速度不高,也可以使用

在程序中我也加了建立文件等指令,但是我其它要求没有达到,打开文件时,对源代码理解有点混乱



根据我的要求决定增减一些功能

取消长文件名

改成FAT32

主要以下几个功能&nbsp;建立文件(夹),写文件



包括一直遇到的问题

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=2137349&bbs_page_no=1&search_mode=3&search_text=ee168&bbs_id=9999

出0入0汤圆

发表于 2009-1-18 20:44:51 | 显示全部楼层
typedef&nbsp;uint8_t&nbsp;(*sd_raw_interval_handler)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(uint8_t*&nbsp;buffer,&nbsp;uint32_t&nbsp;offset,&nbsp;void*&nbsp;p);



uint8_t&nbsp;sd_raw_read(uint32_t&nbsp;offset,&nbsp;uint8_t*&nbsp;buffer,&nbsp;uint16_t&nbsp;length)

{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//......

}

uint8_t&nbsp;sd_raw_read_interval(uint32_t&nbsp;offset,&nbsp;uint8_t*&nbsp;buffer,&nbsp;uint16_t&nbsp;interval,&nbsp;uint16_t&nbsp;length,&nbsp;sd_raw_interval_handler&nbsp;callback,&nbsp;void*&nbsp;p)

{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//......

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!sd_raw_read(offset,&nbsp;buffer,&nbsp;interval))

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!callback(buffer,&nbsp;offset,&nbsp;p))

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//......

}



partition&nbsp;=&nbsp;partition_open(sd_raw_read,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd_raw_read_interval,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd_raw_write,0);



typedef&nbsp;uint8_t&nbsp;(*device_read_t)(uint32_t&nbsp;offset,&nbsp;uint8_t*&nbsp;buffer,&nbsp;uint16_t&nbsp;length);

typedef&nbsp;uint8_t&nbsp;(*device_read_callback_t)(uint8_t*&nbsp;buffer,&nbsp;uint32_t&nbsp;offset,&nbsp;void*&nbsp;p);

typedef&nbsp;uint8_t&nbsp;(*device_read_interval_t)(uint32_t&nbsp;offset,&nbsp;uint8_t*&nbsp;buffer,&nbsp;uint16_t&nbsp;interval,&nbsp;uint16_t&nbsp;length,&nbsp;device_read_callback_t&nbsp;callback,&nbsp;void*&nbsp;p);



struct&nbsp;partition_struct*&nbsp;partition_open(device_read_t&nbsp;device_read,&nbsp;device_read_interval_t&nbsp;device_read_interval,&nbsp;device_write_t&nbsp;device_write,&nbsp;uint8_t&nbsp;index)

{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//......

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_partition->device_read_interval&nbsp;=&nbsp;device_read_interval;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//......

}



fs->partition->device_read_interval(arg.entry_offset,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sizeof(buffer),

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arg.byte_count,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fat16_dir_entry_read_callback,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dir_entry);

本贴被 ee168 编辑过,最后修改时间:2009-01-18,20:48:13.

出0入0汤圆

发表于 2009-1-20 14:40:53 | 显示全部楼层
顶起,也在一直研究,我也是希望建立A.TXT等,然后在里面写数据.

出0入0汤圆

发表于 2009-8-6 15:26:12 | 显示全部楼层
请教一下这个库怎么修改才能支持avr32芯片,比如uc3b,uc3a呢?

出0入0汤圆

发表于 2009-8-6 16:41:35 | 显示全部楼层
AVR32有FAT的例程,可以支持FAT32和长文件名的。在AVR32_Studio的SWF里有例子(用了FreeRTOS),可以结合在线帮助熟悉代码,还是很不错的。如果想要根据自己的要求修改功能的话,最好还是看一下微软的FAT白皮书和相关介绍资料,网站上就有很多。

出0入0汤圆

发表于 2009-8-22 11:07:52 | 显示全部楼层
标记

出0入0汤圆

发表于 2009-9-28 13:58:48 | 显示全部楼层
很好~~~~~~

出0入0汤圆

发表于 2009-10-12 21:31:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-21 22:39:55 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-22 02:44:57 | 显示全部楼层
FAT

出0入0汤圆

发表于 2010-1-22 09:24:23 | 显示全部楼层
mark。

出0入0汤圆

发表于 2010-1-23 21:54:08 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-2-3 00:10:14 | 显示全部楼层
remark

出0入0汤圆

发表于 2010-3-28 23:58:57 | 显示全部楼层
mark

出0入9汤圆

发表于 2010-3-29 10:36:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-30 18:15:40 | 显示全部楼层
300KB/S我都嫌慢,目标800KB/S .........

出0入0汤圆

发表于 2010-4-30 22:05:38 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-5-2 20:54:56 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-5-2 21:32:25 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-7-12 10:51:57 | 显示全部楼层
DING

出65入0汤圆

发表于 2010-7-12 12:35:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-9 17:32:24 | 显示全部楼层
hello world

出0入0汤圆

发表于 2010-9-11 10:33:29 | 显示全部楼层
mark!

出0入0汤圆

发表于 2010-10-17 11:11:33 | 显示全部楼层
最新SD卡操作库,支持FAT32ourdev_590461MQBNP2.rar(文件大小:274K) (原文件名:sd-reader_source_20101010.rar)

我用的M16测试,直接接SD卡,已经屏蔽掉写的那部分。可是程序在partition.c文件的partition_open()函数调用device_read()的时候挂起了。。。不知道怎么原因???
(原文件名:device_open.png)

出0入0汤圆

发表于 2010-10-21 22:08:35 | 显示全部楼层
格式化成FAT16问题解决。好像是FAT32的支持性不是特别好,再看看。。。

出0入0汤圆

发表于 2010-10-21 22:22:48 | 显示全部楼层
汗一个,,,FAT32也支持。等比赛完好好学习学习

#define FAT_FAT32_SUPPORT SD_RAW_SDHC

出0入0汤圆

发表于 2011-12-28 10:45:41 | 显示全部楼层
MARK
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 02:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表