zoukankan      html  css  js  c++  java
  • 2440支持大容量SD卡的解决办法(作者:www.gooogleman.com 站长gooogleman)

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

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

    // 作者:www.gooogleman.com 站长gooogleman)

    // 版权:www.gooogleman.com

    // 平台:wince5.0 2440 5.0 BSP

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

    // 最后修改:2011.08.08

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

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

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

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

          操作方法:

    1.      更新PB. 更新补丁放在\\10.1.10.250\software\WinCE50 Update\WinCEPB50-071231-Product-Update-Rollup-Armv4I.msi

       ——补充(2011.08.08):以前是2007年的全年包开始有SD大容量支持,但是同志们千万不要煞费苦心的寻找2007年全年补丁包了,因为后来的2008/2009/2010年全年补丁包都包含了这个大容量SD 补丁包的支持的,所以现在我们只要打上我们最新的2010年全年补丁包就可以了,2007 年的早就不提供下载的,这个微软还是做得比较好的,不然以后一直打更新包,

    那么我们电脑硬盘都撑破了。
    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个工程即可。

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


    4.      重新sysgen platform。

    补充:对于2410 支持大容量SD问题也是类似 如果是4.2BSP就要修改中断申请等问题了。4.2BSP支持大容量的SD卡办法请参考这里

    http://topic.csdn.net/u/20080911/16/111A849C-FD1F-4955-840D-6DDFBA8EE1FA.html

    http://topic.csdn.net/u/20081104/13/5024B712-07F4-4B33-A015-F2D5BAAFA027.html

    http://topic.csdn.net/u/20081021/10/52df6b8b-c69b-4e7b-a278-0816e133f881.html?seed=508798215

    http://topic.csdn.net/u/20080916/16/00D9A2BE-E4F8-4BEA-B892-F25E20AC4C83.html

  • 相关阅读:
    BASH让标准输出和错误输出颜色不同
    为Linux的文件管理器创建“在此打开终端”菜单
    在Linux终端中快速生成、解码二维码
    让BASH用得更舒服:提示符颜色、时间、显示返回值、终端标题显示当前目录与正在执行的命令
    Linux关联文件扩展名和打开程序
    Linux发行版教你如何选 给入门者的选择通法
    B/S架构与C/S架构的比较
    一个PB12.5安装的问题
    介绍JavaEE平台
    类与对象小结
  • 原文地址:https://www.cnblogs.com/gooogleman/p/1869684.html
Copyright © 2011-2022 走看看