2440支持大容量SD卡的解决办法

2440支持大容量SD卡的解决办法

//-----------------------------------------------------------------------------------------------------------

// 作者:wogoyixikexie@gliet

// 版权:桂林电子科技大学一系科协wogoyixikexie@gliet

// 平台:wince5.0 2440 5.0 BSP

// 发布日期:2009年5月6日 10:45:54

// 最后修改:

// 注意事项:未经作者同意,不得在转载的时候擅自修改、删除文章的任何部分

//-----------------------------------------------------------------------------------------------------------

      上周搞定了摄像头,昨天开始搞SD卡,刚开始挺郁闷,大容量不支持就算了,居然小容量的SD卡能够发现盘符,但是却不能删除和新建文件,后来经过修改,把写保护检测去掉了就可以正常读写了。Google了一下,然后在在群里问了一下,在CSDN搜索了一下,很幸运,很快搞定了大容量的SD卡支持问题。        

      现在借花献佛,写个详细的做法,希望后人收益。

      操作方法:

1.      更新PB. 更新补丁放在//10.1.10.250/software/WinCE50 Update/WinCEPB50-071231-Product-Update-Rollup-Armv4I.msi 
2.      在platform->setting->environment 中设置IMGSDBUS2 = 1

         之所以要设置这个环境变量是因为sdbus2.dll 才支持大容量的SD的。

在common.bib中 

#if defined IMGSDBUS2 
; @CESYSGEN IF CE_MODULES_SDBUS2 
  sdbus.dll      $(_FLATRELEASEDIR)/sdbus2.dll                NK  SH 
; @CESYSGEN ENDIF CE_MODULES_SDBUS2 
#else 
; @CESYSGEN IF CE_MODULES_SDBUS 
  sdbus.dll      $(_FLATRELEASEDIR)/sdbus.dll                  NK  SH 
; @CESYSGEN ENDIF CE_MODULES_SDBUS 
#endif
3.      修改BSP下的代码

(1)SendCommand(UINT16 Cmd, UINT32 Arg, UINT16 respType, BOOL bDataTransfer)函数里在case ResponseR6:下面加case ResponseR7:

case ResponseR1:                
        case ResponseR1b:
  case ResponseR7:    // add by wogo at 2009.05.06添加的地方
            //--- SHORT RESPONSE (48 bits total)--- 
            // Format: { START_BIT(1) | TRANSMISSION_BIT(1) | COMMAND_INDEX(6) | CARD_STATUS(32) | CRC7(7) | END_BIT(1) }
            // NOTE: START_BIT and TRANSMISSION_BIT = 0, END_BIT = 1
            //
            *(respBuff    ) = (BYTE)(START_BIT | TRANSMISSION_BIT | pRequest->CommandCode);
            *(respBuff + 1) = (BYTE)(vm_pSDIReg->SDIRSP0      );
            *(respBuff + 2) = (BYTE)(vm_pSDIReg->SDIRSP0 >> 8 );
            *(respBuff + 3) = (BYTE)(vm_pSDIReg->SDIRSP0 >> 16);
            *(respBuff + 4) = (BYTE)(vm_pSDIReg->SDIRSP0 >> 24);
            *(respBuff + 5) = (BYTE)(END_RESERVED | END_BIT);
            break;
(2)函数GetCommandResponse(PSD_BUS_REQUEST pRequest)中加在case ResponseR1b:下面 

case ResponseR1:                
case ResponseR1b: 
case ResponseR7: //------------------------添加的地方

            //--- SHORT RESPONSE (48 bits total)--- 
            // Format: { START_BIT(1) | TRANSMISSION_BIT(1) | COMMAND_INDEX(6) | CARD_STATUS(32) | CRC7(7) | END_BIT(1) } 
            // NOTE: START_BIT and TRANSMISSION_BIT = 0, END_BIT = 1 
            // 
            *(respBuff    ) = (BYTE)(START_BIT | TRANSMISSION_BIT | pRequest->CommandCode); 
            *(respBuff + 1) = (BYTE)(vm_pSDIReg->SDIRSP0      ); 
            *(respBuff + 2) = (BYTE)(vm_pSDIReg->SDIRSP0 >> 8 ); 
            *(respBuff + 3) = (BYTE)(vm_pSDIReg->SDIRSP0 >> 16); 
            *(respBuff + 4) = (BYTE)(vm_pSDIReg->SDIRSP0 >> 24); 
            *(respBuff + 5) = (BYTE)(END_RESERVED | END_BIT); 
            break; 
 主要是要添加对cmd7的支持。

 

然后重新sysgen个工程即可。

 

==================================完毕!================================= 

原文地址:http://blog.csdn.net/gooogleman/article/details/4154020


注:做完以上步骤后,最后一步编译工程我的做法与上面不同。我遇到的情况是这样的,如果我sysgen工程并不识别大容量SD卡,更改无效。如果我选择Build and sysgen current BSP确可以实现预期效果。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值