搜索
bottom↓
回复: 40

GCC访问SD卡的源代码

[复制链接]

出0入0汤圆

发表于 2005-12-3 21:37:33 | 显示全部楼层 |阅读模式
[原创]资源共享:开放我的mmc/sd操作原代码 有一个访问SD/MMC卡的源代码,但是不是GCC的,我把它改成了GCC的,但是我现在手头没有可以用来测试的硬件(正在外面制板)。现在把源代码放到网站上,希望有现成硬件的朋友帮忙测试一下,看一下有没有什么错误。



代码在AtmanAVR & Visual Studio 2005中完成修改的。



在AtmanAVR中编译完成:

Generating Code...

Program memory usage: 2118 bytes, 3.23% full.

Global variables usage: 291 bytes



源代码:点击此处下载armok0190546.rar



-----此内容被linhaimi于2005-12-03,21:40:37编辑过



注:

原来代码里面有一个延时8us的函数,我把它改成了一个宏,且象征性的延时一个周期。
-----此内容被linhaimi于2005-12-03,21:44:17编辑过

出0入0汤圆

发表于 2005-12-3 22:22:27 | 显示全部楼层
我现在就测试,等我啊

出0入0汤圆

 楼主| 发表于 2005-12-3 22:37:43 | 显示全部楼层
期待哈

出0入0汤圆

发表于 2005-12-3 23:15:40 | 显示全部楼层
GCC比CVAVR优化能力强,比我编译的小.建议使用这个代码,用GCC来编译.

出0入0汤圆

发表于 2005-12-4 00:05:28 | 显示全部楼层
mmc.o(.bss+0x0): In function `MMC_Port_Init':

D:\AVR\sd/mmc.c:24: multiple definition of `LBA_Opened'

main.o(.bss+0x0):D:\AVR\sd/main.c:4: first defined here

mmc.o(.bss+0x1): In function `MMC_Port_Init':

D:\AVR\sd/mmc.c:24: multiple definition of `sectorPos'

main.o(.bss+0x1):D:\AVR\sd/main.c:4: first defined here

mmc.o(.bss+0x2): In function `MMC_Port_Init':

D:\AVR\sd/mmc.c:25: multiple definition of `readPos'

main.o(.bss+0x2):D:\AVR\sd/main.c:4: first defined here



55555555~~~~~~

出0入0汤圆

 楼主| 发表于 2005-12-4 00:33:55 | 显示全部楼层


"

BUFFER_TYPE sectorBuffer; //512 bytes for sector buffer



//--------------------------------------------------------------

        word        readPos=0;

        byte        sectorPos=0;

        byte    LBA_Opened=0; //Set to 1 when a sector is opened.

    byte    Init_Flag;    //Set it to 1 when Init is processing.

//---------------------------------------------------------------

// Prototypes

//---------------------------------------------------------------

"

从mmc.h移到mmc.c中试试.



我试了一下,如果只是把mmc.h和mmc.c加入到工程中的话是没有什么问题的,但是如果在别的源文件中引用mmc.h的话就出现了那些错误提示,我在main.c中加了一条#include "mmc.h"就出错了,但是将上面这些变量声明放在mmc.c中又编译通过了.

-----此内容被linhaimi于2005-12-04,00:37:18编辑过


-----此内容被linhaimi于2005-12-04,00:38:24编辑过

出0入0汤圆

发表于 2005-12-4 01:06:49 | 显示全部楼层
对把sectorbuffer移到mmc.c里就可以了,另外还要加入sbi和cbi、BV的定义。

现在MMC_Init()已经通过了,要去睡觉了。

出0入0汤圆

 楼主| 发表于 2005-12-4 11:23:52 | 显示全部楼层
麻烦再试一下能不能正常收发SD卡的数据^_^

出0入0汤圆

发表于 2005-12-4 13:37:28 | 显示全部楼层
另外请大家使用时候注意下面函数:

unsigned char MMC_Start_Read_Sector(unsigned long sector);

void MMC_get_data(unsigned int Bytes,unsigned char *buffer);

void MMC_get_data_LBA(unsigned long lba, unsigned int Bytes,unsigned char *buffer);

void MMC_GotoSectorOffset(unsigned long LBA,unsigned int offset);

void MMC_LBA_Close(void);

如果你的RAM足够大,那么你可以一次缓冲完一个sector,这些函数可以删除(因为我写这些函数时候,使用的CPU是8515) 如果使用例如MEGA8515这样的CPU,RAM不足1KB,你只能定义例如sectBuf[64]这样小的DATA BUFFER. 那么这些函数就可以保留,先使用MMC_Start_Read_Sector(unsigned long sector)打开一个LBA,时候再去读数据到你的循环缓冲区sectBuf[64],分8次完成一个LBA数据.
-----此内容被elefan于2005-12-04,13:38:56编辑过

