阅读:2066回复:4
移植CSP下驱动失败,很奇怪。。。
为了不修改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加载就是会出错,哪位兄弟能指点一下? |
|
沙发#
发布于:2008-11-12 16:13
我比较了SYSGEN生成的DLL和我单独编译生成的DLL,大小差一点,不知道SYSGEN的时候做了些什么。。。
更奇怪的是:我单独编译CSP\ARM\SAMSUNG\S3C2410X\SDHC\SDHCBASE\生成的LIB 和 我在BSP下单独编译生成的LIB也不一样,大小也差一点。。。 郁闷! |
|
板凳#
发布于:2008-11-12 18:25
为什么buildrel这个命令不会把新产生的sdhc_sc2410.dll COPY到 _FLATRELEASEDIR中?越来越奇怪了。。。
|
|
地板#
发布于:2008-11-13 22:04
今天试着把SOURCELIBS里的代码都放到这个里面一块BUILD,然后编译生成竟象,系统启动居然没有问题了,SDBUS,SDHC和SDMEMORY都已经加载成功,还不明白为什么,期待高手指点。。。
|
|
地下室#
发布于:2008-11-29 11:36
你上面说的都是表面现象,
从调试信息上看是访问了0地址,跟一下代码就明白了。 |
|
|