WINCE4.2到5.0(4)

WINCE4.2到5.0(4)

今天4.2下的功能全部移植到5.0下,正常使用。看下键盘的移植:

将4.2的驱动拷贝到5.0的驱动目录下,更改为mykeybd目录名,有两个地方要更改:

  1. 中 断,在mykeybd/kbdcommon/s3c2410kbd.cpp文件的的Ps2Keybd::IsrThreadProc()函数替换成5.0 下的,这里主要是中断处理方法不同,在4.2下,由于是静态映射,在用InterruptInitialize()函数中绑定SYSINTR中断号时,是 直接指定的SYSINTR中断号。而在5.0下,需要使用KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR,…)将 CPU硬件中断号irq,动态申请一个SYSINTR进行绑定。硬件中断号irq我是从注册表读进来的,现在使用的是EINT17,这样下次硬件上更改中 断号时可以无须动内核,甚至只需要在CE起来后更改注册表后重启就行了。EINT17中断号定义在WINCE500/public/common/oak /csp/arm/samsung/s3c2410x/inc/s3c2410x_intr.h中,这里对应的是0x2D(十进制45).编译时会有些小 问题,将文件中跟v_pDriverGlobals变量相关的全部注释掉,应为这个变量好像也没被用上。
  2. 将4.2的wince420/public/common/oak/drivers/keybd/inputlangs/0409/il_0409.cpp复盖掉5.0的相应目录下的同名文件。因为我用的是自已定义按键部局的键盘。

贴个增加拼音输入法的截图
inputmethod

 

总结:4.2跟5.0差异不是很大,驱动方面要注意的地方包括:

  1. 目录下的sources,makefile文件(这个很重要)
  2. 中断相关
  3. 相关的注册表项
  4. 对整个PB目录结构的理解
  5. 合理使用工具:UltraEdit,SuperFinder
  6. 编译时能独立编译就不要在IDE下编译,这样方便,效率也高。
  7. platform.bib会跟据环境条件决定最终生成的NK.bin中包函哪些模块或程序,如果须要增加或删除可以在这个文件里更改。
  8. 多看、多想、多动手。

5.0的编译方法:

  1. Sysgen
    这个是菜单命令常用,在新建工程,或更改calatage时,用此命令。
  2. Build and Sysgen
    这个命令用在更改了共用代码时,如public目录下的文件,所有的BSP全部都重新编译,非常费时,十来分钟。
  3. Build and Sysgen Current BSP
    跟上一个命令类似,但是只编译当前使用的bsp,也比较费时。

注意:推荐将Clean Before Building、Copy Files to Release Directory After Build、Make Run-time Image After Build全打上勾。

现 在也能完全理解整个PB编译的工作流程,包括BootLoader、CE内核等。现在想起来这些工作也比较简单,不像刚接触时的一头雾水。驱动的编写一定 要看帮助文档,大多数都是要跟注册表配合使用。工作全部结束,其实还有很多要去研究,比如每种类型的驱动模型,自已对驱动这些目前也只是仅限于更改,对每 个驱动的模型不是很了解。但是这个工作量是巨大的,目前市面上也没有合适的书籍可供参考,只能慢慢啃它的全英文帮助。可能我会放下了这些了,因为公司恐怕 没有时间让我再去研究,要去写CE上的应用程序,无耐呀。

你可能感兴趣的:(WINCE开发)