阅读:1814回复:11
问个蠢问题,这个SDMMC驱动的注册表到底如何写?
我把他改2440后,编译得到sdmmc_loader.dll 和 sdmmc.dll
这两个dll档,但照档案内的说明,那个注册表加入后, 或是远峰的注册表照打,都无法侦测到sd卡(连debugmessage都没有任何信息) 请问,cfw.c和armint.c都要跟着改吗? 我的sd卡中断是eint18 文档的注册表 /************************************************************************ [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SDMMC] "Dll"="s2440mmc.dll" "Prefix"="DSK" "Order"=dword:2 "Class"=dword:01 "SubClass"=dword:80 "ProgIF"=dword:0 "DeviceID"=dword:1100 "VendorID"=dword:15b7 "Ioctl"=dword:4 "FSD"="fatfsd.dll" "Profile"="SDMMC" [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMMC] "Name"="SDMMC Disk Drive" "Folder"="SDMMC" [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMMC\FATFS] "EnableCacheWarm"=dword:0 远峰的注册表 [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\sdmmc] "Prefix"="SML" "Dll"="SDMMC_Loader.dll" "Order"=dword:2 "Ioctl"=dword:4 "FriendlyName"="SDCard/MMC Loader" [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMMC] "Name"="SD/MMC Card" "Folder"="SD/MMC Card" |
|
|
沙发#
发布于:2007-10-08 11:14
sd卡中断应该用16,18不行的
|
|
板凳#
发布于:2007-10-08 13:09
都试过了,连个屁都没放~~唉
|
|
地板#
发布于:2007-10-08 13:57
SDMMC:DSK_Init ActiveKey=Drivers\Active\16
SDMMC_InitializeAddresses - Success CMD0 Chk_CMDend:1. In idle. Initialize fail No Card assertion. CMD0 Chk_CMDend:1. In idle. Initialize fail No Card assertion. SDMMC_Identify SDMMC:DSK_Open=00000001 ------------------------------- int Chk_SD_OCR(void) { int i,j; for(i=0;i<10;i++) { CMD55(); //Make ACMD v_pSDMMCregs->rSDICMDARG=0xff8000; //ACMD41(OCR:2.7V~3.6V) v_pSDMMCregs->rSDICMDCON=(0x1<<9)|(0x1<<8)|0x69;//sht_resp, wait_resp, start, ACMD41 if(Chk_CMDend(41,1)& (v_pSDMMCregs->rSDIRSP0==0x80ff8000)) //OCR最高位为0表示正在POWER UP { return 1; //Success } for(j=0;j<500;j++); //Wait Card power up status } return 0; //Fail } 目前是因为这最高位的问题....返回FAIL |
|
地下室#
发布于:2007-10-09 09:24
ATAPI DLL_PROCESS_ATTACH
SDMMC:DSK_Init ActiveKey=Drivers\Active\16 SDMMC_InitializeAddresses - Success CMD0 Chk_CMDend:1. In idle. In SD ready. End id. RCA=0xb368 In stand-by mmc_card_init OK. SDMMC_Identify 到这里就卡住了 |
|
5楼#
发布于:2007-10-09 09:41
你都跟远峰的注册表对比了,没发现有本质的区别吗?
sdmmc_loader.dll 是用来监测sd卡插入的,然后加载sdmmc.dll。 所以sdmmc_loader.dll 要放在BuiltIn\SDMMC注册项中,而不是把sdmmc.dll放在这个注册项下。 |
|
6楼#
发布于:2007-10-09 11:43
恩恩恩...试试
|
|
7楼#
发布于:2007-10-09 14:46
// v_pSDMMCregs->rSDIDATCON=(1<<19)|(1<<17)|(Wide<<16)|(2<<12)|(1<<0);
v_pSDMMCregs->rSDIDATCON=(2<<22)|(1<<19)|(1<<17)|(Wide<<16)|(1<<14)|(2<<12)|(1<<0); v_pSDMMCregs->rSDICMDARG=addr; //CMD17/18(addr) RETAILMSG(1,(TEXT("GO Read mmc sector.\r\n"))) RERDCMD: v_pSDMMCregs->rSDICMDCON=(0x1<<9)|(0x1<<8)|0x51; //sht_resp,wait_resp,dat,start,CMD17 if(!Chk_CMDend(17,1)) //Check end of CMD17 goto RERDCMD; ----------------------------- 死在這 |
|
8楼#
发布于:2007-10-10 11:18
储存管理器可以看到了,不过多大多小的卡一律判断512MB,且未配置
另外,开机后才把卡插入,是没有任何反应的 |
|
9楼#
发布于:2007-10-10 11:19
pDisk->PerformIoctl FALSE:0x4
这个讯息不知如何解决 |
|
10楼#
发布于:2007-10-10 11:41
引用第8楼harktrip于2007-10-10 11:18发表的 : 这个大小是你给的,可能给错了。看看程序。 开机后看看sdmmc_loader里面检测卡是否存在那个线程是否还在跑? 应该是在。 如果在的话, 就是中断的问题了。 卡插拔中断有问题。 这个好修改。 |
|
|
11楼#
发布于:2007-10-11 12:39
盘符出现了,
不过内容是空的 |
|