8555|20

67

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

2440开发版不支持大容量SD卡 请教怎么修改 [复制链接]

看了GOOOGLEMAN的文章<2440支持大容量SD卡的解决办法>
http://www.cnblogs.com/wogoyixikexie/archive/2009/05/06/1450503.html
在platform->setting->environment 中设置IMGSDBUS2 = 1
在common.bib中也修改过
根本内容我也修改了BSP.C:\WINCE500\PLATFORM\smdk2440\DRIVERS\SDHC\SDHCBASE里的sdiocontrollerbase.cpp
在这里SendCommand(UINT16 Cmd, UINT32 Arg, UINT16 respType, BOOL bDataTransfer)
{
增加        PUCHAR              respBuff;       // response buffer
增加        PSD_BUS_REQUEST pRequest;            
    case ResponseR6:   
        DEBUGMSG (SDHC_SEND_ZONE,(TEXT("sendSDICommand short response required\r\n")));
//      vm_pSDIReg->SDICCON = uiNewCmdRegVal | WAIT_FOR_RESPONSE | START_COMMAND | COMMAND_START_BIT | (Cmd & MAX_CMD_VALUE);
        vm_pSDIReg->rSDICMDCON = WAIT_FOR_RESPONSE | START_COMMAND | COMMAND_START_BIT | (Cmd & MAX_CMD_VALUE);
        break;
增加        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->rSDIRSP0      );
增加        *(respBuff + 2) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 8 );
增加        *(respBuff + 3) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 16);
增加        *(respBuff + 4) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 24);
增加        *(respBuff + 5) = (BYTE)(END_RESERVED | END_BIT);
增加        break;
}
在这里GetCommandResponse(PSD_BUS_REQUEST pRequest)
{
        case ResponseR1b:
            //--- 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->rSDIRSP0      );
            *(respBuff + 2) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 8 );
            *(respBuff + 3) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 16);
            *(respBuff + 4) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 24);
            *(respBuff + 5) = (BYTE)(END_RESERVED | END_BIT);
            break;

增加                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->rSDIRSP0      );
增加            *(respBuff + 2) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 8 );
增加            *(respBuff + 3) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 16);
增加            *(respBuff + 4) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 24);
增加            *(respBuff + 5) = (BYTE)(END_RESERVED | END_BIT);
增加            break;
}
编译系统成功.
可还是读不出 KINGSTON SDHC SD4/4GB .

最新回复

哈哈,我遇到过跟19楼一样的问题,扬创就是这么卑劣,很后悔买他们的东西,没有技术支持,还不提供升级 我后来是重新自己用三星原装的BSP一点点移植驱动,做了一个自己的BSP  详情 回复 发表于 2010-5-26 09:22
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
版主贴主早上好!
版主贴主每天都有好心情!

BI回帖是一种美德!M8
==========================
介+绍:

[/url]

Cl
1)可录制上网记录,截获Http信息。
2)利用截获的Http信息自动生成命令(Page,拖拽即可完成)
3)执行命令,模拟浏览器向Web服务器发生命令。
BI

要看美女来这里:
[url=http://byhat.com]


=======================
软件创业QQ 群:103815692

hn
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
在裸奔的状态下只要修改SD初始化
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
我就是这么修改的。如果你的还是不行,那我真的不懂了。呵呵。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

5
 
补丁打了么
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 3 楼 gooogleman 的回复:
我就是这么修改的。如果你的还是不行,那我真的不懂了。呵呵。

我看你的贴子里第一部份Platform->Settings->Environment->new
-->>Variable name里填IMGSDBUS2,variable value里填1-->>OK
应该是这样修改吧.
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 4 楼 hao507 的回复:
补丁打了么

补丁打过了.在C:\WINCE500\Updates里有Backup文件夹  WinCEPB50_071231_2007_Product_Update_License.rtf  
Windows CE 5.0_Product_Update_Rollup_2007.htm
三个文件
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(中级)

8
 
换个卡试试
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 7 楼 hao507 的回复:
换个卡试试


干脆用2416算了,现在还在用2440??
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

10
 
是不是修改DLL就可以?
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

11
 
我当时也有这个问题,后来打了06、07、08、09四年的PB5补丁,Platform->Settings->Environment->new-->>Variable name里填IMGSDBUS2,variable value里填1,再把Catalog Item里和SD相关的东西添加进去,编译,就识别了。
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 10 楼 tonypioneer 的回复:
我当时也有这个问题,后来打了06、07、08、09四年的PB5补丁,Platform->Settings->Environment->new-->>Variable name里填IMGSDBUS2,variable value里填1,再把Catalog Item里和SD相关的东西添加进去,编译,就识别了。

SD相关的东西是指那一些.我只添加了Device Drivers->SDIO->SD Memory.别的我还需要添加吗
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

13
 
这个问题是不是要先考虑是否能支持小容量的SD呢?之后在研究大容量的SDHC
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

14
 
2.0的高速卡,

底层驱动不支持,

自己修改一下,

我移植过FatFs,4G 和 8G 的hc卡都支持,

 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

15
 
引用 12 楼 wang19847277 的回复:
这个问题是不是要先考虑是否能支持小容量的SD呢?之后在研究大容量的SDHC


是不是按照楼主上面那样修改呢?试了没有效果啊
SD_API_STATUS CSDIOControllerBase::SendCommand(UINT16 Cmd, UINT32 Arg, UINT16 respType, BOOL bDataTransfer)
{
    unsigned int uiNewCmdRegVal = 0;
    DWORD dwWaitCount = 0;
        PUCHAR respBuff; // response buffer
        PSD_BUS_REQUEST pRequest;

    DEBUGMSG (SDHC_SEND_ZONE,(TEXT("SendCommand (0x%08x, 0x%04x, 0x%08x, 0x%04x, 0x%x) starts\r\n"),

......

    case ResponseR1:                // Short response required
    case ResponseR1b:
    case ResponseR3:
    case ResponseR4:
    case ResponseR5:               
    case ResponseR6:   
        DEBUGMSG (SDHC_SEND_ZONE,(TEXT("sendSDICommand short response required\r\n")));
//      vm_pSDIReg->SDICCON = uiNewCmdRegVal | WAIT_FOR_RESPONSE | START_COMMAND | COMMAND_START_BIT | (Cmd & MAX_CMD_VALUE);
        vm_pSDIReg->rSDICMDCON = WAIT_FOR_RESPONSE | START_COMMAND | COMMAND_START_BIT | (Cmd & MAX_CMD_VALUE);
        break;

          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->rSDIRSP0      );
            *(respBuff + 2) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 8 );
            *(respBuff + 3) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 16);
            *(respBuff + 4) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 24);
            *(respBuff + 5) = (BYTE)(END_RESERVED | END_BIT);
            break;


    case ResponseR2:                // Long response required      
        DEBUGMSG (SDHC_SEND_ZONE,(TEXT("sendSDICommand long response
......

}

.......
SD_API_STATUS CSDIOControllerBase::GetCommandResponse(PSD_BUS_REQUEST pRequest)
{
    DEBUGMSG (SDHC_SEND_ZONE,(TEXT("GetCommandResponse started\r\n")));
    PUCHAR              respBuff;       // response buffer
    DWORD dwWaitCount = 0;

.......  

   switch(pRequest->CommandResponse.ResponseType)
    {
        case NoResponse:
            break;

        case ResponseR1:               
        case ResponseR1b:
            //--- 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->rSDIRSP0      );
            *(respBuff + 2) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 8 );
            *(respBuff + 3) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 16);
            *(respBuff + 4) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 24);
            *(respBuff + 5) = (BYTE)(END_RESERVED | END_BIT);
            break;
         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->rSDIRSP0      );
            *(respBuff + 2) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 8 );
            *(respBuff + 3) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 16);
            *(respBuff + 4) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 24);
            *(respBuff + 5) = (BYTE)(END_RESERVED | END_BIT);
            break;

        case ResponseR3:
        case ResponseR4:
            //--- SHORT RESPONSE (48 bits total)---
            // Format: { START_BIT(1) | TRANSMISSION_BIT(1) | RESERVED(6) | CARD_STATUS(32) | RESERVED(7) | END_BIT(1) }
            //
            *(respBuff    ) = (BYTE)(START_BIT | TRANSMISSION_BIT | START_RESERVED);
            *(respBuff + 1) = (BYTE)(vm_pSDIReg->rSDIRSP0      );
            *(respBuff + 2) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 8 );
            *(respBuff + 3) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 16);
            *(respBuff + 4) = (BYTE)(vm_pSDIReg->rSDIRSP0 >> 24);
            *(respBuff + 5) = (BYTE)(END_RESERVED | END_BIT);   
            break;

        case ResponseR5:               
        case ResponseR6:

.......
}
两个函数里是这样添加的,请大家仔细看一下,有没有添加错了
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

16
 
我们的可以支持8G。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

17
 
在platform->setting->environment 中设置IMGSDBUS2 = 1

设置之后在PB下通过"open release directory"中输入set sysgen 是不是可以查看到所有环境变量?
但是我查看了没有IMGSDBUS2 = 1,只查到有SD_MEMORY=1

这样是不是有问题呢?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

18
 
大家好,我设置IMGSDBUS2 = 1,那我怎么知道我设置成功了呢?
设置这个环境变量有什么作用呢?
我现在不能实现4 G卡的识别,我怀疑这个环境变量设置有问题,它与那些文件有关联,起到什么作用呢?
我目前查看了commom.bib这个文件,和环境变量有关吗?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

19
 
引用 13 楼 laorenshen 的回复:
2.0的高速卡,

底层驱动不支持,

自己修改一下,

我移植过FatFs,4G 和 8G 的hc卡都支持,

你指的底层驱动是那里的驱动?
C:\WINCE500\PLATFORM\smdk2440\DRIVERS\SDHC\SDHCBASE里的sdiocontrollerbase.cpp我已经修改过了
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

20
 
修改前能认到普通的2G卡.修改后连2G卡都认不到.我用的是扬创的UTU2440-F.怎么不行呢?
在Platform->Settings->Environment增加IMGSDBUS2 = 1,我查了sdbus.dll变成了60K的.那应该是这变量设置是成功的.但是就认不出SD卡
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表