阅读:3930回复:22
还是SDMMC驱动的问题,看源码就已经设定了512MB阿!
如提,程序中就被设定为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,已经搞了一个多月都还没搞定,大家帮帮忙啰 |
|
沙发#
发布于:2008-08-01 10:04
m_Size=(m_CSD.b12CSize+1)*(pow(2,m_CSD.b3CSizeMult+2))*(pow(2,m_CSD.b4ReadBLLen))/512;
這樣才對 |
|
板凳#
发布于:2007-11-02 10:19
可以把源吗贴出来,我帮你看看..................
|
|
|
地板#
发布于:2007-11-01 08:50
我的是设了,如果用sdio方式,连个屁都没得放
|
|
地下室#
发布于:2007-10-31 16:32
to harktrip zhuxiaofeng
不知道你们两位把USE_SDMMC_CONTROLLER这个宏置为1没有,我原来用2410的参口来试过,用IO方式可以读写,但是速度很慢啊,不知你们使用什么方式,速度如何,谢谢! |
|
5楼#
发布于:2007-10-30 23:14
引用第14楼harktrip于2007-10-30 14:46发表的 : 可以看看这时候在oal成是否发出这个中断了。 好像是个oalinterruptdone()函数里面。具体有点记不清楚。 在那里面打印一下,看这个中断能否出来,如果能出来肯定能进中断线程。 否则就是硬体的问题。。 |
|
|
6楼#
发布于:2007-10-30 23:11
这个我还不知道,
不过我觉得你读大文件有问题,小文件没问题。 会不是开辟的copy 的 BUFFER不够大,导致一部分数据被咔掉了。 看看每次最多可以传多少?和你开辟的buffer大小。。 还有驱动加载顺序和放注册表什么位置没关系。 主要是看注册表中的order的值的大小。 我看samsung 2410设置的是21, 基本上是最后加载了,不过不知道为啥。 |
|
|
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 请问这有解吗? 因为目前读较大的档,会出现问题. 或许跟这有关联... |
|
8楼#
发布于:2007-10-30 15:54
真是变态到不行
SD卡驱动要放在注册表最后加载... 才可插入/拔出都正常判断 |
|
9楼#
发布于:2007-10-30 14:46
256MB误判64MB这个问题先挪后,
想先解决SD卡退出,无法卸载的问题. 不知道改了几回 卡退出时,确定有到ARMINT.C 去产生 SYSINTR_SDMMC_CARD_DETECT 但却没有到 SDMMCDetectThread 去执行... 真的快昏倒了,搞不定.... 先去小睡一会...累歪了 |
|
10楼#
发布于:2007-10-30 09:28
這個計算方法是固定的。spec上有的。
都一樣的。隨便看一個好的能用的就行。 |
|
|
11楼#
发布于:2007-10-29 18:10
di_total_sectors计算公式还在看…
相同的计算方法,只在256的卡出问题… 还在伤脑筋中~~~ |
|
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这个是怎么算出来的? 这个计算的不对。。导致大小错误。 |
|
|
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 |
|
14楼#
发布于:2007-10-29 16:04
2.SD卡拔出,无法进入中断,卸载盘符
:那系统刚起来的时候,卡不在的时候,插入是否有中断? 插拔应该是一个中断。。这个是硬体的反应,可以通过AXD,直接插拔, 看相应的硬件状态位是否会变? 3. 256MB,误判为64MB,512MB正常, 1G正常, 2G系统会卡住 这个是相应对CSD的处理,发完CMD9之后是怎么处理的? 如果处理的地方有误。就会出现你说得情况,不过一般不应该出现这种情况。 而且2G的应该也没问题。 如果没有Response7的话,2G以上的不能处理。。 |
|
|
15楼#
发布于:2007-10-29 09:50
最新进度:
1.插入SD卡,一秒左右盘符出现,音效同步有声,可以马上读写 2.SD卡拔出,无法进入中断,卸载盘符 3. 256MB,误判为64MB,512MB正常, 1G正常, 2G系统会卡住 4.SECTOR和档案: 和PC可互通,目前还没有问题 |
|
16楼#
发布于:2007-10-26 17:49
可以用你的load.因为你的load看来应该是正常的。
用我发的这个的Driver来试试。 这样就比较好调试。 |
|
|
17楼#
发布于:2007-10-26 15:32
感謝啦...我先試試
|
|
18楼#
发布于:2007-10-26 15:19
别人给我的,不确定能用否。
我没有2410的板子。也无法测试。 不过应该是正确的。 |
|
|
19楼#
发布于:2007-10-26 13:51
zhuxiaofeng ,
看来我下载来的版本,和你的完全不同, 可以把你的版本,上传一份完整的吗? 感恩啦 (用这去修改后,可以判断到2G了,但256的误判为64的) |
|
上一页
下一页