出0入0汤圆

发表于 2005-12-4 17:38:24 | 显示全部楼层
我的板上3310液晶的接法和sd卡不兼容,正在改硬件,之后才能试程序,晚上看看能不能搞定。

出0入0汤圆

 楼主| 发表于 2005-12-4 20:07:38 | 显示全部楼层
期待啊

出0入0汤圆

发表于 2005-12-4 22:52:31 | 显示全部楼层
哎呀,按照原定义,片选和spi口要在同一个port,我这不是这样的,不好改啊

出0入0汤圆

 楼主| 发表于 2005-12-4 23:22:05 | 显示全部楼层


试一试在调用片选功能的时候将端口改成你的硬件的端口喃?

出0入0汤圆

发表于 2005-12-5 08:11:00 | 显示全部楼层
好东东要顶

出0入0汤圆

发表于 2005-12-5 09:43:11 | 显示全部楼层
共享的要顶一下

出0入0汤圆

发表于 2006-2-4 22:24:57 | 显示全部楼层
thanks, i love it.

出0入0汤圆

发表于 2006-2-5 01:01:00 | 显示全部楼层
好东西,有时间移植到ARM上.

出0入0汤圆

发表于 2006-2-5 02:40:40 | 显示全部楼层
hotpower最近是不是在玩ARM啊?拉我们一把啊~~~

出0入0汤圆

发表于 2006-2-5 08:10:59 | 显示全部楼层
关于MMC的代码,网络上公开的还是不少的:

1.在Procyon AVRlib有MMC的WINAVR代码。

下载地址:

http://hubbard.engr.scu.edu/embedded/avr/avrlib/index.html

代码开发,很详细的,可以参考。



2.Cornell大学的网站上也有:

可以参考"KaOS Operating System and Loader"

http://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/s2005/acl34/kaos/index.html



一个要付费的,听说不错:

FlashFile - SD/MMC FAT12/16 File Systems for AVR

http://www.prllc.com/productcart/pc/viewCat_P.asp?idCategory=10

出0入0汤圆

发表于 2006-5-11 18:02:37 | 显示全部楼层
您好:我想向您请教一下,如果对SD卡进行文件操作,这样操作呀,有相关的资料吗?给我发一份,我的邮箱是lizq791003@126.com,如果有中文的最好了,本人英文比较差。

出0入0汤圆

发表于 2006-7-17 15:10:54 | 显示全部楼层
呵,我已经做好了,读写都没有任何问题的。

关键是怎么加入FAT文件系统呢?呵。

出0入0汤圆

发表于 2007-9-3 09:03:20 | 显示全部楼层

出0入0汤圆

发表于 2007-11-15 12:30:09 | 显示全部楼层
我新来的,感谢大家的努力.等我有了成果和大家一起分享.

出0入0汤圆

发表于 2007-12-17 17:17:04 | 显示全部楼层
这个时软件模拟SPI的吧,有没有硬件SPI的?

出0入0汤圆

发表于 2007-12-17 17:43:21 | 显示全部楼层
看看

出0入0汤圆

发表于 2007-12-18 16:57:23 | 显示全部楼层
共享的要顶一下

出0入0汤圆

发表于 2008-4-1 12:29:54 | 显示全部楼层
测试完的例子上传呀

出0入0汤圆

发表于 2008-4-6 02:53:03 | 显示全部楼层
收藏先

出0入0汤圆

发表于 2008-4-6 09:48:51 | 显示全部楼层
怎么没有下文了呢 代码是否可用呢??

出0入0汤圆

发表于 2009-8-13 08:37:42 | 显示全部楼层
好人啦

出0入0汤圆

发表于 2009-8-21 14:59:03 | 显示全部楼层
收录,谢谢楼主

出0入0汤圆

发表于 2009-10-1 14:03:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-10-21 10:53:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-10-21 11:28:43 | 显示全部楼层
挖坟党还真厉害啊~~4年前的帖子,乖乖

出0入0汤圆

发表于 2009-12-8 23:30:53 | 显示全部楼层
绝对不是开玩笑!楼主小硕了吧!

出0入0汤圆

发表于 2010-4-6 19:00:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-7 01:58:55 | 显示全部楼层
挖坟..

出0入0汤圆

发表于 2010-4-7 15:52:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-8 18:24:24 | 显示全部楼层
收藏,谢谢!

出0入0汤圆

发表于 2010-10-19 04:32:24 | 显示全部楼层
MARK

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-6 13:57

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

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