harktrip
驱动小牛
驱动小牛
  • 注册日期2003-11-30
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分51分
  • 威望457点
  • 贡献值0点
  • 好评度170点
  • 原创分0分
  • 专家分2分
阅读:3930回复:22

还是SDMMC驱动的问题,看源码就已经设定了512MB阿!

楼主#
更多 发布于:2007-10-25 16:36
如提,程序中就被设定为512M了,如果插入256或128的卡,都识别为512
程序:

if(mmc_read_sector(secbuf,0))
{
bootsector=(BOOTSECTOR50*)secbuf;
bpb=(BPB50*)(bootsector->bsBPB);

pDiskInfo->di_bytes_per_sect=MMC_SECTOR_SIZE; //Start with 512,then go with SetInfo changes
pDiskInfo->di_cylinders=1;
pDiskInfo->di_heads=1;
pDiskInfo->di_sectors=32;
pDiskInfo->di_total_sectors=0x100000;//最大512MB
pDiskInfo->di_flags=DISK_INFO_FLAG_MBR;

return TRUE;
}

这是2410的程序...现在不管这些,我要让程序自动去判别卡的大小,要如何做呢?
另外,
在WINCE下可擦写档案,但拿到PC却无法判读,这有可能是哪边出的问题?

各位老大,高抬贵手...
2440/wince4.2 的SDMMC,已经搞了一个多月都还没搞定,大家帮帮忙啰
harktrip
驱动小牛
驱动小牛
  • 注册日期2003-11-30
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分51分
  • 威望457点
  • 贡献值0点
  • 好评度170点
  • 原创分0分
  • 专家分2分
沙发#
发布于:2008-08-01 10:04
m_Size=(m_CSD.b12CSize+1)*(pow(2,m_CSD.b3CSizeMult+2))*(pow(2,m_CSD.b4ReadBLLen))/512;

這樣才對
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-11-02 10:19
可以把源吗贴出来,我帮你看看..................
做一个出色的程序员!
harktrip
驱动小牛
驱动小牛
  • 注册日期2003-11-30
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分51分
  • 威望457点
  • 贡献值0点
  • 好评度170点
  • 原创分0分
  • 专家分2分
地板#
发布于:2007-11-01 08:50
我的是设了,如果用sdio方式,连个屁都没得放
jyc_1
驱动小牛
驱动小牛
  • 注册日期2003-09-13
  • 最后登录2009-01-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望110点
  • 贡献值0点
  • 好评度110点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-10-31 16:32
to harktrip  zhuxiaofeng
不知道你们两位把USE_SDMMC_CONTROLLER这个宏置为1没有,我原来用2410的参口来试过,用IO方式可以读写,但是速度很慢啊,不知你们使用什么方式,速度如何,谢谢!
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-10-30 23:14
引用第14楼harktrip于2007-10-30 14:46发表的  :
256MB误判64MB这个问题先挪后,
想先解决SD卡退出,无法卸载的问题.
不知道改了几回
卡退出时,确定有到ARMINT.C 去产生  SYSINTR_SDMMC_CARD_DETECT
但却没有到 SDMMCDetectThread 去执行...
.......


可以看看这时候在oal成是否发出这个中断了。
好像是个oalinterruptdone()函数里面。具体有点记不清楚。
在那里面打印一下,看这个中断能否出来,如果能出来肯定能进中断线程。
否则就是硬体的问题。。
做一个出色的程序员!
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-10-30 23:11
这个我还不知道,
不过我觉得你读大文件有问题,小文件没问题。
会不是开辟的copy 的 BUFFER不够大,导致一部分数据被咔掉了。
看看每次最多可以传多少?和你开辟的buffer大小。。

还有驱动加载顺序和放注册表什么位置没关系。
主要是看注册表中的order的值的大小。
我看samsung 2410设置的是21,
基本上是最后加载了,不过不知道为啥。
做一个出色的程序员!
harktrip
驱动小牛
驱动小牛
  • 注册日期2003-11-30
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分51分
  • 威望457点
  • 贡献值0点
  • 好评度170点
  • 原创分0分
  • 专家分2分
7楼#
发布于:2007-10-30 16:13
SDMMC:GetDiskInfo!!!
SD IOCTL:1-
SD IOCTL:1+
SDMMC:GetDiskInfo!!!
SD IOCTL:1-
SD IOCTL:1+
SDMMC:GetDiskInfo!!!
SD IOCTL:1-
SD IOCTL:1+
SDMMC:GetDiskInfo!!!
SD IOCTL:1-
SD IOCTL:1+
SDMMC:GetDiskInfo!!!
SD IOCTL:1-
SD IOCTL:9-
pDisk->PerformIoctl FALSE:0x71c4c

