modernhill
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分98分
  • 威望278点
  • 贡献值0点
  • 好评度172点
  • 原创分0分
  • 专家分0分
阅读:2066回复:4

移植CSP下驱动失败,很奇怪。。。

楼主#
更多 发布于:2008-11-12 16:11
为了不修改PUBLIC下的东西,我把CSP\ARM\SAMSUNG\S3C2410X\SDHC这个文件夹拿到BSP下,编译通过,并用生成的DLL(sdhc_sc2410.dll)替换原来的DLL,名字都一样,然后makeimg,然后系统启动的过程中却报错:
Prefetch Abort: Thread=8fda7cc8 Proc=8de66280 'device.exe'
AKY=00000005 PC=00000000(???+0x00000000) RA=02a850e8(sdhc_sc2410.dll+0x000050e8) BVA=00000000 FSR=00000005
RaiseException: Thread=8fda7cc8 Proc=8de66280 'device.exe'
AKY=00000005 PC=03f8b3c8(coredll.dll+0x0001b3c8) RA=8c206ee4(NK.EXE+0x00006ee4) BVA=00000001 FSR=00000001

我又把原来的DLL替换回去(从_PROJECTOAKROOT\target\armv4i\retail里),然后生成竟象,系统启动正常!

由于代码一点都没有修改,我就怀疑是编译的问题,于是我SYSGEN整个系统,然后又按上面的步骤做了一遍,还是一样的现象------只要用SYSGEN生成的DLL,系统启动就正常,用我生成的DLL加载的时候就会报错!真是奇怪!

原来的sources如下:
SYNCHRONIZE_DRAIN=1
TARGETDEFNAME=SDHC_SC2410
DEFFILE=$(TARGETDEFNAME).def
TARGETNAME=$(TARGETDEFNAME)_LIB
TARGETTYPE=LIBRARY
WINCETARGETFILE0=$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\$(DEFFILE)
PREPROCESSDEFFILE=1
SOURCELIBS=$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\SC2410_SDHCBase.lib
INCLUDES=..\SDHCBase;..\..\inc
SOURCES = SDIOController.cpp \

我把它拿到BSP之后修改SOURCES如下:
TARGETNAME=SDHC_SC2410
TARGETTYPE=DYNLINK
RELEASERYPE=PLATFORM
DEFFILE=SDHC_SC2410.def
SOURCELIBS=$(_TARGETPLATROOT)\lib\$(_TGTCPU)\$(WINCEDEBUG)\SC2410_SDHCBase.lib
TARGETLIBS= \
    $(_PROJECTROOT)\cesysgen\oak\lib\$(_TGTCPU)\$(WINCEDEBUG)\sdcardlib.lib \
    $(_PROJECTROOT)\cesysgen\oak\lib\$(_TGTCPU)\$(WINCEDEBUG)\sdhclib.lib \
    $(_PROJECTROOT)\cesysgen\oak\lib\$(_TGTCPU)\$(WINCEDEBUG)\sdbus.lib \
    $(_PROJECTROOT)\cesysgen\oak\lib\$(_TGTCPU)\$(WINCEDEBUG)\ceddk.lib \
    $(_PROJECTROOT)\cesysgen\sdk\lib\$(_TGTCPU)\$(WINCEDEBUG)\coredll.lib \
INCLUDES=..\SDHCBase;  C:\WINCE500\PUBLIC\COMMON\OAK\CSP\ARM\SAMSUNG\S3C2410X\INC;
SOURCES = SDIOController.cpp \

由于SDHC文件夹下还有个SDHCBASE,我都拿到BSP下了,唯一的改动只是在SOURCES里,可是生成的DLL加载就是会出错,哪位兄弟能指点一下?
modernhill
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分98分
  • 威望278点
  • 贡献值0点
  • 好评度172点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-11-12 16:13
我比较了SYSGEN生成的DLL和我单独编译生成的DLL,大小差一点,不知道SYSGEN的时候做了些什么。。。
更奇怪的是:我单独编译CSP\ARM\SAMSUNG\S3C2410X\SDHC\SDHCBASE\生成的LIB 和 我在BSP下单独编译生成的LIB也不一样,大小也差一点。。。
郁闷!
modernhill
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分98分
  • 威望278点
  • 贡献值0点
  • 好评度172点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-11-12 18:25
为什么buildrel这个命令不会把新产生的sdhc_sc2410.dll COPY到 _FLATRELEASEDIR中?越来越奇怪了。。。
modernhill
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分98分
  • 威望278点
  • 贡献值0点
  • 好评度172点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-11-13 22:04
今天试着把SOURCELIBS里的代码都放到这个里面一块BUILD,然后编译生成竟象,系统启动居然没有问题了,SDBUS,SDHC和SDMEMORY都已经加载成功,还不明白为什么,期待高手指点。。。
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-11-29 11:36
你上面说的都是表面现象,
从调试信息上看是访问了0地址,跟一下代码就明白了。
学海无涯
游客

返回顶部