no.killer
驱动牛犊
驱动牛犊
  • 注册日期2003-11-08
  • 最后登录2014-08-13
  • 粉丝0
  • 关注0
  • 积分23分
  • 威望105点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
阅读:2916回复:19

2440的SD MMC卡驱动

楼主#
更多 发布于:2007-05-28 11:29
我将2440的SD MMC卡驱动写成了Block的形式驱动能够加载,能够保存文件,能够格式化,但是现在存在一个问题,就是我使用CE操作系统读写格式化都正常,但是拿到PC下面就不能够识别,经过相关工具的分析发现SD卡的BLOCK0里面的MBR与PC下面的不一样,有没有人遇到过这样的问题如果有,能够提供相应的解决办法?

要使实在不行就只能写成SDIO形式的了呵呵!

    thanks!
no.killer
驱动牛犊
驱动牛犊
  • 注册日期2003-11-08
  • 最后登录2014-08-13
  • 粉丝0
  • 关注0
  • 积分23分
  • 威望105点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-05-28 11:48
加一下个人的理解,

本身CE对于存储管理驱动分为

设备驱动    我们所写的块驱动
分区驱动 默认为mspart.dll
文件驱动       fatfsd.dll


本来我这儿的2440的SD驱动是好用的呵呵,可是我觉得如果要是用SDIO读写的方式有些慢
所以就突发奇想自己写了一个BLOCK方式的Driver挂到2440的系统上面,可能是对于BLOCK方式的驱动理解得还不够透彻把,虽然文件什么的也都能保存也都能格式话但是与左面PC的不兼容,我觉得就是分区驱动出现了问题

我的    IOCTL_DISK_GETINFO:与DISK_IOCTL_GETINFO:返回的结构类型为
    pDiskInfo->di_cylinders=0;
    pDiskInfo->di_heads=0;
    pDiskInfo->di_sectors=32;
    pDiskInfo->di_total_sectors=m_Size;
    pDiskInfo->di_flags=DISK_INFO_FLAG_MBR;

也没有错误啊,可是就是跟PC的MBR有些不太一样!感觉这个问题很怪,想了两天也想不通。
no.killer
驱动牛犊
驱动牛犊
  • 注册日期2003-11-08
  • 最后登录2014-08-13
  • 粉丝0
  • 关注0
  • 积分23分
  • 威望105点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-05-28 11:56
顺便说一些,如果这个可以了,那么就可以将我的驱动变成一个lib给BootLoader使用
呵呵,到时候本身我使用SDMMC卡更新内核就会容易得多,只要将nk.nb0放到SD卡里面就可以了,而使用SDIO方式这么做有太多太多的弊端了,呵呵。

所以这么做还是很有意义的,有兴趣的人跟我讨论一下吧,
rilyyu
驱动小牛
驱动小牛
  • 注册日期2006-11-17
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分512分
  • 威望130点
  • 贡献值0点
  • 好评度127点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-05-28 16:19
我觉得MBR不一样应该没啥关系啊,不同的操作系统格式化出来的MBR都不太一样啊。只要DPT部分还有DBR没有错误就好了。
zhengshijie
驱动小牛
驱动小牛
  • 注册日期2003-07-11
  • 最后登录2009-03-18
  • 粉丝1
  • 关注0
  • 积分8分
  • 威望217点
  • 贡献值0点
  • 好评度199点
  • 原创分3分
  • 专家分0分
地下室#
发布于:2007-05-28 16:32
bootloader从SD卡上更新NK内核早就做过了,而且bootloader不在PB环境下编译,做成ADS1.2项目,具备EBOOT的功能,除了ethernet功能外。不但内核,连bootloader自己,nboot都从SD卡上更新,而且还可以直接启动放在SD卡上的NK.NB0.其实这个想法早就有人付诸实施了。bootloader需要具备FATFS加载,SD卡访问。不过我用的是SDIO方式,不明白用BLOCK有什么好处?具体是个什么意思?
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-05-28 17:48
引用第0楼no.killer于2007-05-28 11:29发表的 2440的SD MMC卡驱动 :
我将2440的SD MMC卡驱动写成了Block的形式驱动能够加载,能够保存文件,能够格式化,但是现在存在一个问题,就是我使用CE操作系统读写格式化都正常,但是拿到PC下面就不能够识别,经过相关工具的分析发现SD卡的BLOCK0里面的MBR与PC下面的不一样,有没有人遇到过这样的问题如果有,能够提供相应的解决办法?