zhuxiaofeng
请教这个问题, 卡插入后
最后面会执行 IOCTL 9这项,
但程序中是把他当成未定义(未支持的)
所以后面跟着出现  pDisk->PerformIoctl FALSE

请问这有解吗?
因为目前读较大的档,会出现问题.
或许跟这有关联...
harktrip
驱动小牛
驱动小牛
  • 注册日期2003-11-30
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分51分
  • 威望457点
  • 贡献值0点
  • 好评度170点
  • 原创分0分
  • 专家分2分
8楼#
发布于:2007-10-30 15:54
真是变态到不行
SD卡驱动要放在注册表最后加载...
才可插入/拔出都正常判断
harktrip
驱动小牛
驱动小牛
  • 注册日期2003-11-30
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分51分
  • 威望457点
  • 贡献值0点
  • 好评度170点
  • 原创分0分
  • 专家分2分
9楼#
发布于:2007-10-30 14:46
256MB误判64MB这个问题先挪后,
想先解决SD卡退出,无法卸载的问题.
不知道改了几回
卡退出时,确定有到ARMINT.C 去产生  SYSINTR_SDMMC_CARD_DETECT
但却没有到 SDMMCDetectThread 去执行...

真的快昏倒了,搞不定....

先去小睡一会...累歪了
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-10-30 09:28
這個計算方法是固定的。spec上有的。
都一樣的。隨便看一個好的能用的就行。
做一个出色的程序员!
harktrip
驱动小牛
驱动小牛
  • 注册日期2003-11-30
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分51分
  • 威望457点
  • 贡献值0点
  • 好评度170点
  • 原创分0分
  • 专家分2分
11楼#
发布于:2007-10-29 18:10
di_total_sectors计算公式还在看…
相同的计算方法,只在256的卡出问题…
还在伤脑筋中~~~
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2007-10-29 17:38
对呀。
di_bytes_per_sect=512.
di_cylinders=1.
di_heads=1.
di_sectors=32.
di_total_sectors=124928.
124928个sector大小就是64M。。
看看di_total_sectors这个是怎么算出来的?
这个计算的不对。。导致大小错误。
做一个出色的程序员!
harktrip
驱动小牛
驱动小牛
  • 注册日期2003-11-30
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分51分
  • 威望457点
  • 贡献值0点
  • 好评度170点
  • 原创分0分
  • 专家分2分
13楼#
发布于:2007-10-29 16:25
插入256MB SD卡,容量误判只有64MB的信息

ARMINT.C - SYSINTR_SDMMC_CARD_DETECT-20
SYSINTR_SDMMC_CARD_DETECT interrupt.
SDMMC CARD INSERT!
DoRegSetUp is done successfully
ATAPI DLL_PROCESS_ATTACH
SDMMC:DSK_Init ActiveKey=Drivers\Active\25
SDMMC_InitializeAddresses - Success

CMD0 Chk_CMDend:1.

In idle.
Chk_MMC_OCR
Chk_MMC_OCR
Chk_MMC_OCR
Chk_MMC_OCR
Chk_MMC_OCR
Chk_MMC_OCR
Chk_MMC_OCR
Chk_MMC_OCR
Chk_MMC_OCR
Chk_MMC_OCR
Chk_MMC_OCR
Chk_MMC_OCR
Chk_MMC_OCR
Chk_MMC_OCR
Chk_MMC_OCR

In SD ready.

End id.

RCA=0xb368

