您的位置:首页 > 其它

Window CE 6.0流驱动开发实验

2011-11-13 16:21 337 查看
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);

附:驱动源文件和应用程序(呵呵,好像不能上传附件)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: