⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2440_wince600.txt

📁 三星 s3c2410 s3c2440 s3c2412 s3c2416 s3c2413 s3c2443 s3c6400 s3c6410 的WINCE 5.0 到 wince 6.0 的BSP包代码移值。
💻 TXT
字号:
(结贴)看了很多人对WINCE60感兴趣,我开个贴来研究2440从WINCE5.0升到WINCE6.0(公开源码-在23楼)2443的BSP有6.0的,不过我们不用2443,现在想把2440从WINCE5.0升到WINCE6.0,有想做的朋友我们一起来吧
这两天有点时间,我总结一下。
我的平台条件:UBOOT+WINCE50BSP+800×480(7寸屏),因为用UBOOT,所以我没有升级BOOTLOADER
请大家参考一下本贴的一些问题,链接等等,基本就OK了,伧促记之,错误在所难免,望高手指正。
如果大家有什么高招,请一定分享,饮水思源,来了论坛总得有点贡献嘛!
总结:
一: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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -