Window CE 6.0流驱动开发实验
作者:桂林电子科技大学student
我是直接从51到ARM,受51的影响,在wince6.0下怎么编写应用程序控制开发板的LED,查了好多资料,并结合开发板提供的LED测试程序和led驱动,编写了一个简单的LED驱动和应用程序来控制开发板的LED!
所需硬件:开发板ok6410,
所需软件:vs2005,wince6.0
实验步骤:
第一大步:
1. 在相应的文件夹先新建几个必须的文件,需要注意的是,下面几个文件均是文本文件,根据需要更改后缀,makefile和sources没有后缀。Obj和build.log是编译自动生成的文件,不用管它!
也可以复制D:\WINCE600\PLATFORM\SMDK6410\SRC\DRIVERS\LED下的文件自行修改
2. 下面分别打开相应文件,并填写内容:
1)SimpleDriver.def中填入:
;******************************************************************************
LIBRARY SimpleDriver
EXPORTS GPO_Init
GPO_Deinit
GPO_Open
GPO_Close
GPO_Read
GPO_Write
GPO_Seek
GPO_PowerDown
GPO_PowerUp
GPO_IOContro
2)makefile填入:
!INCLUDE $(_MAKEENVROOT)\makefile.def
3)sources填入:
!if 0
Copyright (c) Microsoft Corporation. All rights reserved.
!endif
!if 0
Use of this source code is subject to the terms of the Microsoft end-user
license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
If you did not accept the terms of the EULA, you are not authorized to use
this source code. For a copy of the EULA, please see the LICENSE.RTF on your
install media.
!endif
!if "$(BSP_NOLED)" == "1"
SKIPBUILD=1
!endif
RELEASETYPE=PLATFORM
PREPROCESSDEFFILE=1
TARGETNAME=SimpleDriver
SOURCES= \
SimpleDriver.cpp \
TARGETTYPE=DYNLINK
DLLENTRY=DllMain
CDEFINES=$(CDEFINES) -DLED_EXPORTS
TARGETLIBS= \
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\coredll.lib \
$(_WINCEROOT)\PLATFORM\SMDK6410\lib\ARMV4I\retail\DriverLib.lib \
INCLUDES= \
$(_WINCEROOT)\PUBLIC\COMMON\OAK\INC;$(_WINCEROOT)\PLATFORM\COMMON\SRC\INC;$(_WINCEROOT)\PUBLIC\COMMON\DDK\INC;$(_WINCEROOT)\PLATFORM\COMMON\SRC\SOC\S3C6410_SEC_V1\OAL\INC;$(_WINCEROOT)\PLATFORM\SMDK6410\SRC\INC \
其实需要我们改动就红色字体部分
即
TARGETNAME=SimpleDriver
SOURCES= \
SimpleDriver.cpp \
4)在.cpp文件中添加相应驱动代码了。即实现如下函数
GPO_Init
GPO_Deinit
GPO_Open
GPO_Close
GPO_Read
GPO_Write
GPO_Seek
GPO_PowerDown
GPO_PowerUp
GPO_IOContro
第二大步;
1)打开dirs(驱动文件夹里)文件,添加:
SimpleDriver\
1)否则会在驱动后面出现添加excluded form build,这个用于在动态加载该驱动是单独编译出”.dll”驱动文件。
2)修改platform.reg文件(注册表选项)作用是当wince启动时,就会自动加载该驱动了
打开该文件,添加如下内容:
;================= LED ==================
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SLED]
"Prefix"="GPO"
"Dll"="SimpleDriver.dll"
"Order"=dword:0
"Index"=dword:1
注:platform.reg文件在D:\WINCE600\PLATFORM\SMDK6410\FILES
3)修改platform.bib文件(把DLL文件集成到NK中)
在FILES之前加入一行,指明在生成wince 内核映像时自动将SimpleDriver.dll加入到内核映像中。
SimpleDriver.dll $(_FLATRELEASEDIR)\SimpleDriver.dll NK SHK
注:platform.bib文件在D:\WINCE600\PLATFORM\SMDK6410\FILES
4)只编译SimpleDriver即rebuild(前提时在以前已经clean sysgen)
5)
把在D:\WINCE600\OSDesigns\S3C6410_DEMO\S3C6410_DEMO\RelDir\Samsung_SMDK6410_Release 的目录(这个路径可以从编译信息中得到)可以找到所需的全部文件nb0,bin文件。将找到的文件用SD卡一键烧写到开发板上运行。
第三大步;应用程序的编写
这个没什么需要注意的地方,只是要注意是TEXT("GPO1:")即可。
hLed = CreateFile(TEXT("GPO1:"),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
附:驱动源文件和应用程序(呵呵,好像不能上传附件)