wanggh0451
驱动牛犊
驱动牛犊
  • 注册日期2007-07-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:4001回复:6

wince4.2的SMDK2440 在PB5.0下编译错误,请指教

楼主#
更多 发布于:2007-07-05 14:51
我用的是远峰的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也看不出哪里错了,真是急死我了,不知道该怎样处理,请各位大侠多多指教,谢谢!
wenzai
驱动中牛
驱动中牛
  • 注册日期2002-04-16
  • 最后登录2011-03-04
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望424点
  • 贡献值0点
  • 好评度309点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-07-06 12:54
把之前 build.*文件删除,然后再编译。
zhengshijie
驱动小牛
驱动小牛
  • 注册日期2003-07-11
  • 最后登录2009-03-18
  • 粉丝1
  • 关注0
  • 积分8分
  • 威望217点
  • 贡献值0点
  • 好评度199点
  • 原创分3分
  • 专家分0分
板凳#
发布于:2007-07-06 15:04
zhengshijie
驱动小牛
驱动小牛
  • 注册日期2003-07-11
  • 最后登录2009-03-18
  • 粉丝1
  • 关注0
  • 积分8分
  • 威望217点
  • 贡献值0点
  • 好评度199点
  • 原创分3分
  • 专家分0分
地板#
发布于: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目录去掉。
      
注:因为这个移植系统不稳定,可能与我移植的有关,我不想花时间下去,下面会详细介绍第二种移植方式。
wanggh0451
驱动牛犊
驱动牛犊
  • 注册日期2007-07-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-07-07 00:05
十分感谢zhengshijie大哥的指导,那请问第二种移植方式又是怎样做的?
ok138ok
驱动牛犊
驱动牛犊
  • 注册日期2007-07-23
  • 最后登录2010-04-12
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望171点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-07-25 17:15
是呀,说说第二种方法,等到颈都长了,
arm7000
驱动牛犊
驱动牛犊
  • 注册日期2007-01-06
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望16点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-07-25 17:24
还是找一个2440 5.0的bsp,然后针对你的开板进行移植。各家的2440开发板差不多。移植时再参考4.2的bsp。
游客

返回顶部