解决SD卡不能读写的问题
2009-05-05 16:44
507 查看
解决SD不能读写问题
//-----------------------------------------------------------------------------------------------------------// 作者:wogoyixikexie@gliet
// 版权:桂林电子科技大学一系科协wogoyixikexie@gliet
// 平台:wince5.0 2440 5.0 BSP
// 发布日期:2009年5月5日 17:30:37
// 最后修改:
// 注意事项:未经作者同意,不得在转载的时候擅自修改、删除文章的任何部分
//-----------------------------------------------------------------------------------------------------------
今天,我插入SD卡,SD卡盘符很快出现了,可是郁闷的事情出现了:当我在SD卡盘符里面新建文件夹,立即弹出不允许建立的对话框,并且,删除里面的文件也不行。刚开始我怀疑是三星提供的BSP问题,后来,我用立宇泰开发板测试,发现这个SD卡使用完全正常,后来查看电路,发现有个写保护的控制的,我感觉到是这个问题,但是我看电路这个立宇泰的写保护控制引脚和我的手持机是完全一致的,这个BSP就是本来立宇泰的修改而来的,貌似我从来没有改动过GPH相关的东西。不过估计这个只能用貌似了,因为这个BSP我已经修改了好几个月,说不定无意间早就改动了。当我使用sunrain_hjb牛人写的应用程序去读GPH8相关的寄存器的时候,发现这的确是问题所在。两者的GPH8相关的寄存器居然不同。我的配置成输入了,成功的是输出的。
现在使用sunrain_hjb的小软件设置一下GPH8输出,就可以正常读写SD卡了。sunrain_hjb牛人让我学到了好多东西。
============================================================
在注册表里面,SD卡写保护配置有
"CardReadWriteGPIO"="H" ; card R/W on GPH8
"CardReadWriteMask"=dword:100
"CardReadWriteFlag"=dword:100
"CardReadWriteControlMask"=dword:fffcffff
"CardReadWriteControlFlag"=dword:0
"CardReadWritePullupMask"=dword:fffffeff
"CardReadWritePullupFlag"=dword:100
在驱动中有
BOOL CSDIOController::IsCardWriteProtected()
{
switch( m_chCardReadWriteGPIO )
{
case 'A':
return ( ( vm_pIOPreg->GPADAT & m_dwCardReadWriteMask ) == m_dwCardReadWriteFlag ) ? TRUE : FALSE;
case 'B':
return ( ( vm_pIOPreg->GPBDAT & m_dwCardReadWriteMask ) == m_dwCardReadWriteFlag ) ? TRUE : FALSE;
case 'C':
return ( ( vm_pIOPreg->GPCDAT & m_dwCardReadWriteMask ) == m_dwCardReadWriteFlag ) ? TRUE : FALSE;
case 'D':
return ( ( vm_pIOPreg->GPDDAT & m_dwCardReadWriteMask ) == m_dwCardReadWriteFlag ) ? TRUE : FALSE;
case 'E':
return ( ( vm_pIOPreg->GPEDAT & m_dwCardReadWriteMask ) == m_dwCardReadWriteFlag ) ? TRUE : FALSE;
case 'F':
return ( ( vm_pIOPreg->GPFDAT & m_dwCardReadWriteMask ) == m_dwCardReadWriteFlag ) ? TRUE : FALSE;
case 'G':
return ( ( vm_pIOPreg->GPGDAT & m_dwCardReadWriteMask ) == m_dwCardReadWriteFlag ) ? TRUE : FALSE;
case 'H':
return ( ( vm_pIOPreg->GPHDAT & m_dwCardReadWriteMask ) == m_dwCardReadWriteFlag ) ? TRUE : FALSE;
default:
ASSERT(0); // invalid GPIO! We should never get here
return TRUE;
}
}
如果想让系统不检测这个写保护,可以直接该函数的函数体弄成
BOOL CSDIOController::IsCardWriteProtected()
{
return FALSE;
}
即可。哈哈,虽然是些小玩意,但是也是值得注意的。下一步是让该驱动支持大容量的SD卡。回去请教一下群里先。
转载请标明:作者wogoyixikexie@gliet.桂林电子科技大学一系科协,原文地址:http://www.cnblogs.com/wogoyixikexie/(或者我在CSDN的博客:http://blog.csdn.net/gooogleman)——如有错误,希望能够留言指出;如果你有更加好的方法,也请在博客后面留言,我会感激你的批评和分享。
相关文章推荐
- 解决SD卡不能读写的问题
- 解决SD不能读写问题
- 解决在 Android Recovery ADB Shell 下不能挂载SD卡的问题
- C#读写EXCEL源码提示“office检测到此文件存在一个问题。为帮助保护您的计算机,不能打开此文件。 ”的解决
- 解决设置Android 23.0以上版本对SD卡的读写权限无效的问题
- 转贴 解决sd卡的读写问题
- android下SD卡与U盘无读写权限问题的解决办法
- 快速解决设置Android 23.0以上版本对SD卡的读写权限无效的问题
- 解决移动硬盘在电脑上不能读写的问题
- 解决SD卡频繁读写问题 Anything-sync-daemon 映射linux目录到tmpfs并定时同步
- 15 Linux更改权限解决新建用户不能读写创建文件/文件夹的问题
- 解决SD不能读写问题
- C#技巧【调用线程无法访问此对象,因为另一个线程拥有该对象的问题的解决办法】【C#读写EXCEL源码提示“office检测到此文件存在一个问题。为帮助保护您的计算机,不能打开此文件”的解决】
- NFS不能正常读写的问题解决
- Mac下不能读写移动硬盘问题解决
- 解决IE浏览器中Iframe跨域访问不能读写cookie问题
- 用SD卡可以运行Linux系统,却不能安装Linux系统问题的解决方法之一
- 解决IE浏览器中Iframe跨域访问不能读写cookie问题
- 在使用SSIS设计脚本时候,出现的在PostExecute之外不能锁定变量集合进行读写访问的问题的解决
- 解决Spring tools Suite 开发工具中不能用ctrl+左键的类之间的跳转问题