我的bsp是优龙5.0的bsp,符合5.0标准,现在的问题是
1. 编译Pwrbutton(matrixkb.dll)驱动时候,出现
BUILD: [01:0000000055:ERRORE] matrixkb.obj : error LNK2019: unresolved external symbol keybd_event referenced in function SendKey
BUILD: [01:0000000056:ERRORE] E:\WINCE600\platform\My2440A\target\ARMV4I\debug\matrixkb.dll : fatal error LNK1120: 1 unresolved externals
未找到解决办法,将其暂时注销
2.编译CS8900驱动的时候,找不系统库 ndis.lib
TARGETLIBS= \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\ndis.lib \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\ntcompat.lib \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\coredll.lib \
$(_PROJECTROOT)\cesysgen\oak\lib\$(_CPUINDPATH)\ceddk.lib \
U1073: don't know how to make
'E:\WINCE600\OSDesigns\OSDesign2\Wince600\My2440A_ARMV4I\cesysgen\sdk\lib\ARMV4I\debug\ndis.lib'
3.编译usb fuction驱动时候
BUILD: [01:0000001429:ERRORE] NMAKE : U1073: don't know how to make 'E:\WINCE600\OSDesigns\OSDesign2\Wince600\My2440A_ARMV4I\cesysgen\oak\lib\ARMV4I\debug\ufnmdd.lib'
BUILD: [01:0000001431:ERRORE] NMAKE.EXE TargetLibFiles -i -c BUILDMSG=Stop. BUILDROOT=E:\WINCE600\PLATFORM\My2440A CLEANBUILD=1 LINKONLY=1 NOPASS0=1 failed - rc = 2
4.编译Battdrvr
BUILD: [01:0000000084:ERRORE] battdrvr_lib.lib(battdrvr.obj) : error LNK2019: unresolved external
symbol PowerPolicyNotify referenced in function BatteryThreadProc
37 个解决方案
#1
怎么没人呢..
呵呵 不过问题解决了
有几个模块没加进去...
哎 我的一百分啊...
就这样没了
呵呵 不过问题解决了
有几个模块没加进去...
哎 我的一百分啊...
就这样没了
#2
up一下
#3
又有新问题,
"FriendlyName"=LOC_USBFN_SERIAL_NAME
中的LOC_USBFN_SERIAL_NAME未定义
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Serial_Class]
"FriendlyName"=LOC_USBFN_SERIAL_NAME
"idVendor"=dword:0547
"Manufacturer"=LOC_USBFN_SERIAL_MANUFACTURER
"idProduct"=dword:2720
"Product"=LOC_USBFN_SERIAL_PRODUCT
"Index"=dword:5
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial]
"FriendlyName"=LOC_DISPLAYNAME_COM1
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\IRDA2440]
"FriendlyName"=LOC_DISPLAYNAME_RAWIR
在ce6.0上好象找不到FriendlyName后面这些标号,结果编译最后阶段,合成reg文件的时候出错了
这些标号在什么地方定义的?
"FriendlyName"=LOC_USBFN_SERIAL_NAME
中的LOC_USBFN_SERIAL_NAME未定义
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Serial_Class]
"FriendlyName"=LOC_USBFN_SERIAL_NAME
"idVendor"=dword:0547
"Manufacturer"=LOC_USBFN_SERIAL_MANUFACTURER
"idProduct"=dword:2720
"Product"=LOC_USBFN_SERIAL_PRODUCT
"Index"=dword:5
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial]
"FriendlyName"=LOC_DISPLAYNAME_COM1
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\IRDA2440]
"FriendlyName"=LOC_DISPLAYNAME_RAWIR
在ce6.0上好象找不到FriendlyName后面这些标号,结果编译最后阶段,合成reg文件的时候出错了
这些标号在什么地方定义的?
#4
那些不过是些宏定义罢了,你搜以前的BSP,肯定能找到。
#5
是宏定义,但是好象不在bsp中定义,
我完全用的以前的bsp,里边的reg文件没有修改过.以前在windows ce 5.0下能编译通过.现在不行.
我想它是不是在5.0中在common.reg或者其他什么地方定义过?
那为什么在6.0 中就没有了呢?
我完全用的以前的bsp,里边的reg文件没有修改过.以前在windows ce 5.0下能编译通过.现在不行.
我想它是不是在5.0中在common.reg或者其他什么地方定义过?
那为什么在6.0 中就没有了呢?
#6
files\Intltrns 下有一堆像 040a, 040c.. 等的 subfolder, 裡面的 platform.str 中有.
做不同語言用的.
Paul, Chao @ Techware
做不同語言用的.
Paul, Chao @ Techware
#7
我用关键字搜素了那些文件夹和底下的文件.没有找到有关这几个的定义.
如果自己添加的话,如何将他们导到我的平台里边去?
你说的不同语言是什么意思?是指他们的会经过一次转换后才会转变成reg文件中中的那些宏?
如果自己添加的话,如何将他们导到我的平台里边去?
你说的不同语言是什么意思?是指他们的会经过一次转换后才会转变成reg文件中中的那些宏?
#8
也许改名字了。
楼主能够启动了吗?如果能够启动暂时不管那么多先。
还有wince 6.0 那个自带的模拟器是以2410 为代表的,可以拿来比较一下。
楼主能够启动了吗?如果能够启动暂时不管那么多先。
还有wince 6.0 那个自带的模拟器是以2410 为代表的,可以拿来比较一下。
#9
汗 编译还没通过呢.遇到这个问题..
启动先不管,既然有问题就先弄明白,反正咱有时间
启动先不管,既然有问题就先弄明白,反正咱有时间
#10
我刚才把那些文件打开看了,是有那些字符串的定义,不过好奇怪,就是搜素不出来.
这个先不管,
现在我想弄清楚的是,他们是怎么导入系统的呢?我看了几个文件,他们的内容都一样,pb到底怎么选择这些文件的?如果需要自己添加的话,需要做些什么工作?
#11
不同的數值代表不同的 locale, lz 選不同的 locale 的時候, 它會去相對應的 subfolder 做 string replace.
Paul, Chao @ Techware
Paul, Chao @ Techware
#12
流驱动可有可无的,
如果移植就搞定OAL以——》文件系统——》本机驱动——》确定能启动之后最后才是流驱动。
想一炮搞定很少有这么顺利的。
#13
看样子lz把最关键的OAL部分搞定了啊,传授一下经验啊,有联系方式没有
#14
如这哥们所讲,既然仅仅是用来指向某一个folder的宏定义,那楼主直接用一个存在的相关folder来进行替代不就可以了么?先把系统搞起来再说
#15
當年教程式語言的老師說了一句非常雋永的話, 如今還是老賊的座右銘
COMPILER 通過, 才是痛苦的開始
哈, 共勉之吧, 加油
Paul, Chao @ Techware
COMPILER 通過, 才是痛苦的開始
哈, 共勉之吧, 加油
Paul, Chao @ Techware
#16
有他们的对应关系吗?我用的是s3c2440,应该对应那个文件夹?
我在帮助里边没找到这个东东。。
有相关资料吗?
#17
那部分和kitl编译都没有问题了。。
不知道能不能运行。
我这次主要是要想弄清楚ce5.0和ce6.0到底有什么区别。所以先都让他编译通过再说,不着急调试。。
问题越多越好。。
#18
我就是不知道哪个数字的folder对应着我的bsp啊!
#19
好,顶一下,不知道楼主用到是三星的那款芯片,2440么?
以后也有打算把WinCE5.0移植到CE6.0上
以后也有打算把WinCE5.0移植到CE6.0上
#20
是的,有没有人知道 为什么只生成nk.bin,而不生成nk.nb0?
#21
nk.nb0 没有的话是 config.bib 里面对nb0 的配置不太正确
#22
兄弟能说具体点吗?
#23
各位大侠,还有个问题
LCD驱动移植
BUILD: [Thrd:Sequence:Type ] Message
BUILD: [01:0000000042:ERRORE] e:\wince600\platform\my2440a\src\drivers\display\precomp.h(30) :
fatal error C1083: Cannot open include file: 'ddpguids.h': No such file or directory
BUILD: [01:0000000046:ERRORE] e:\wince600\platform\my2440a\src\drivers\display\precomp.h(30) :
我没有找到相关资料,请各位帮个忙 ,给点建议.
等我把它弄完,一定会把所有问题和解决方法都公布的...
各位给点鼓励啊..
gooogleman 兄弟.. 你好象移植过,应该是过来人.. 指点一下.
#24
楼上错误很明显啊,是ddpguids.h文件的路径错误啊,把以前的文件找过来,放到那个目录下
#25
ddpguids.h
这个文件是做什么的?还有这个应该是pb5.0自带的文件,我没有装pb5.0.
这个文件是做什么的?还有这个应该是pb5.0自带的文件,我没有装pb5.0.
#26
我没有移植过,去年想移植,但是公司不同意。后来我自己看了不少文章。
我觉得搞定bootloader+OAL确定能够加载文件系统等之后再弄驱动才是合适的。否则你不成功的积累越来越多,情况就会越来越糟糕。
我觉得搞定bootloader+OAL确定能够加载文件系统等之后再弄驱动才是合适的。否则你不成功的积累越来越多,情况就会越来越糟糕。
#27
loader 我打算用以前的的.
oalexe编译没有问题,其实oal也没什么东西.
其他的可以跳过,但是display,这个一定要先弄起来.
回复的人好少..
应该有很多人移植过啊.
oalexe编译没有问题,其实oal也没什么东西.
其他的可以跳过,但是display,这个一定要先弄起来.
回复的人好少..
应该有很多人移植过啊.
#28
先公布这段时间遇到的问题和解决方法:
1.编译eboot连接时候找不到函数__security_cooks
在加入$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\gsnull.lib \后,该问题解决。
2 . 全局变量CEProcessorType不能访问,包含头文件"NKarm.h"后 找不到该头文件。
从init.c中去掉该变量
3. 找不到“OALKitlPowerOff referenced in function OEMPowerOff”和
error LNK2019: unresolved external symbol OALKitlStart referenced in function OEMInit
这些都是kitl部分的代码,将其从相关地方移去就可以了
4.在makeimg阶段产生
regcomp: Error: InitRegistry FAILED on or near line 2160 of E:\WINCE600\OSDesigns\OSDesign2\RelDir\M
y2440A_ARMV4I_Debug\reginit.ini
将file/Intltrns 从其他地方拷贝这个文件夹到对应目录下。
解决方法:修改paltform.reg中相关的行。在这里是因为 “ "FriendlyName"=LOC_DISPLAYNAME_COM1”中未被定义,
5. 编译Pwrbutton(matrixkb.dll)驱动时候,出现
BUILD: [01:0000000055:ERRORE] matrixkb.obj : error LNK2019: unresolved external symbol keybd_event referenced in function SendKey
BUILD: [01:0000000056:ERRORE] E:\WINCE600\platform\My2440A\target\ARMV4I\debug\matrixkb.dll : fatal error LNK1120: 1 unresolved externals
添加模块 core os->CEBASE ->shell and interface ->shell ->graph shell->stardard shell
6.编译CS8900驱动的时候,找不系统库 ndis.lib
TARGETLIBS= \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\ndis.lib \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\ntcompat.lib \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\coredll.lib \
$(_PROJECTROOT)\cesysgen\oak\lib\$(_CPUINDPATH)\ceddk.lib \
U1073: don't know how to make
'E:\WINCE600\OSDesigns\OSDesign2\Wince600\My2440A_ARMV4I\cesysgen\sdk\lib\ARMV4I\debug\ndis.lib'
模块未加进去:
将core os->CEBASE ->shell and interface ->user interface ->network user interfacer 选上就可以解决问题了。
7.编译usb fuction驱动时候
BUILD: [01:0000001429:ERRORE] NMAKE : U1073: don't know how to make '
E:\WINCE600\OSDesigns\OSDesign2\Wince600\My2440A_ARMV4I\cesysgen\oak\lib\ARMV4I\debug\ufnmdd.lib'
BUILD: [01:0000001431:ERRORE] NMAKE.EXE TargetLibFiles -i -c BUILDMSG=Stop.
BUILDROOT=E:\WINCE600\PLATFORM\My2440A CLEANBUILD=1 LINKONLY=1 NOPASS0=1 failed - rc = 2
对应模块没有加进去:将 device drivers->usb function -> usb function client ->serial 这个选上就可以了
8.编译Battdrvr
BUILD: [01:0000000084:ERRORE] battdrvr_lib.lib(battdrvr.obj) : error LNK2019: unresolved external
symbol PowerPolicyNotify referenced in function BatteryThreadProc
添加模块 core os->CEBASE ->shell and interface ->shell ->graph shell->stardard shell
1.编译eboot连接时候找不到函数__security_cooks
在加入$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\gsnull.lib \后,该问题解决。
2 . 全局变量CEProcessorType不能访问,包含头文件"NKarm.h"后 找不到该头文件。
从init.c中去掉该变量
3. 找不到“OALKitlPowerOff referenced in function OEMPowerOff”和
error LNK2019: unresolved external symbol OALKitlStart referenced in function OEMInit
这些都是kitl部分的代码,将其从相关地方移去就可以了
4.在makeimg阶段产生
regcomp: Error: InitRegistry FAILED on or near line 2160 of E:\WINCE600\OSDesigns\OSDesign2\RelDir\M
y2440A_ARMV4I_Debug\reginit.ini
将file/Intltrns 从其他地方拷贝这个文件夹到对应目录下。
解决方法:修改paltform.reg中相关的行。在这里是因为 “ "FriendlyName"=LOC_DISPLAYNAME_COM1”中未被定义,
5. 编译Pwrbutton(matrixkb.dll)驱动时候,出现
BUILD: [01:0000000055:ERRORE] matrixkb.obj : error LNK2019: unresolved external symbol keybd_event referenced in function SendKey
BUILD: [01:0000000056:ERRORE] E:\WINCE600\platform\My2440A\target\ARMV4I\debug\matrixkb.dll : fatal error LNK1120: 1 unresolved externals
添加模块 core os->CEBASE ->shell and interface ->shell ->graph shell->stardard shell
6.编译CS8900驱动的时候,找不系统库 ndis.lib
TARGETLIBS= \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\ndis.lib \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\ntcompat.lib \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\coredll.lib \
$(_PROJECTROOT)\cesysgen\oak\lib\$(_CPUINDPATH)\ceddk.lib \
U1073: don't know how to make
'E:\WINCE600\OSDesigns\OSDesign2\Wince600\My2440A_ARMV4I\cesysgen\sdk\lib\ARMV4I\debug\ndis.lib'
模块未加进去:
将core os->CEBASE ->shell and interface ->user interface ->network user interfacer 选上就可以解决问题了。
7.编译usb fuction驱动时候
BUILD: [01:0000001429:ERRORE] NMAKE : U1073: don't know how to make '
E:\WINCE600\OSDesigns\OSDesign2\Wince600\My2440A_ARMV4I\cesysgen\oak\lib\ARMV4I\debug\ufnmdd.lib'
BUILD: [01:0000001431:ERRORE] NMAKE.EXE TargetLibFiles -i -c BUILDMSG=Stop.
BUILDROOT=E:\WINCE600\PLATFORM\My2440A CLEANBUILD=1 LINKONLY=1 NOPASS0=1 failed - rc = 2
对应模块没有加进去:将 device drivers->usb function -> usb function client ->serial 这个选上就可以了
8.编译Battdrvr
BUILD: [01:0000000084:ERRORE] battdrvr_lib.lib(battdrvr.obj) : error LNK2019: unresolved external
symbol PowerPolicyNotify referenced in function BatteryThreadProc
添加模块 core os->CEBASE ->shell and interface ->shell ->graph shell->stardard shell
#29
还有一个强人的移植笔记
一:OAL.H修改
1)在OAL.H中注释掉下面两个头文件
#include "oal_profiler.h"
#include "oal_nkxp.h"
2)在OAL.H中加入下面两个头文件
#include <nkexport.h>
#include "oemglobal.h"
二:watchdog.c 修改
注释掉下面的语句
extern void (* pfnOEMRefreshWatchDog) (void); // function pointer to refresh watchdog
extern DWORD dwOEMWatchDogPeriod; // watchdog period
extern DWORD dwNKWatchDogThreadPriority; // watchdog thread priority, default is 100, set by kernel. OEM can adjust as desired
三:init.C修改
注释掉下面的语句
extern DWORD CEProcessorType;
四:SMDK2440A\Src\Common\Smartmedia\Dll中的sources文件修改
在SOURCELIBS语句段中原有的两个库的基础上增加下面的库
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\fmdhooklib.lib \
五:显示驱动修改
修改内容较多,请把附件中的驱动复制过去就可以用了
本驱是是800×480的,如果你的屏参数不一样的话请自行修改
六:OAL-KERNEL修改
1:在\WINCE600\PLATFORM\SMDK2440A\Src目录下新建个Oal文件夹
2:将Src目录下的DIR文件中的Kernel语句改成Oal,使编译系统识别并编译Oal文件夹
3:将\WINCE600\PLATFORM\SMDK2440A\Src\Kernel目录下Oal文件夹复制到新建的Oal目录下,并更名为Oallib
4:将\WINCE600\PLATFORM\SMDK2440A\Src\Kernel目录下Kern文件夹复制到新建的Oal目录下,并更名为Oalexe
5:在Oal文件夹下新建一个dir文件
将下面语句加入dir文件中
DIRS=Oallib \
Oalexe \
6:Oalexe修改
1):在\WINCE600\PLATFORM\SMDK2440A\Src\Oal\Oalexe目录下的sources文件找到下面语句
SOURCES=\
kitl.c
修改为
NOLIBC=1
SOURCES=
2):打开\WINCE600\PLATFORM\SMDK2440A\Src\Oal\Oalexe目录下的sources文件
在TARGETLIBS= \语句段中去掉下面的库
$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\nk.lib \
并新增下面三个库
$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\nkstub.lib \
$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\nkldr.lib \
$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\oemmain.lib \
7:Oallib修改
打开\WINCE600\PLATFORM\SMDK2440A\Src\Oal\Oallib目录下的sources文件
找到下面几句,删掉
kitl.c \
kitlser.c \
kitlusbser.c \
8:先编译一下,可能会出现g_oalLogMask报错,找出并修改
1):debug.c文件修改
找到VOID OEMInitDebugSerial()函数中的下面两句
logMask = g_oalLogMask;
g_oalLogMask = 0;
将其修改为
logMask = dpCurSettings.ulZoneMask;
dpCurSettings.ulZoneMask = 0;
找到VOID OEMInitDebugSerial()函数中末尾的这句
g_oalLogMask = logMask;
将其修改为
dpCurSettings.ulZoneMask = logMask;
2):Oal_log.h文件修改
找到#define OALZONE(n) (g_oalLogMask&(1<<n))语句
将其修改为下面两句
extern DBGPARAM dpCurSettings;
#define OALZONE(n) (dpCurSettings.ulZoneMask&(1<<n))
找到extern UINT32 g_oalLogMask;将其注释掉
9:OALIoCtlVBridge错误的修改
1):找到Ioctl_tab.h中下面的语句,将其注释掉
{ IOCTL_VBRIDGE_802_3_MULTICAST_LIST, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_ADD_MAC, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_CURRENT_PACKET_FILTER, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_ETHERNET_MAC, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_RX_PACKET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_RX_PACKET_COMPLETE, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_TX_PACKET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_TX_PACKET_COMPLETE, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_SHARED_ETHERNET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD_RESET_BUFFER, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD_VB_INITIALIZED, 0, OALIoCtlVBridge },
2):找到Oal_Ioctl_tab.h中下面的语句,将其注释掉
{ IOCTL_VBRIDGE_802_3_MULTICAST_LIST, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_ADD_MAC, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_CURRENT_PACKET_FILTER, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_ETHERNET_MAC, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_RX_PACKET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_RX_PACKET_COMPLETE, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_TX_PACKET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_TX_PACKET_COMPLETE, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_SHARED_ETHERNET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD_RESET_BUFFER, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD_VB_INITIALIZED, 0, OALIoCtlVBridge },
七:sc2440pdd.cpp修改
找到下面语句将其注释掉,共有两处
SetProcPermissions(pTransfer->dwCallerPermissions);
八:sdiocontrollerbase.cpp修改
1):找到下面两句注释掉,他们是成对出现的,共有四处共八句
SD_SET_PROC_PERMISSIONS_FROM_REQUEST( pRequest ) {
} SD_RESTORE_PROC_PERMISSIONS();
九:Dma.h与S3c2440a_dmatransfer.h的修改
找到两个文件中的下面语句注释掉即可,每个文件中有一处
#define DMA_TRANSFER_IN_PROGRESS 0x00100000
一:OAL.H修改
1)在OAL.H中注释掉下面两个头文件
#include "oal_profiler.h"
#include "oal_nkxp.h"
2)在OAL.H中加入下面两个头文件
#include <nkexport.h>
#include "oemglobal.h"
二:watchdog.c 修改
注释掉下面的语句
extern void (* pfnOEMRefreshWatchDog) (void); // function pointer to refresh watchdog
extern DWORD dwOEMWatchDogPeriod; // watchdog period
extern DWORD dwNKWatchDogThreadPriority; // watchdog thread priority, default is 100, set by kernel. OEM can adjust as desired
三:init.C修改
注释掉下面的语句
extern DWORD CEProcessorType;
四:SMDK2440A\Src\Common\Smartmedia\Dll中的sources文件修改
在SOURCELIBS语句段中原有的两个库的基础上增加下面的库
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\fmdhooklib.lib \
五:显示驱动修改
修改内容较多,请把附件中的驱动复制过去就可以用了
本驱是是800×480的,如果你的屏参数不一样的话请自行修改
六:OAL-KERNEL修改
1:在\WINCE600\PLATFORM\SMDK2440A\Src目录下新建个Oal文件夹
2:将Src目录下的DIR文件中的Kernel语句改成Oal,使编译系统识别并编译Oal文件夹
3:将\WINCE600\PLATFORM\SMDK2440A\Src\Kernel目录下Oal文件夹复制到新建的Oal目录下,并更名为Oallib
4:将\WINCE600\PLATFORM\SMDK2440A\Src\Kernel目录下Kern文件夹复制到新建的Oal目录下,并更名为Oalexe
5:在Oal文件夹下新建一个dir文件
将下面语句加入dir文件中
DIRS=Oallib \
Oalexe \
6:Oalexe修改
1):在\WINCE600\PLATFORM\SMDK2440A\Src\Oal\Oalexe目录下的sources文件找到下面语句
SOURCES=\
kitl.c
修改为
NOLIBC=1
SOURCES=
2):打开\WINCE600\PLATFORM\SMDK2440A\Src\Oal\Oalexe目录下的sources文件
在TARGETLIBS= \语句段中去掉下面的库
$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\nk.lib \
并新增下面三个库
$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\nkstub.lib \
$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\nkldr.lib \
$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\oemmain.lib \
7:Oallib修改
打开\WINCE600\PLATFORM\SMDK2440A\Src\Oal\Oallib目录下的sources文件
找到下面几句,删掉
kitl.c \
kitlser.c \
kitlusbser.c \
8:先编译一下,可能会出现g_oalLogMask报错,找出并修改
1):debug.c文件修改
找到VOID OEMInitDebugSerial()函数中的下面两句
logMask = g_oalLogMask;
g_oalLogMask = 0;
将其修改为
logMask = dpCurSettings.ulZoneMask;
dpCurSettings.ulZoneMask = 0;
找到VOID OEMInitDebugSerial()函数中末尾的这句
g_oalLogMask = logMask;
将其修改为
dpCurSettings.ulZoneMask = logMask;
2):Oal_log.h文件修改
找到#define OALZONE(n) (g_oalLogMask&(1<<n))语句
将其修改为下面两句
extern DBGPARAM dpCurSettings;
#define OALZONE(n) (dpCurSettings.ulZoneMask&(1<<n))
找到extern UINT32 g_oalLogMask;将其注释掉
9:OALIoCtlVBridge错误的修改
1):找到Ioctl_tab.h中下面的语句,将其注释掉
{ IOCTL_VBRIDGE_802_3_MULTICAST_LIST, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_ADD_MAC, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_CURRENT_PACKET_FILTER, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_ETHERNET_MAC, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_RX_PACKET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_RX_PACKET_COMPLETE, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_TX_PACKET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_TX_PACKET_COMPLETE, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_SHARED_ETHERNET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD_RESET_BUFFER, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD_VB_INITIALIZED, 0, OALIoCtlVBridge },
2):找到Oal_Ioctl_tab.h中下面的语句,将其注释掉
{ IOCTL_VBRIDGE_802_3_MULTICAST_LIST, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_ADD_MAC, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_CURRENT_PACKET_FILTER, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_ETHERNET_MAC, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_RX_PACKET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_RX_PACKET_COMPLETE, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_TX_PACKET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_TX_PACKET_COMPLETE, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_SHARED_ETHERNET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD_RESET_BUFFER, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD_VB_INITIALIZED, 0, OALIoCtlVBridge },
七:sc2440pdd.cpp修改
找到下面语句将其注释掉,共有两处
SetProcPermissions(pTransfer->dwCallerPermissions);
八:sdiocontrollerbase.cpp修改
1):找到下面两句注释掉,他们是成对出现的,共有四处共八句
SD_SET_PROC_PERMISSIONS_FROM_REQUEST( pRequest ) {
} SD_RESTORE_PROC_PERMISSIONS();
九:Dma.h与S3c2440a_dmatransfer.h的修改
找到两个文件中的下面语句注释掉即可,每个文件中有一处
#define DMA_TRANSFER_IN_PROGRESS 0x00100000
#30
这是按微软的帮助来的
#31
是的,我移植也是看了他的帮助才开始做的..
现在我编译eboot
只能生成eboot.bin,无法生成eboot.nb0
编译消息
Writing E:\WINCE600\platform\My2440A\target\ARMV4I\debug\EBOOT.bin
Table of contents 8c07df38 00000020 ( 32)
Writing ROM signature and TOC pointer at 8c038040
Kernel data copy section 8c07df58 00000010 ( 16)
ROM Header 8c07dee4 00000054 ( 84)
First DLL Address: 4001c001
Last DLL Address: 4001c001
Physical Start Address: 8c038000
Physical End Address: 8c07e7b0
Start RAM: 8c026000
Start of free RAM: 8c02d000
End of RAM: 8c02c000
Number of Modules: 1
Number of Copy Sections: 1
Copy Section Offset: 8c07df58
FileSys 4K Chunks/Mbyte: 128 <2Mbyte 128 2-4Mbyte 0 4-6Mbyte 0 >6Mbyte
CPU Type: 01c2h
Miscellaneous Flags: 0002h
Total ROM size: 000467b0 ( 288688)
Error: Ram free start is after ram end.Fatal error hit, exiti
boot.bib 文件
MEMORY
; Name Start Size Type
; ------- -------- -------- ----
ARGS 8c020800 00000800 RESERVED
BINFS 8c021000 00005000 RESERVED
RAM 8c026000 00006000 RAM
STACK 8c02c000 00004000 RESERVED
EBOOT 8c038000 00080000 RAMIMAGE
; Area used to cache nk.bin while programming flash
FLSCACHE 8c200000 01400000 RESERVED
DISPLAY 8c100000 00100000 RESERVED
CONFIG
COMPRESSION=OFF
PROFILE=OFF
KERNELFIXUPS=ON
; ROMOFFSET=25FC8000
SRE=ON
ROMSTART=8c038000
ROMWIDTH=32
ROMSIZE=80000
MODULES
; Name Path Memory Type
; -------------- ---------------------------------------------- -----------
nk.exe $(_TARGETPLATROOT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot.exe EBOOT
现在我编译eboot
只能生成eboot.bin,无法生成eboot.nb0
编译消息
Writing E:\WINCE600\platform\My2440A\target\ARMV4I\debug\EBOOT.bin
Table of contents 8c07df38 00000020 ( 32)
Writing ROM signature and TOC pointer at 8c038040
Kernel data copy section 8c07df58 00000010 ( 16)
ROM Header 8c07dee4 00000054 ( 84)
First DLL Address: 4001c001
Last DLL Address: 4001c001
Physical Start Address: 8c038000
Physical End Address: 8c07e7b0
Start RAM: 8c026000
Start of free RAM: 8c02d000
End of RAM: 8c02c000
Number of Modules: 1
Number of Copy Sections: 1
Copy Section Offset: 8c07df58
FileSys 4K Chunks/Mbyte: 128 <2Mbyte 128 2-4Mbyte 0 4-6Mbyte 0 >6Mbyte
CPU Type: 01c2h
Miscellaneous Flags: 0002h
Total ROM size: 000467b0 ( 288688)
Error: Ram free start is after ram end.Fatal error hit, exiti
boot.bib 文件
MEMORY
; Name Start Size Type
; ------- -------- -------- ----
ARGS 8c020800 00000800 RESERVED
BINFS 8c021000 00005000 RESERVED
RAM 8c026000 00006000 RAM
STACK 8c02c000 00004000 RESERVED
EBOOT 8c038000 00080000 RAMIMAGE
; Area used to cache nk.bin while programming flash
FLSCACHE 8c200000 01400000 RESERVED
DISPLAY 8c100000 00100000 RESERVED
CONFIG
COMPRESSION=OFF
PROFILE=OFF
KERNELFIXUPS=ON
; ROMOFFSET=25FC8000
SRE=ON
ROMSTART=8c038000
ROMWIDTH=32
ROMSIZE=80000
MODULES
; Name Path Memory Type
; -------------- ---------------------------------------------- -----------
nk.exe $(_TARGETPLATROOT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot.exe EBOOT
#32
同样差不多的组件情况下 貌似 WinCE6.0 比 WinCE 5.0 的内核大了很多
#33
不好意思,上周有点忙,没时间上网.现在揭贴.
原谅下啊
原谅下啊
#34
哦搞定了?
#35
LZ好啊,我刚开始做BSP 5.0-6.0 移植,请问有什么经验吗?交流下:QQ527756039
Email:chenchu12345@126.com,谢谢谢谢!!
Email:chenchu12345@126.com,谢谢谢谢!!
#36
#37
顶 正在进行中
纯学习性质。。。
纯学习性质。。。
#1
怎么没人呢..
呵呵 不过问题解决了
有几个模块没加进去...
哎 我的一百分啊...
就这样没了
呵呵 不过问题解决了
有几个模块没加进去...
哎 我的一百分啊...
就这样没了
#2
up一下
#3
又有新问题,
"FriendlyName"=LOC_USBFN_SERIAL_NAME
中的LOC_USBFN_SERIAL_NAME未定义
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Serial_Class]
"FriendlyName"=LOC_USBFN_SERIAL_NAME
"idVendor"=dword:0547
"Manufacturer"=LOC_USBFN_SERIAL_MANUFACTURER
"idProduct"=dword:2720
"Product"=LOC_USBFN_SERIAL_PRODUCT
"Index"=dword:5
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial]
"FriendlyName"=LOC_DISPLAYNAME_COM1
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\IRDA2440]
"FriendlyName"=LOC_DISPLAYNAME_RAWIR
在ce6.0上好象找不到FriendlyName后面这些标号,结果编译最后阶段,合成reg文件的时候出错了
这些标号在什么地方定义的?
"FriendlyName"=LOC_USBFN_SERIAL_NAME
中的LOC_USBFN_SERIAL_NAME未定义
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Serial_Class]
"FriendlyName"=LOC_USBFN_SERIAL_NAME
"idVendor"=dword:0547
"Manufacturer"=LOC_USBFN_SERIAL_MANUFACTURER
"idProduct"=dword:2720
"Product"=LOC_USBFN_SERIAL_PRODUCT
"Index"=dword:5
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial]
"FriendlyName"=LOC_DISPLAYNAME_COM1
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\IRDA2440]
"FriendlyName"=LOC_DISPLAYNAME_RAWIR
在ce6.0上好象找不到FriendlyName后面这些标号,结果编译最后阶段,合成reg文件的时候出错了
这些标号在什么地方定义的?
#4
那些不过是些宏定义罢了,你搜以前的BSP,肯定能找到。
#5
是宏定义,但是好象不在bsp中定义,
我完全用的以前的bsp,里边的reg文件没有修改过.以前在windows ce 5.0下能编译通过.现在不行.
我想它是不是在5.0中在common.reg或者其他什么地方定义过?
那为什么在6.0 中就没有了呢?
我完全用的以前的bsp,里边的reg文件没有修改过.以前在windows ce 5.0下能编译通过.现在不行.
我想它是不是在5.0中在common.reg或者其他什么地方定义过?
那为什么在6.0 中就没有了呢?
#6
files\Intltrns 下有一堆像 040a, 040c.. 等的 subfolder, 裡面的 platform.str 中有.
做不同語言用的.
Paul, Chao @ Techware
做不同語言用的.
Paul, Chao @ Techware
#7
我用关键字搜素了那些文件夹和底下的文件.没有找到有关这几个的定义.
如果自己添加的话,如何将他们导到我的平台里边去?
你说的不同语言是什么意思?是指他们的会经过一次转换后才会转变成reg文件中中的那些宏?
如果自己添加的话,如何将他们导到我的平台里边去?
你说的不同语言是什么意思?是指他们的会经过一次转换后才会转变成reg文件中中的那些宏?
#8
也许改名字了。
楼主能够启动了吗?如果能够启动暂时不管那么多先。
还有wince 6.0 那个自带的模拟器是以2410 为代表的,可以拿来比较一下。
楼主能够启动了吗?如果能够启动暂时不管那么多先。
还有wince 6.0 那个自带的模拟器是以2410 为代表的,可以拿来比较一下。
#9
汗 编译还没通过呢.遇到这个问题..
启动先不管,既然有问题就先弄明白,反正咱有时间
启动先不管,既然有问题就先弄明白,反正咱有时间
#10
我刚才把那些文件打开看了,是有那些字符串的定义,不过好奇怪,就是搜素不出来.
这个先不管,
现在我想弄清楚的是,他们是怎么导入系统的呢?我看了几个文件,他们的内容都一样,pb到底怎么选择这些文件的?如果需要自己添加的话,需要做些什么工作?
#11
不同的數值代表不同的 locale, lz 選不同的 locale 的時候, 它會去相對應的 subfolder 做 string replace.
Paul, Chao @ Techware
Paul, Chao @ Techware
#12
流驱动可有可无的,
如果移植就搞定OAL以——》文件系统——》本机驱动——》确定能启动之后最后才是流驱动。
想一炮搞定很少有这么顺利的。
#13
看样子lz把最关键的OAL部分搞定了啊,传授一下经验啊,有联系方式没有
#14
如这哥们所讲,既然仅仅是用来指向某一个folder的宏定义,那楼主直接用一个存在的相关folder来进行替代不就可以了么?先把系统搞起来再说
#15
當年教程式語言的老師說了一句非常雋永的話, 如今還是老賊的座右銘
COMPILER 通過, 才是痛苦的開始
哈, 共勉之吧, 加油
Paul, Chao @ Techware
COMPILER 通過, 才是痛苦的開始
哈, 共勉之吧, 加油
Paul, Chao @ Techware
#16
有他们的对应关系吗?我用的是s3c2440,应该对应那个文件夹?
我在帮助里边没找到这个东东。。
有相关资料吗?
#17
那部分和kitl编译都没有问题了。。
不知道能不能运行。
我这次主要是要想弄清楚ce5.0和ce6.0到底有什么区别。所以先都让他编译通过再说,不着急调试。。
问题越多越好。。
#18
我就是不知道哪个数字的folder对应着我的bsp啊!
#19
好,顶一下,不知道楼主用到是三星的那款芯片,2440么?
以后也有打算把WinCE5.0移植到CE6.0上
以后也有打算把WinCE5.0移植到CE6.0上
#20
是的,有没有人知道 为什么只生成nk.bin,而不生成nk.nb0?
#21
nk.nb0 没有的话是 config.bib 里面对nb0 的配置不太正确
#22
兄弟能说具体点吗?
#23
各位大侠,还有个问题
LCD驱动移植
BUILD: [Thrd:Sequence:Type ] Message
BUILD: [01:0000000042:ERRORE] e:\wince600\platform\my2440a\src\drivers\display\precomp.h(30) :
fatal error C1083: Cannot open include file: 'ddpguids.h': No such file or directory
BUILD: [01:0000000046:ERRORE] e:\wince600\platform\my2440a\src\drivers\display\precomp.h(30) :
我没有找到相关资料,请各位帮个忙 ,给点建议.
等我把它弄完,一定会把所有问题和解决方法都公布的...
各位给点鼓励啊..
gooogleman 兄弟.. 你好象移植过,应该是过来人.. 指点一下.
#24
楼上错误很明显啊,是ddpguids.h文件的路径错误啊,把以前的文件找过来,放到那个目录下
#25
ddpguids.h
这个文件是做什么的?还有这个应该是pb5.0自带的文件,我没有装pb5.0.
这个文件是做什么的?还有这个应该是pb5.0自带的文件,我没有装pb5.0.
#26
我没有移植过,去年想移植,但是公司不同意。后来我自己看了不少文章。
我觉得搞定bootloader+OAL确定能够加载文件系统等之后再弄驱动才是合适的。否则你不成功的积累越来越多,情况就会越来越糟糕。
我觉得搞定bootloader+OAL确定能够加载文件系统等之后再弄驱动才是合适的。否则你不成功的积累越来越多,情况就会越来越糟糕。
#27
loader 我打算用以前的的.
oalexe编译没有问题,其实oal也没什么东西.
其他的可以跳过,但是display,这个一定要先弄起来.
回复的人好少..
应该有很多人移植过啊.
oalexe编译没有问题,其实oal也没什么东西.
其他的可以跳过,但是display,这个一定要先弄起来.
回复的人好少..
应该有很多人移植过啊.
#28
先公布这段时间遇到的问题和解决方法:
1.编译eboot连接时候找不到函数__security_cooks
在加入$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\gsnull.lib \后,该问题解决。
2 . 全局变量CEProcessorType不能访问,包含头文件"NKarm.h"后 找不到该头文件。
从init.c中去掉该变量
3. 找不到“OALKitlPowerOff referenced in function OEMPowerOff”和
error LNK2019: unresolved external symbol OALKitlStart referenced in function OEMInit
这些都是kitl部分的代码,将其从相关地方移去就可以了
4.在makeimg阶段产生
regcomp: Error: InitRegistry FAILED on or near line 2160 of E:\WINCE600\OSDesigns\OSDesign2\RelDir\M
y2440A_ARMV4I_Debug\reginit.ini
将file/Intltrns 从其他地方拷贝这个文件夹到对应目录下。
解决方法:修改paltform.reg中相关的行。在这里是因为 “ "FriendlyName"=LOC_DISPLAYNAME_COM1”中未被定义,
5. 编译Pwrbutton(matrixkb.dll)驱动时候,出现
BUILD: [01:0000000055:ERRORE] matrixkb.obj : error LNK2019: unresolved external symbol keybd_event referenced in function SendKey
BUILD: [01:0000000056:ERRORE] E:\WINCE600\platform\My2440A\target\ARMV4I\debug\matrixkb.dll : fatal error LNK1120: 1 unresolved externals
添加模块 core os->CEBASE ->shell and interface ->shell ->graph shell->stardard shell
6.编译CS8900驱动的时候,找不系统库 ndis.lib
TARGETLIBS= \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\ndis.lib \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\ntcompat.lib \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\coredll.lib \
$(_PROJECTROOT)\cesysgen\oak\lib\$(_CPUINDPATH)\ceddk.lib \
U1073: don't know how to make
'E:\WINCE600\OSDesigns\OSDesign2\Wince600\My2440A_ARMV4I\cesysgen\sdk\lib\ARMV4I\debug\ndis.lib'
模块未加进去:
将core os->CEBASE ->shell and interface ->user interface ->network user interfacer 选上就可以解决问题了。
7.编译usb fuction驱动时候
BUILD: [01:0000001429:ERRORE] NMAKE : U1073: don't know how to make '
E:\WINCE600\OSDesigns\OSDesign2\Wince600\My2440A_ARMV4I\cesysgen\oak\lib\ARMV4I\debug\ufnmdd.lib'
BUILD: [01:0000001431:ERRORE] NMAKE.EXE TargetLibFiles -i -c BUILDMSG=Stop.
BUILDROOT=E:\WINCE600\PLATFORM\My2440A CLEANBUILD=1 LINKONLY=1 NOPASS0=1 failed - rc = 2
对应模块没有加进去:将 device drivers->usb function -> usb function client ->serial 这个选上就可以了
8.编译Battdrvr
BUILD: [01:0000000084:ERRORE] battdrvr_lib.lib(battdrvr.obj) : error LNK2019: unresolved external
symbol PowerPolicyNotify referenced in function BatteryThreadProc
添加模块 core os->CEBASE ->shell and interface ->shell ->graph shell->stardard shell
1.编译eboot连接时候找不到函数__security_cooks
在加入$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\gsnull.lib \后,该问题解决。
2 . 全局变量CEProcessorType不能访问,包含头文件"NKarm.h"后 找不到该头文件。
从init.c中去掉该变量
3. 找不到“OALKitlPowerOff referenced in function OEMPowerOff”和
error LNK2019: unresolved external symbol OALKitlStart referenced in function OEMInit
这些都是kitl部分的代码,将其从相关地方移去就可以了
4.在makeimg阶段产生
regcomp: Error: InitRegistry FAILED on or near line 2160 of E:\WINCE600\OSDesigns\OSDesign2\RelDir\M
y2440A_ARMV4I_Debug\reginit.ini
将file/Intltrns 从其他地方拷贝这个文件夹到对应目录下。
解决方法:修改paltform.reg中相关的行。在这里是因为 “ "FriendlyName"=LOC_DISPLAYNAME_COM1”中未被定义,
5. 编译Pwrbutton(matrixkb.dll)驱动时候,出现
BUILD: [01:0000000055:ERRORE] matrixkb.obj : error LNK2019: unresolved external symbol keybd_event referenced in function SendKey
BUILD: [01:0000000056:ERRORE] E:\WINCE600\platform\My2440A\target\ARMV4I\debug\matrixkb.dll : fatal error LNK1120: 1 unresolved externals
添加模块 core os->CEBASE ->shell and interface ->shell ->graph shell->stardard shell
6.编译CS8900驱动的时候,找不系统库 ndis.lib
TARGETLIBS= \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\ndis.lib \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\ntcompat.lib \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\coredll.lib \
$(_PROJECTROOT)\cesysgen\oak\lib\$(_CPUINDPATH)\ceddk.lib \
U1073: don't know how to make
'E:\WINCE600\OSDesigns\OSDesign2\Wince600\My2440A_ARMV4I\cesysgen\sdk\lib\ARMV4I\debug\ndis.lib'
模块未加进去:
将core os->CEBASE ->shell and interface ->user interface ->network user interfacer 选上就可以解决问题了。
7.编译usb fuction驱动时候
BUILD: [01:0000001429:ERRORE] NMAKE : U1073: don't know how to make '
E:\WINCE600\OSDesigns\OSDesign2\Wince600\My2440A_ARMV4I\cesysgen\oak\lib\ARMV4I\debug\ufnmdd.lib'
BUILD: [01:0000001431:ERRORE] NMAKE.EXE TargetLibFiles -i -c BUILDMSG=Stop.
BUILDROOT=E:\WINCE600\PLATFORM\My2440A CLEANBUILD=1 LINKONLY=1 NOPASS0=1 failed - rc = 2
对应模块没有加进去:将 device drivers->usb function -> usb function client ->serial 这个选上就可以了
8.编译Battdrvr
BUILD: [01:0000000084:ERRORE] battdrvr_lib.lib(battdrvr.obj) : error LNK2019: unresolved external
symbol PowerPolicyNotify referenced in function BatteryThreadProc
添加模块 core os->CEBASE ->shell and interface ->shell ->graph shell->stardard shell
#29
还有一个强人的移植笔记
一:OAL.H修改
1)在OAL.H中注释掉下面两个头文件
#include "oal_profiler.h"
#include "oal_nkxp.h"
2)在OAL.H中加入下面两个头文件
#include <nkexport.h>
#include "oemglobal.h"
二:watchdog.c 修改
注释掉下面的语句
extern void (* pfnOEMRefreshWatchDog) (void); // function pointer to refresh watchdog
extern DWORD dwOEMWatchDogPeriod; // watchdog period
extern DWORD dwNKWatchDogThreadPriority; // watchdog thread priority, default is 100, set by kernel. OEM can adjust as desired
三:init.C修改
注释掉下面的语句
extern DWORD CEProcessorType;
四:SMDK2440A\Src\Common\Smartmedia\Dll中的sources文件修改
在SOURCELIBS语句段中原有的两个库的基础上增加下面的库
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\fmdhooklib.lib \
五:显示驱动修改
修改内容较多,请把附件中的驱动复制过去就可以用了
本驱是是800×480的,如果你的屏参数不一样的话请自行修改
六:OAL-KERNEL修改
1:在\WINCE600\PLATFORM\SMDK2440A\Src目录下新建个Oal文件夹
2:将Src目录下的DIR文件中的Kernel语句改成Oal,使编译系统识别并编译Oal文件夹
3:将\WINCE600\PLATFORM\SMDK2440A\Src\Kernel目录下Oal文件夹复制到新建的Oal目录下,并更名为Oallib
4:将\WINCE600\PLATFORM\SMDK2440A\Src\Kernel目录下Kern文件夹复制到新建的Oal目录下,并更名为Oalexe
5:在Oal文件夹下新建一个dir文件
将下面语句加入dir文件中
DIRS=Oallib \
Oalexe \
6:Oalexe修改
1):在\WINCE600\PLATFORM\SMDK2440A\Src\Oal\Oalexe目录下的sources文件找到下面语句
SOURCES=\
kitl.c
修改为
NOLIBC=1
SOURCES=
2):打开\WINCE600\PLATFORM\SMDK2440A\Src\Oal\Oalexe目录下的sources文件
在TARGETLIBS= \语句段中去掉下面的库
$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\nk.lib \
并新增下面三个库
$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\nkstub.lib \
$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\nkldr.lib \
$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\oemmain.lib \
7:Oallib修改
打开\WINCE600\PLATFORM\SMDK2440A\Src\Oal\Oallib目录下的sources文件
找到下面几句,删掉
kitl.c \
kitlser.c \
kitlusbser.c \
8:先编译一下,可能会出现g_oalLogMask报错,找出并修改
1):debug.c文件修改
找到VOID OEMInitDebugSerial()函数中的下面两句
logMask = g_oalLogMask;
g_oalLogMask = 0;
将其修改为
logMask = dpCurSettings.ulZoneMask;
dpCurSettings.ulZoneMask = 0;
找到VOID OEMInitDebugSerial()函数中末尾的这句
g_oalLogMask = logMask;
将其修改为
dpCurSettings.ulZoneMask = logMask;
2):Oal_log.h文件修改
找到#define OALZONE(n) (g_oalLogMask&(1<<n))语句
将其修改为下面两句
extern DBGPARAM dpCurSettings;
#define OALZONE(n) (dpCurSettings.ulZoneMask&(1<<n))
找到extern UINT32 g_oalLogMask;将其注释掉
9:OALIoCtlVBridge错误的修改
1):找到Ioctl_tab.h中下面的语句,将其注释掉
{ IOCTL_VBRIDGE_802_3_MULTICAST_LIST, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_ADD_MAC, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_CURRENT_PACKET_FILTER, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_ETHERNET_MAC, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_RX_PACKET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_RX_PACKET_COMPLETE, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_TX_PACKET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_TX_PACKET_COMPLETE, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_SHARED_ETHERNET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD_RESET_BUFFER, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD_VB_INITIALIZED, 0, OALIoCtlVBridge },
2):找到Oal_Ioctl_tab.h中下面的语句,将其注释掉
{ IOCTL_VBRIDGE_802_3_MULTICAST_LIST, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_ADD_MAC, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_CURRENT_PACKET_FILTER, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_ETHERNET_MAC, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_RX_PACKET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_RX_PACKET_COMPLETE, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_TX_PACKET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_TX_PACKET_COMPLETE, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_SHARED_ETHERNET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD_RESET_BUFFER, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD_VB_INITIALIZED, 0, OALIoCtlVBridge },
七:sc2440pdd.cpp修改
找到下面语句将其注释掉,共有两处
SetProcPermissions(pTransfer->dwCallerPermissions);
八:sdiocontrollerbase.cpp修改
1):找到下面两句注释掉,他们是成对出现的,共有四处共八句
SD_SET_PROC_PERMISSIONS_FROM_REQUEST( pRequest ) {
} SD_RESTORE_PROC_PERMISSIONS();
九:Dma.h与S3c2440a_dmatransfer.h的修改
找到两个文件中的下面语句注释掉即可,每个文件中有一处
#define DMA_TRANSFER_IN_PROGRESS 0x00100000
一:OAL.H修改
1)在OAL.H中注释掉下面两个头文件
#include "oal_profiler.h"
#include "oal_nkxp.h"
2)在OAL.H中加入下面两个头文件
#include <nkexport.h>
#include "oemglobal.h"
二:watchdog.c 修改
注释掉下面的语句
extern void (* pfnOEMRefreshWatchDog) (void); // function pointer to refresh watchdog
extern DWORD dwOEMWatchDogPeriod; // watchdog period
extern DWORD dwNKWatchDogThreadPriority; // watchdog thread priority, default is 100, set by kernel. OEM can adjust as desired
三:init.C修改
注释掉下面的语句
extern DWORD CEProcessorType;
四:SMDK2440A\Src\Common\Smartmedia\Dll中的sources文件修改
在SOURCELIBS语句段中原有的两个库的基础上增加下面的库
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\fmdhooklib.lib \
五:显示驱动修改
修改内容较多,请把附件中的驱动复制过去就可以用了
本驱是是800×480的,如果你的屏参数不一样的话请自行修改
六:OAL-KERNEL修改
1:在\WINCE600\PLATFORM\SMDK2440A\Src目录下新建个Oal文件夹
2:将Src目录下的DIR文件中的Kernel语句改成Oal,使编译系统识别并编译Oal文件夹
3:将\WINCE600\PLATFORM\SMDK2440A\Src\Kernel目录下Oal文件夹复制到新建的Oal目录下,并更名为Oallib
4:将\WINCE600\PLATFORM\SMDK2440A\Src\Kernel目录下Kern文件夹复制到新建的Oal目录下,并更名为Oalexe
5:在Oal文件夹下新建一个dir文件
将下面语句加入dir文件中
DIRS=Oallib \
Oalexe \
6:Oalexe修改
1):在\WINCE600\PLATFORM\SMDK2440A\Src\Oal\Oalexe目录下的sources文件找到下面语句
SOURCES=\
kitl.c
修改为
NOLIBC=1
SOURCES=
2):打开\WINCE600\PLATFORM\SMDK2440A\Src\Oal\Oalexe目录下的sources文件
在TARGETLIBS= \语句段中去掉下面的库
$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\nk.lib \
并新增下面三个库
$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\nkstub.lib \
$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\nkldr.lib \
$(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\oemmain.lib \
7:Oallib修改
打开\WINCE600\PLATFORM\SMDK2440A\Src\Oal\Oallib目录下的sources文件
找到下面几句,删掉
kitl.c \
kitlser.c \
kitlusbser.c \
8:先编译一下,可能会出现g_oalLogMask报错,找出并修改
1):debug.c文件修改
找到VOID OEMInitDebugSerial()函数中的下面两句
logMask = g_oalLogMask;
g_oalLogMask = 0;
将其修改为
logMask = dpCurSettings.ulZoneMask;
dpCurSettings.ulZoneMask = 0;
找到VOID OEMInitDebugSerial()函数中末尾的这句
g_oalLogMask = logMask;
将其修改为
dpCurSettings.ulZoneMask = logMask;
2):Oal_log.h文件修改
找到#define OALZONE(n) (g_oalLogMask&(1<<n))语句
将其修改为下面两句
extern DBGPARAM dpCurSettings;
#define OALZONE(n) (dpCurSettings.ulZoneMask&(1<<n))
找到extern UINT32 g_oalLogMask;将其注释掉
9:OALIoCtlVBridge错误的修改
1):找到Ioctl_tab.h中下面的语句,将其注释掉
{ IOCTL_VBRIDGE_802_3_MULTICAST_LIST, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_ADD_MAC, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_CURRENT_PACKET_FILTER, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_ETHERNET_MAC, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_RX_PACKET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_RX_PACKET_COMPLETE, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_TX_PACKET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_TX_PACKET_COMPLETE, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_SHARED_ETHERNET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD_RESET_BUFFER, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD_VB_INITIALIZED, 0, OALIoCtlVBridge },
2):找到Oal_Ioctl_tab.h中下面的语句,将其注释掉
{ IOCTL_VBRIDGE_802_3_MULTICAST_LIST, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_ADD_MAC, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_CURRENT_PACKET_FILTER, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_ETHERNET_MAC, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_RX_PACKET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_RX_PACKET_COMPLETE, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_TX_PACKET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_GET_TX_PACKET_COMPLETE, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_SHARED_ETHERNET, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD_RESET_BUFFER, 0, OALIoCtlVBridge },
{ IOCTL_VBRIDGE_WILD_CARD_VB_INITIALIZED, 0, OALIoCtlVBridge },
七:sc2440pdd.cpp修改
找到下面语句将其注释掉,共有两处
SetProcPermissions(pTransfer->dwCallerPermissions);
八:sdiocontrollerbase.cpp修改
1):找到下面两句注释掉,他们是成对出现的,共有四处共八句
SD_SET_PROC_PERMISSIONS_FROM_REQUEST( pRequest ) {
} SD_RESTORE_PROC_PERMISSIONS();
九:Dma.h与S3c2440a_dmatransfer.h的修改
找到两个文件中的下面语句注释掉即可,每个文件中有一处
#define DMA_TRANSFER_IN_PROGRESS 0x00100000
#30
这是按微软的帮助来的
#31
是的,我移植也是看了他的帮助才开始做的..
现在我编译eboot
只能生成eboot.bin,无法生成eboot.nb0
编译消息
Writing E:\WINCE600\platform\My2440A\target\ARMV4I\debug\EBOOT.bin
Table of contents 8c07df38 00000020 ( 32)
Writing ROM signature and TOC pointer at 8c038040
Kernel data copy section 8c07df58 00000010 ( 16)
ROM Header 8c07dee4 00000054 ( 84)
First DLL Address: 4001c001
Last DLL Address: 4001c001
Physical Start Address: 8c038000
Physical End Address: 8c07e7b0
Start RAM: 8c026000
Start of free RAM: 8c02d000
End of RAM: 8c02c000
Number of Modules: 1
Number of Copy Sections: 1
Copy Section Offset: 8c07df58
FileSys 4K Chunks/Mbyte: 128 <2Mbyte 128 2-4Mbyte 0 4-6Mbyte 0 >6Mbyte
CPU Type: 01c2h
Miscellaneous Flags: 0002h
Total ROM size: 000467b0 ( 288688)
Error: Ram free start is after ram end.Fatal error hit, exiti
boot.bib 文件
MEMORY
; Name Start Size Type
; ------- -------- -------- ----
ARGS 8c020800 00000800 RESERVED
BINFS 8c021000 00005000 RESERVED
RAM 8c026000 00006000 RAM
STACK 8c02c000 00004000 RESERVED
EBOOT 8c038000 00080000 RAMIMAGE
; Area used to cache nk.bin while programming flash
FLSCACHE 8c200000 01400000 RESERVED
DISPLAY 8c100000 00100000 RESERVED
CONFIG
COMPRESSION=OFF
PROFILE=OFF
KERNELFIXUPS=ON
; ROMOFFSET=25FC8000
SRE=ON
ROMSTART=8c038000
ROMWIDTH=32
ROMSIZE=80000
MODULES
; Name Path Memory Type
; -------------- ---------------------------------------------- -----------
nk.exe $(_TARGETPLATROOT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot.exe EBOOT
现在我编译eboot
只能生成eboot.bin,无法生成eboot.nb0
编译消息
Writing E:\WINCE600\platform\My2440A\target\ARMV4I\debug\EBOOT.bin
Table of contents 8c07df38 00000020 ( 32)
Writing ROM signature and TOC pointer at 8c038040
Kernel data copy section 8c07df58 00000010 ( 16)
ROM Header 8c07dee4 00000054 ( 84)
First DLL Address: 4001c001
Last DLL Address: 4001c001
Physical Start Address: 8c038000
Physical End Address: 8c07e7b0
Start RAM: 8c026000
Start of free RAM: 8c02d000
End of RAM: 8c02c000
Number of Modules: 1
Number of Copy Sections: 1
Copy Section Offset: 8c07df58
FileSys 4K Chunks/Mbyte: 128 <2Mbyte 128 2-4Mbyte 0 4-6Mbyte 0 >6Mbyte
CPU Type: 01c2h
Miscellaneous Flags: 0002h
Total ROM size: 000467b0 ( 288688)
Error: Ram free start is after ram end.Fatal error hit, exiti
boot.bib 文件
MEMORY
; Name Start Size Type
; ------- -------- -------- ----
ARGS 8c020800 00000800 RESERVED
BINFS 8c021000 00005000 RESERVED
RAM 8c026000 00006000 RAM
STACK 8c02c000 00004000 RESERVED
EBOOT 8c038000 00080000 RAMIMAGE
; Area used to cache nk.bin while programming flash
FLSCACHE 8c200000 01400000 RESERVED
DISPLAY 8c100000 00100000 RESERVED
CONFIG
COMPRESSION=OFF
PROFILE=OFF
KERNELFIXUPS=ON
; ROMOFFSET=25FC8000
SRE=ON
ROMSTART=8c038000
ROMWIDTH=32
ROMSIZE=80000
MODULES
; Name Path Memory Type
; -------------- ---------------------------------------------- -----------
nk.exe $(_TARGETPLATROOT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot.exe EBOOT
#32
同样差不多的组件情况下 貌似 WinCE6.0 比 WinCE 5.0 的内核大了很多
#33
不好意思,上周有点忙,没时间上网.现在揭贴.
原谅下啊
原谅下啊
#34
哦搞定了?
#35
LZ好啊,我刚开始做BSP 5.0-6.0 移植,请问有什么经验吗?交流下:QQ527756039
Email:chenchu12345@126.com,谢谢谢谢!!
Email:chenchu12345@126.com,谢谢谢谢!!
#36
#37
顶 正在进行中
纯学习性质。。。
纯学习性质。。。