首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Window CE 6.0流驱动(LED)开发

Window CE 6.0流驱动(LED)开发

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\SED]
"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加入到内核映像中。
;------------- SED Driver -------------------------------------------------------------
IF BSP_NOSED !
  SimpleDriver.dll         $(_FLATRELEASEDIR)\SimpleDriver.dll        NK    SHK
ENDIF BSP_NOSED !
;---------------------------------------------------------------------------------------
注:platform.bib文件在D:\WINCE600\PLATFORM\SMDK6410\FILES
4)把D:\WINCE600\PLATFORM\SMDK6410\FILES刚才改好的platform.bib文件和platform.reg文件复制到
D:\WINCE600\OSDesigns\S3C6410_DEMO\S3C6410_DEMO\RelDir\Samsung_SMDK6410_Release目录。
注意这里的platform.bib和platform.reg通过修改后,未必在release中也更新了,所以一定要将改过的拷备到release中!
5)只编译SimpleDriver即rebuild(前提时在以前已经clean sysgen)

6)
把在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);
返回列表