SD卡支持大容量办法(转)

1.      

更新PB,补丁名称为:

0712月份的WinCEPB50-071231-Product-Update-Rollup-Armv4I.msi
2.      
platform->setting->environment 中设置
IMGSDBUS2 = 1

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


3
、在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

(第三个似乎很多BSP都已经包含了的)

 

 

4、修改BSP代码:

  SDHC——》sdhcbase下的sdiocontrollerbase.cpp中,添加两句代码:

 

第一个在SendCommand函数下:

   case ResponseR1:                // Short response required

    case ResponseR1b:

    case ResponseR3:

    case ResponseR4:

    case ResponseR5:                

    case ResponseR6:   

              case ResponseR7://该句话为添加的代码

 

第二个在GetCommandResponse函数下:

    case ResponseR1:               

    case ResponseR1b:

                     case ResponseR7: //该句话为添加的代码

          

 *(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);

主要是增加对CMD8命令,详细请查MMCSD卡的协议。

 

 

 

 

 

pb6已经默认包含了对sd20的支持。pb5在打过2007全年补丁后,就增加了对sd20协议以及SDHC卡的支持,需要设置一个新的环境变量IMGSDBUS2=1.在驱动里面的对应修改非常简单, 就是增加对CMD8命令的响应, 根据sd20协议,cmd8的响应类型是R7 所以, 简单的在12081308行增加case ResponseR7:就可以了。

说明, sdhc是遵循sd20协议, sd20协议和sd11协议的差别不是很大, 主要一个区别是在初始化时候,发送cmd0复位后, 首先发送cmd8进行判断是否支持sd20 然后才发生cmd2 cmd3 acmd55进行识别。还有一个重大的变化是sd20只能支持512大小的block 但是对于之前的驱动实现,对于sd11的卡, 默认的也都是使用512,所以这一点不需要额外处理。

经过测试2440可以支持sdhcsd20. 之前一直担忧2440sdfifosize太小, 仅仅64 小于一次有效传输的block size 担忧会导致fifo溢出。 又对比了24506410系列的sd部分, fifo都增加到了512 也许是因应新协议的变化。

我测试的是一张4G class 2SDHC卡。实际测试, 2440可以使用SDHC。意味着可以支持4G32G的卡。

         

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值