阅读:4001回复:6
wince4.2的SMDK2440 在PB5.0下编译错误,请指教
我用的是远峰的S3C2440的开发板,BSP包名为SMDK2440,操作系统版本为WINCE4.2。
目前想将其升级到WINCE5.0,但是远峰已经不做此项业务,不再提供相关WINCE5.0的BSP包。 我在三星的网站上也下不到wince5.0下的SMDK2440包。 wince4.2的SMDK2440 在PB5.0下编译错误: BUILD: [00:0000000004:ERRORI] Bad database entry: org - drv_glob.h 44 0 2ebd3f1c 210 0. 我打开ORG-drv_glob.h也看不出哪里错了,真是急死我了,不知道该怎样处理,请各位大侠多多指教,谢谢! |
|
沙发#
发布于:2007-07-06 12:54
把之前 build.*文件删除,然后再编译。
|
|
板凳#
发布于:2007-07-06 15:04
|
|
地板#
发布于:2007-07-06 15:10
以前我在驱网上发过一篇有讲移植4.2的BSP到5.0下面的过程。但那个帖子已丢失,我把我的移植笔记贴上来你参考一下,
如何在WINCE5.0下创建SMDK2440 BSP. 资源: 1. 安装了PB5.0 并有SMDK2410 BSP. 2. 购买开发板带的SMDK2440 WINCE4.2 BSP. 3.QT2440开发板带240×320 TFT液晶,触摸屏。 为什么想要移植WINCE4.2 SMDK2440 BSP 到WINCE5.0? 根本原因是SD卡驱动的问题,在WINCE5.0上是自带的SD卡驱动且有源代码,而4.2上SMDK2440只有第三方提供的3个动态库,而更不可理解的是用开发板带的4.2的BSP居然在PB4.2上没有连接成功,提示那3个动态库是THUMB,而内核是ARM指令编译的。 移植方式有两种: 1. 直接把4.2 BSP 拷贝到WINCE500/PLATFROM/SMDK2440 目录下,经过修改使之能在PB5.0下编译通过。 2. CLONE WINCE5.0自带的SMDK2410 BSP ,取名为SMDK2440,修改它使之适应S3C2440 CPU. 我先完成了第一种移植,能运行,但系统似乎不大稳定,系统不是每次都能顺利运行,有时系统会挂起。而这个时候根本没法跟踪调试,想要找出原因比较困难,因为时间问题我没有继续研究。 很快我选择第二种方式,为了验证可行性我先在SMDK2410 BSP上作了一些简单的修改,编译完成之后下到设备,很幸运,系统能跑起来了。所以坚定了我的信心。 移植方式一的步骤: 移植QT2440BSP到WINCE5.0 1.把SMDK2440文件夹COPY到D:\WINCE500\PLATFORM\ 目录下(注,假定你的WINCE5.0安装在D盘,根据实际安装的盘符修改)。 2.启动PLATFORM BUILDER5.0,点击菜单【FILE】->[Manage Catalog Items...],这时会弹出[Manage Catalog Items]对话框。 点击[import]按钮,找到D:\WINCE500\PLATFORM\SMDK2440\smdk2440.cec导入。 3.开始定制平台,点击PLATFORM BUILDER5.0菜单【FILE】->[New Platform...],为新平台命名,假定取名为gprs2440,在 D:\WINCE500\PBWorkspaces\gprs2440,选择SMDK2440 BSP,下一步选择mobile handheld,下一步把windows media audio/mp3 和[microsoft file viewers]->microsoft image viewer选上,下一步internet standard protocol默认,下一步skip,这 时到了finish,直接点击它,结束平台定制。 4.在OSDesignView,右键点击[gprs2440 Catlog items],在弹出菜单选择[Setings...],configuration 选择Samsung smdk2440: ARMV4I_Debug,[Build Options]属性页,如果要调试内核的话,把[Enable Full Kernel Mode],[Enable Kernel Debugger] ,[Enable KITL]都勾选上。在[Environment],可以添加环境变量,进行条件编译。[locale]属性页是本地化,默认语言选择 [Chinese (PRC)]. 5.开始编译,点击PB5.0 【Build OS】->[Build and Sysgen],等待,出错,指示在D:\WINCE500\PLATFORM\SMDK2440\Build.dat 有语法错误, F ORG - drv_glob.h 44 0 2ebd3f1c 210 0,后来查到在SMDK2440\INC\ORG - drv_glob.h,这个文件实际上是不 需要的,是个备份文件,在WINCE4.2上不会出错,但WINCE5.0就不行,所以直接把它删掉。重新build,还是有错,指示 reginit.ini ->HKEY_LOCAL_MACHINE\Drivers\BuiltIn\WAPIMAN\Clicks]语法错,确实少了左括号,在SMDK2440\FILES\platform.reg 加上左括号,同时把LOC_19200等加上双引号,因为编译提示语法错。 [HKEY_LOCAL_MACHINE\Comm\DefaultConnections] "LOC_19200"=multi_sz:"SER2440 UNIMODEM","19200" "LOC_38400"=multi_sz:"SER2440 UNIMODEM","38400" "LOC_115200"=multi_sz:"SER2440 UNIMODEM","115200" "LOC_IR"=multi_sz:LOC_FRIENDLYINFRARED,"115200" "LOC_57600"=multi_sz:"SER2440 UNIMODEM","57600" 改完之后继续编译,发现还是出错,因为WINCE5.0的文件目录组织跟WINCE4.2有所不同,有些库已经更新,并有用新的名字,所以 出现很多链接错误,函数未定义等。首先发现pcmcia驱动链接的serv_card.lib系统已经不提供了,把WINCE自带的SMDK2410中的pcmcia 驱动copy过来,修改包含头文件,pdsocket.h->#include <s3c2410x.h> 替换成<s2440.h>,修改pdsocket.cpp,init.cpp,寄存器名字 更新成S3C2440的。经过一些反复之后,pcmcia驱动编译过了,到了编译SMDK2440\KERNEL\BUILDEXE\KERN,出错了,TARGETLIBS=$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\nk.lib \ $(_TARGETPLATROOT)\lib\$(_CPUDEPPATH)\hal.lib \ !if 0 $(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\csp_arm.lib \ 这两个库已经不存在了,由其它库替换了,而且路径也不一样了, $(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\csp_arm920t.lib \ 不在PUBLIC\COMMON\OAK\CSP\ARM\,移到了PLATFORM\COMMON\SRC\ARM\ !endif $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_abort_arm920t.lib \ $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_cache_arm920t.lib \ $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_memory_arm.lib \ $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_log.lib \ $(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\loadauth.lib \ $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\fulllibc.lib SMDK2440\KERNEL\HAL\halether.c 去掉OEMEthInit()中处理NE2000网卡的codes, SMDK2440\KERNEL\HAL\ARM\fw.s 因为新的系统有关ARMClearUTLB,ARMFlushICache,ARMFlushDCache,ARM用OAL替换。 SMDK2440\KERNEL\BUILDEXE\KERN\ KERNKITL\ KERNKITLPROF\ 目录下的source文件需要修改。 SMDK2440\INC\ 删除 ORG - drv_glob.h SMDK2440\FILES\platform.bib platform.reg 需要修改,参看源文件。 SMDK2440\EBOOT\sources 文件修改,用新的库替换csp_arm.lib SMDK2440\DRIVERS\WAVCLICK\sources 文件指定的INCLUDES路径不对。 SMDK2440\DRIVERS\PCMCIA\ 整个目录下的文件都替换掉了。 SMDK2440\DRIVERS\nandflsh\FMD\sources 编译源文件ECC.cpp改为ECC.c。fmd.cpp修改了引起WARNING的代码。 SMDK2440\dirs 把GWE目录去掉。 注:因为这个移植系统不稳定,可能与我移植的有关,我不想花时间下去,下面会详细介绍第二种移植方式。 |
|
地下室#
发布于:2007-07-07 00:05
十分感谢zhengshijie大哥的指导,那请问第二种移植方式又是怎样做的?
|
|
5楼#
发布于:2007-07-25 17:15
是呀,说说第二种方法,等到颈都长了,
|
|
6楼#
发布于:2007-07-25 17:24
还是找一个2440 5.0的bsp,然后针对你的开板进行移植。各家的2440开发板差不多。移植时再参考4.2的bsp。
|
|