1、烧写Bootloader(没烧过,只是这样认为要首先烧写BIOS)
2、烧写WinCE核
由于本人拿到实验板时以上两步已做好,即我拿到的实验板上就有烧好的WinCE5.0操作系统,因此以上两步是我猜测的!
3、打开VS,按照天嵌手册4.2节内容进行操作,如果成功运行,则OK!本步骤成功后则说明平台搭建成功,但HELLO程序不涉及实验板上的任何具体硬件,个人认为这只能算是入门了一半,还有一个坎没迈过去,那就是流驱动的开发,因为开发第一个流驱动的工作量并不比搭建平台省事,尤其是全靠自已琢磨,旁边无人指导、无人探讨!
4、运行成功HELLO程序后你可能会想,如果想点亮实验板上的LED灯该怎么用啊?基于VS开发环境也没法控制CPU的IO寄存器啊?这就需要流驱动了!
大部分实验板的手册都有详细的HELLO程序过程,但很少有手册详细讲解流驱动的开发过程,下面以我的经历详细的写一写:
流驱动的基本介绍可以看看天嵌手册的第五章,脑子里起码要先有个基本概念!
1)打开以下目录:E:/WINCE500/PLATFORM/smdk2440/DRIVERS,并在该目录下新建一个文件夹,命名为GPIOdriver,并用记事本打开该目录下的dirs文件,按其格式添加/GPIOdriver,dirs没有扩展名,打开看看就懂,没什么特别的!
注:其中E盘是我的安装目录,smdk2440是GEC2440实验板提供的BSP,按要求拷贝到了E:/WINCE500/PLATFORM/ 目录。
2)打开刚刚新建的GPIOdriver文件夹,新建txt记事本文件,命名为makefile,打开加入以下内容:!INCLUDE $(_MAKEENVROOT)/makefile.def,然后将.txt扩展名去掉,使其变为无扩展名的文件。
3)仍然在GPIOdriver文件夹内,仍然新建txt文件,命名为GPIOdriver,加入以下内容后将其扩展名更改为.def文件:
LIBRARY GPIOdriver
EXPORTS
GIO_Close
GIO_Deinit
GIO_Init
GIO_IOControl
GIO_Open
GIO_PowerDown
GIO_PowerUp
GIO_Read
GIO_Seek
GIO_Write
4)仍然在GPIOdriver文件夹内,仍然新建txt文件,命名为sources,加入以下内容后将其扩展名删除,使其成为无扩展名文件:
RELEASETYPE=PLATFORM
TARGETNAME=GPIODriver
TARGETTYPE=DYNLINK
DLLENTRY=DllEntry
TARGETLIBS= /
$(_COMMONSDKROOT)/lib/$(_CPUINDPATH)/coredll.lib /
MSC_WARNING_LEVEL = $(MSC_WARNING_LEVEL) /W3 /WX
INCLUDES= /
$(_TARGETPLATROOT)/src/inc; /
$(_COMMONOAKROOT)/inc; /
$(_PUBLICROOT)/common/oak/inc;$(_PUBLICROOT)/common/sdk/inc;$(_PUBLICROOT)/common/ddk/inc; /
../../inc
SOURCES= /
GPIODriver.cpp
5)仍然在GPIOdriver文件夹内,建立GPIOdriver.cpp和GPIOdriver.h,这个大家找相关例子程序进行参考,我是参考的天嵌的例子,不过由与BSP不同,编译时总是出错,错误原因就是一些头文件不一样,有一点编程序经验应该都能查出来,这时最好的解决办法是把需要包含的内容直接写到GPIOdriver.h中去,这样就不会有编译错误了。至于如何编译,别急,请看后文!先这么做好,排查错误要慢慢来,先写好一个再说!
6)以上出现了多次GPIOdriver,这些地方要命名一致,在写def文件时,GIO只能是三个字母,这里注意!
7)以上工作完成后,GPIOdriver文件夹下的工作就完成了,然后打开E:/WINCE500/PLATFORM/smdk2440/FILES目录,以记事本打开platform.reg文件,添加如下代码:
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/LEDdriver]
"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包各不相同,比如说天嵌的目录应为TQ2440/Src/Drivers和TQ2440/Files,这个要灵活应变!
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文件同目录的RelDir/smdk2440_ARMV4I_Release目录,很发现有好多文件,可以找到NK.nb0和NK.bin文件。找这个文件的快速方法是将这些文件以“详细信息”方式显示,然后单击一下“大小”,会将所有文件以大小排序,最大的那个就是了,这样找起来会快些。到这里驱动编写完毕,NK.nb0暂时留用!
13)打开VS2008,新建项目,可以参考天嵌手册的第六章内容,至于添加的代码可天嵌的例程序,这个很简单的。这种小问题自已琢磨!
14)将已生成的NK.nb0通过DNW发送到实验板上,然后运行刚刚写好的VS应用程序就OK了!到现在第一个流驱动编写完毕!
15)以上的代码中好多不用问为什么,初学者直接复制即可,始果想弄明天一些,可以在网上搜索“WinCE 注册表”、“WinCE 流驱动”等关键字。