要使实在不行就只能写成SDIO形式的了呵呵!

    thanks!


兄弟。你的2440下SD卡驱动的读写是怎么实现的?
我现在修改,2410的,读写老出问题。
中断起不起来,
谢谢。。
做一个出色的程序员!
no.killer
驱动牛犊
驱动牛犊
  • 注册日期2003-11-08
  • 最后登录2014-08-13
  • 粉丝0
  • 关注0
  • 积分23分
  • 威望105点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-05-28 19:11
1。微软那三个DLL支持1G以上的卡吗?
2。开机的读写速度能做得很快吗?
3。如果为MMC卡直接读BLOCK的速度是很快的阿,读写30M只需要3秒左右,SDIO做不到吧。

to rilyyu and zhengshijie  
能说得更加具体一些吗?
例如如果我需要设置正确的驱动也就是能让PC识别我格式化以后的卡我都需要做哪些工作,应该注意的是注册表,还是需要更改我驱动里面的某些参数。
非常感谢你的回答,谢谢
这个问题困扰了我很长时间
rilyyu
驱动小牛
驱动小牛
  • 注册日期2006-11-17
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分512分
  • 威望130点
  • 贡献值0点
  • 好评度127点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-05-28 23:41
这个我就不知道了,以前做过eboot下sd卡更新内核,sdio方式,应该不能叫sdio吧,关于这个我没有仔细看过协议,只是看了个物理层协议,写了个读扇区的函数.还要请教下sdio方式和你说的block方式在底层下有没有什么区别.fat部分也是自己写的,很简单只有读的功能.当时我用xp,2000以及ce等系统格式化卡然后用winhex查看,MBR基本没有相同的,甚至不同版本xp格式化的卡MBR都不相同.当然我说的都是fat16.也许你应该找个fat16的说明,看看你的卡是否被正确格式化为fat16了.
不过我的那种方式确实没法做到读30M只要3″,也就1MB/s的速度.这点一直让我很迷惑.还请教.
no.killer
驱动牛犊
驱动牛犊
  • 注册日期2003-11-08
  • 最后登录2014-08-13
  • 粉丝0
  • 关注0
  • 积分23分
  • 威望105点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-05-29 16:24
.....................
找到原因了

原因那就是我写入了倒32位的数据

例如应该是0000000000001
我写的是100000000000
我读些都反了所以数据就只能我写的驱动能够识别了呵呵,比较郁闷

谢谢rilyy啊,要不是你提醒我也不会发现MBR最后那个55 AA原来我写成了AA 55
呵呵哎郁闷阿
rilyyu
驱动小牛
驱动小牛
  • 注册日期2006-11-17
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分512分
  • 威望130点
  • 贡献值0点
  • 好评度127点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-05-29 17:32
恭喜楼主,楼主的驱动可以用来做sd卡加密,呵呵
etermis
驱动牛犊
驱动牛犊
  • 注册日期2006-05-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分190分
  • 威望20点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-05-30 11:22
我这里用2440IO模式读写SD卡也碰到了问题。。。
在网上下的2410的block模式sd卡驱动,参照2440的datasheet改的,另外还参考了5.0的BSP。
现在卡能认出来,CSD寄存器也能正确读出啦,就是数据读写不行,老是出现fifo error。。。
请各位大虾指点一下数据传输时的寄存器设置,看看是不是有问题,我现在的设置是 

