WinCE流驱动入门

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 流驱动”等关键字。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值