In stand-by
mmc_card_init OK.
SDMMC_Identify
SDMMC_Identify in...
SDIRSP0=0x7f0032
SDIRSP1=0x1f5983cf
SDIRSP2=0xf6dabf9f
SDIRSP3=0x9660006f
csd :0 7f 0 32 1f 59 83 cf f6 da bf 9f 96 60 0 6f .
---------------------------------
b2CSDStructure=0.
b4SpecVers=0.
b2Reserved1=0.
byTAAC=127.
byNSAC=0.
byTranSpeed=50.
b12CCC=501.
b4ReadBLLen=9.
b1ReadBLPartial=1.
b1WriteBlkMisalign=0.
b1ReadBlkMisalign=0.
b1DSRImp=0.
b12CSize=3903.
b3VDDRCurrMin=6.
b3VDDRCurrMax=6.
b3VDDWCurrMin=6.
b3VDDWCurrMax=6.
b3CSizeMult=1.
b5EraseGrpSize=15.
b5EraseGrpMult=28.
b5WPGrpSize=31.
b1WPGrpEnable=1.
b2DefaultECC=0.
b3R2WFactor=5.
b4WriteBLLen=9.
b1WriteBLPartial=1.
b4Reserved3=0.
b1ContentProtAPP=0.
b1FileFormatGrp=0.
b1Copy=0.
b1PermWriteProtect=0.
b1TmpWriteProtect=0.
b2FileFormat=0.
b2ECC=0.
b7CRC=55.
b1NouUsed=1.
---------------------------------
di_bytes_per_sect=512.
di_cylinders=1.
di_heads=1.
di_sectors=32.
di_total_sectors=124928.
mmc_send_csd OK.
SDMMC:DSK_Open=00000001
SD IOCTL:9-
pDisk->PerformIoctl FALSE:0x4
SDMMC:DSK_Close request Handle=00000001
SDMMC:DSK_Open=00000001
SD IOCTL:1+
SDMMC:GetDiskInfo!!!
SD IOCTL:1-
SD IOCTL:2+
SDMMC:GetDeviceInfo!!!
SD IOCTL:2-
SD IOCTL:7+
SDMMC:GetStorageId
SD IOCTL:7-
hDevice=0x4db260.
SD IOCTL:1+
SDMMC:GetDiskInfo!!!
SD IOCTL:1-
SD IOCTL:1+
SDMMC:GetDiskInfo!!!
SD IOCTL:1-
SD IOCTL:1+
SDMMC:GetDiskInfo!!!
SD IOCTL:1-
SD IOCTL:1+
SDMMC:GetDiskInfo!!!
SD IOCTL:1-
SD IOCTL:1+
SDMMC:GetDiskInfo!!!
SD IOCTL:1-
SD IOCTL:1+
SDMMC:GetDiskInfo!!!
SD IOCTL:1-
SD IOCTL:1+
SDMMC:GetDiskInfo!!!
SD IOCTL:1-
SD IOCTL:1+
SDMMC:GetDiskInfo!!!
SD IOCTL:1-
SD IOCTL:9-
pDisk->PerformIoctl FALSE:0x71c4c
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2007-10-29 16:04
2.SD卡拔出,无法进入中断,卸载盘符
:那系统刚起来的时候,卡不在的时候,插入是否有中断?
 插拔应该是一个中断。。这个是硬体的反应,可以通过AXD,直接插拔,
看相应的硬件状态位是否会变?
3. 256MB,误判为64MB,512MB正常, 1G正常, 2G系统会卡住
这个是相应对CSD的处理,发完CMD9之后是怎么处理的?
如果处理的地方有误。就会出现你说得情况,不过一般不应该出现这种情况。
而且2G的应该也没问题。
如果没有Response7的话,2G以上的不能处理。。
做一个出色的程序员!
harktrip
驱动小牛
驱动小牛
  • 注册日期2003-11-30
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分51分
  • 威望457点
  • 贡献值0点
  • 好评度170点
  • 原创分0分
  • 专家分2分
15楼#
发布于:2007-10-29 09:50
最新进度:
1.插入SD卡,一秒左右盘符出现,音效同步有声,可以马上读写
2.SD卡拔出,无法进入中断,卸载盘符
3. 256MB,误判为64MB,512MB正常, 1G正常, 2G系统会卡住
4.SECTOR和档案: 和PC可互通,目前还没有问题
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2007-10-26 17:49
可以用你的load.因为你的load看来应该是正常的。
用我发的这个的Driver来试试。
这样就比较好调试。
做一个出色的程序员!
harktrip
驱动小牛
驱动小牛
  • 注册日期2003-11-30
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分51分
  • 威望457点
  • 贡献值0点
  • 好评度170点
  • 原创分0分
  • 专家分2分
17楼#
发布于:2007-10-26 15:32
感謝啦...我先試試
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2007-10-26 15:19
别人给我的,不确定能用否。
我没有2410的板子。也无法测试。
不过应该是正确的。
附件名称/大小 下载次数 最后更新
SDMMC.7z (73KB)  28 2007-10-26 15:20
做一个出色的程序员!
harktrip
驱动小牛
驱动小牛
  • 注册日期2003-11-30
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分51分
  • 威望457点
  • 贡献值0点
  • 好评度170点
  • 原创分0分
  • 专家分2分
19楼#
发布于:2007-10-26 13:51
zhuxiaofeng ,

看来我下载来的版本,和你的完全不同,
可以把你的版本,上传一份完整的吗?

感恩啦

(用这去修改后,可以判断到2G了,但256的误判为64的)
上一页
游客

返回顶部