rSDIFSTA |= (1 << 16);    // fifo reset
rSDIFSTA &= 0xc000; // clear error status
rSDIBSIZE = 0x200; // set block size
rSDIDATCON=(1<<22)|(1<<19)|(1<<17)|(Wide<<16)|(1<<14)|(2<<12)|(1<<0);    // read sector

rSDICMDSTA = 0x1E00; // clear any pending status flags
rSDICMDARG = addr;    //CMD17/18(addr)

rSDICMDCON=(0x1<<11)|(0x1<<9)|(0x1<<8)|0x51; //sht_resp,wait_resp,data,start,CMD17
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-05-30 12:31
把Debug信息貼上來,
別人才能分析。
做一个出色的程序员!
zhengshijie
驱动小牛
驱动小牛
  • 注册日期2003-07-11
  • 最后登录2009-03-18
  • 粉丝1
  • 关注0
  • 积分8分
  • 威望217点
  • 贡献值0点
  • 好评度199点
  • 原创分3分
  • 专家分0分
12楼#
发布于:2007-05-30 17:22
我跟本就不在PB下编译,自己作的ADS1.2项目,微软的驱动当然能支持1G以上的SD卡了,最高到2G,阁下何以得到读30M只要3秒钟的结果。怎么算出来的。
zhengshijie
驱动小牛
驱动小牛
  • 注册日期2003-07-11
  • 最后登录2009-03-18
  • 粉丝1
  • 关注0
  • 积分8分
  • 威望217点
  • 贡献值0点
  • 好评度199点
  • 原创分3分
  • 专家分0分
13楼#
发布于:2007-05-30 17:29
跟阁下探讨一下,MMC卡的驱动最高支持20MHz,算你按4BIT访问,一个字节需要两个时钟周期,20MHz,就要除以2,10MHz,而你30M只要3秒钟,已经达到了理论极限值,你觉得可能吗?
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2007-05-30 18:03
引用第12楼zhengshijie于2007-05-30 17:22发表的  :
我跟本就不在PB下编译,自己作的ADS1.2项目,微软的驱动当然能支持1G以上的SD卡了,最高到2G,阁下何以得到读30M只要3秒钟的结果。怎么算出来的。



是不是2G以上的卡,微软提供的框架就支持不了了?
我用的是4G的,
能建文件夹,但是相当慢.
建完后在PC 下不能识别.
什么原因知道不?兄弟.
谢谢.
做一个出色的程序员!
snowolf_007
驱动牛犊
驱动牛犊
  • 注册日期2006-05-09
  • 最后登录2008-06-30
  • 粉丝0
  • 关注0
  • 积分350分
  • 威望40点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2007-06-20 18:45
我现在也在为这问题烦呢,我的sd卡其他都还好,就是有的卡检测速度特别慢,得7、8秒才能显示出检测到的sd卡的文件目录,可有的卡又还是比较快的,实在想不明白问题出在哪???
关注。。。。。。
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2007-06-21 08:39
是不是你收发命令和相应命令中间的延迟太大?
修改小点试试。。
做一个出色的程序员!
lStoneCN
驱动牛犊
驱动牛犊
  • 注册日期2004-08-11
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分334分
  • 威望321点
  • 贡献值1点
  • 好评度28点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2007-07-24 22:38
to no.killer
寻zigbee/CC2430高手合作!
lStoneCN
驱动牛犊
驱动牛犊
  • 注册日期2004-08-11
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分334分
  • 威望321点
  • 贡献值1点
  • 好评度28点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2007-07-24 22:38
to no.killer
能不能拿出来共享一下?也想研究下。
寻zigbee/CC2430高手合作!
harktrip
驱动小牛
驱动小牛
  • 注册日期2003-11-30
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分51分
  • 威望457点
  • 贡献值0点
  • 好评度170点
  • 原创分0分
  • 专家分2分
19楼#
发布于:2007-10-11 00:16
no.killer
这样不够上道,大伙再等你贴出来分享…顶~~
游客

返回顶部