SOURCES= GPIODriver.cpp 5)仍然在GPIOdriver文件夹内,建立GPIOdriver.cpp和GPIOdriver.h,这个大家找相关例子程序进行参考,我是参考的天嵌的例子,不过由与BSP不同,编译时总是出错,错误原因就是一些头文件不一样,有一点编程序经验应该都能查出来,这时最好的解决办法是把需要包含的内容直接写到GPIOdriver.h中去,这样就不会有编译错误了。至于如何编译,别急,请看后文!先这么做好,排查错误要慢慢来,先写好一个再说! 6)以上出现了多次GPIOdriver,这些地方要命名一致,在写def文件时,GIO只能是三个字母,这里注意! 7)以上工作完成后,GPIOdriver文件夹下的工作就完成了,然后打开E:WINCE500PLATFORMsmdk2440FILES目录,以记事本打开platform.reg文件,添加如下代码: [HKEY_LOCAL_MACHINEDriversBuiltInLEDdriver] "Prefix"="GIO" "Dll"="GPIOdriver.dll" 注意GIO 与GPIOdriver.dll要与前面的命名一致!另外要注意,.reg文件中有很多IF与END的配套使用,添加代码时不要放在这些中间了!至于IF与END的作用,初学者先跳过! 8)同样在FILES目录下打开platform.bib文件,加入以下代码: GPIOdriver.dll $(_FLATRELEASEDIR)GPIOdriver.dll NK SH 同样须注意命名与IF、END的配对! 9)以上工作完成后基本工作就差不多了,这里再说明一点,关于目录各个实验板厂商的BSP包各不相同,比如说天嵌的目录应为TQ2440SrcDrivers和TQ2440Files,这个要灵活应变! 10)打开实验板商家所带的PB平台文件.pbxml文件,在PB的左侧选择FileView选项(我这里默认就是这个选项),这里有树形结构的文件夹目录,打开PLATFORM,smdk2440,drivers,然后会看到你刚刚建立的GPIOdriver文件,右击,选择Build Current Project,就会对刚刚建立的流驱动进行编译,如果有错误会有提示,修改后再编译,直到没有错误为止! 11)点击菜单栏Build OS---Build and Sysgen,对.pbxml文件进行编译,这个大概要花一个多小时,这里你可以去看会儿电影,编译完成后会有一些警告,不用管,只要没错误就行! 编译前要选中Build OS菜单下的Clean Before Building,Copy files to Release Directory afer build,Make Run-time Image After Build,至于为什么我也不是很明白,都是一些过来人提供的经验,这个等熟练后慢慢琢磨吧。 还有一种说法是添加一个驱动不用选择Build and Sysgen,这样耗时太长!究竟是怎么弄来着,我忘了,慢慢研究吧。 12)编译成功后找开与.pbxml文件同目录的RelDirsmdk2440_ARMV4I_Release目录,很发现有好多文件,可以找到NK.nb0和NK.bin文件。找这个文件的快速方法是将这些文件以“详细信息”方式显示,然后单击一下“大小”,会将所有文件以大小排序,最大的那个就是了,这样找起来会快些。到这里驱动编写完毕,NK.nb0暂时留用! 13)打开VS2008,新建项目,可以参考天嵌手册的第六章内容,至于添加的代码可天嵌的例程序,这个很简单的。这种小问题自已琢磨! 14)将已生成的NK.nb0通过DNW发送到实验板上,然后运行刚刚写好的VS应用程序就OK了!到现在第一个流驱动编写完毕! 15)以上的代码中好多不用问为什么,初学者直接复制即可,始果想弄明天一些,可以在网上搜索“WinCE 注册表”、“WinCE 流驱动”等关键字。
五、补充说明
WinCE开发有三种:API方法、MFC方法和.NET方法,曾经看过西安电子出版社张勇编写的《Windows CE 应用程序设计》,这本书是基于API方法讲解的,里面以例程序为主体,通过对例程序的讲解,循序渐进,讲的还可以吧,比较适合我,但这本书的平台是基于智能手机或WM6仿真器的,与我们基于ARM9开发板还是有很大区别的,比如说使用WM6仿真器不用安装PB,不用安装ActiveSync,其实只需安装VS2008和WM6的SDK即可!因此受这本书的影响,当我基于ARM9入门WinCE时有许多事不能理解,突然感觉头绪太多太乱了,比如说突然要安装PB、编写流驱动等等。另外,基于API编程很麻烦,因为所有界面都是用代码实现的,当然这种方法的运行效率是最高的。.NET没用过,不知何物,但API与MFC之间就好比使用HTML语言开发网页和使用Dreamweaver编辑网页一样,前者也是全部用代码实现,而后者则直接绘制界面。