WinCE5.0提供了一个标准的流驱动格式,大大方便了设备驱动程序的开发工作。但是传统的开发方式往往效率很低。方法如下:

1.在Platform Builder下建立一个流驱动的dll工程。

2.为流驱动增加注册表项。如:

[HKEY_LOCAL_MACHINE\Drivers\Builtin\IRControl] 
         "Prefix"="IRC" 
         "Dll"="irc.dll" 
         "Order"=dword:66 
         "Index"=dword:1

3.修改platform.bib 文件,将流驱动的dll文件打包到NK.bin.

4.MakeImg,生成包含流驱动的NK.BIN.

整个过程烦琐,而且只要稍加修改,就要重先makeImg,大概要浪费3-5分钟.这种开发效率是很低的.

下面2种介绍在EVC下快速开发WINCE流驱动的方法,是我自己亲身经验,拿出来与大家分享,也希望和各高手相互学习和探讨.

WINCE的驱动,不象桌面windows驱动开发那样烦琐,windows驱动开发分好几种,如wdm啦,VXD啦,等等,开发这些驱动需要专门的开发环境和工具,给开发者带来比较高的技术门槛.所幸的是,WinCE的驱动开发,没有这么多的限制和门槛.而且应用程序可以直接和底层硬件打交道的(注:尽管这样,笔者还是不建议大家直接用应用程序访问底层硬件,这种做法是不安全的),甚至中断初始化,中断线程都可以在用户级的应用程序完成.所以给驱动开发带来了不少的便利.依我自己的经验来看,具体有以下2种方法.

1.利用EVC生成驱动的DLL.

1).新建一个evc的dll工程,将流驱动代码移植到evc代码中。

2).编写导出文件*.def,将流驱动的10个标准函数导出.并在Project--->Setting--->Link--->Project options里面标注,如: /def:"IR.DEF" .(这一步如果不做,生成的驱动将不可用)

3).编译代码,这个时候一般会出现一些错误,如找不到头文件或库文件等错误,请在wince的安装目录下找到相应的头文件和库文件,在Tools--->options--->Directories中指明头文件和库文件的路径。在Project--->Setting--->link中指定相应的*.obj文件(具体文件视源代码调用了哪些驱动和库,到wince的目录下找到这些obj文件链接进来即可)

4).编写一个应用程序来调试驱动.利用RegisterDevice/DeRegisterDevice动态加载/卸载流驱动,模拟WinCE设备管理程序的功能. (笔者写了一个基于MIPS CPU的流驱动调试工具.欢迎下载试用http://files.cnblogs.com/Jade2009/CE_Driver_Assist.exe.rar

以上这种方法,完全脱离了Platform Builder的开发环境,使驱动的开发和调试工作象开发应用程序一样轻松和快捷.可  以在驱动程序中利用RETAILMSG函数从UART口输出调试信息.

下面再介绍一种方法,就是利用EVC将驱动程序写成exe,直接象调试应用程序一样调试驱动.最后将调试好的源代码移植到驱动程序的dll工程中去.具体方法和第一种方法类似,不同之处在于,前者是新建一个纯DLL工程(带导出函数),后者是新建一个MFC的exe工程而已.编译的头文件和库文件方法2者雷同.这种方法的好处是可以直接编译成evc的debug工程,可以在源代码中进行单步跟踪调试和设置断点,大大的提高了驱动程序的调试效率.

转载于:https://www.cnblogs.com/Jade2009/archive/2009/01/04/wince.html

(原创)利用EVC快速开发WINCE5.0的流驱动相关推荐

  1. 利用EVC快速开发WINCE5.0的流驱动(转载)

    WinCE5.0提供了一个标准的流驱动格式,大大方便了设备驱动程序的开发工作.但是传统的开发方式往往效率很低.方法如下: 1.在Platform Builder下建立一个流驱动的dll工程. 2.为流 ...

  2. centos7.0利用yum快速安装mysql8.0

    我这里直接使用MySQL Yum存储库的方式快速安装: 抽象 MySQL Yum存储库提供用于在Linux平台上安装MySQL服务器,客户端和其他组件的RPM包.这些软件包还可以升级和替换从Linux ...

  3. 如何利用HTML5快速开发一款小游戏

    如何利用HTML5开发一款小游戏?Cocos2d-js是一款流行的H5游戏开发框架,介绍Cocos2d-js的核心技术和使用方法,学完以后可以独立开发一款休闲游戏,主要介绍cocos2d-js中的图层 ...

  4. java 利用JAX-RS快速开发RESTful 服务

    JAX-RS(Java API for RESTful Web Services)同样也是JSR的一部分,详细规范定义见 https://jcp.org/en/jsr/detail?id=311 .从 ...

  5. 利用python快速开发一个上位机软件

    PyQt5+QtDesigner学习记录 标签: 漂流小江 2020年2月6日 一.串口调试助手 1.QT界面实现 (1)界面面图片展示 (图示1处函数为自定义函数)) (2)界面代码展示 # -*- ...

  6. 利用Matchvs快速开发棋牌游戏斗地主排行榜功能教程

    目录 排行榜实现 接入描述 排行榜接口 host 和 path 创建排行榜 上报排行榜 client 获取排行榜列表 获取玩家当前分数 排行榜接入总结 一般来说,一款比较流行的斗地主游戏主要功能如下: ...

  7. eclipse在网页进入时显示重定向过多_使用eclipse快速开发jsp以及编码问题、jsp页面元素、request对象学习的粗略记录...

    人老了真是什么都会忘记啊orz,早上发现学过去的东西好多都还没记录复盘... ...(懒虫作祟) 在开始之前,俺认为还是很有必要了解一下jsp的执行流程,俺发现CSDN上的"陈小哥cw&qu ...

  8. 定制带有模拟器且支持ActiveSync调试的WINCE5.0 SDK

    目的:生成供Visual Studio和EVC开发WINCE5.0应用程序的SDK,且带有模拟器和直接连接设备的两种调试功能. 软件环境:WINCE5.0 Platform Builder 以下内容针 ...

  9. SNF快速开发平台MVC-高级查询组件

    1.   高级查询 在我们做项目的时候经常想要按名称.编号进行查询数据,可在开发时会把最常用的查询条件写上,不常用的就不写了,也是因为把所有字段都写上太多了,布局不好看而且不实用.还有些查询条件几百年 ...

最新文章

  1. app如何打开了request url_手机日历app内如何打开节日提醒功能?支持提前提醒节日的云便签...
  2. Spoooooky CSS 选择器
  3. 什么是SESSION?(二)
  4. 基本算法系列15天速成
  5. Redis cluster原理
  6. gvim 安装 taglist
  7. Docker核心组件的关系
  8. swift开发体验,论objective-c与swift的选择
  9. 《零基础》MySQL LIKE 子句(十六)
  10. 把socket相关函数封装成类
  11. java学习之------位运算符实现两值交换
  12. php上传文件的目录,php文件上传及下载附带显示文件及目录功能
  13. 15年程序员老兵的40条编程技巧,句句都是血泪史!
  14. 生成手写文字图片_如何把手机图片转成PDF文件?这个技巧你一定能学会!
  15. 11位大牛与您共建数智升级路径
  16. bmfont 导入png图片不能正常加载
  17. cmake linux windows,Cmake 64位下载_Cmake Windows Linux下载 3.7.1 官网免费版_当载软件站...
  18. 手机图片怎么压缩,简单的压缩方法
  19. 计算机vga,电脑启用vga模式是什么意思?怎么修复?
  20. 爬虫爬取实时新闻标题、时间及新闻内容并保存

热门文章

  1. DevOps 面试题集锦
  2. pdf如何添加水印文字?
  3. 14、Improved Day-Ahead Predictions of Load and Renewable Generation by Optimally Exploiting Multi-Sca
  4. 信息安全-数据安全-字节大数据平台安全与权限治理实践
  5. 即构科技推出小程序视频直播方案,与iOSAndroid APP互通连麦
  6. 华为 LDP回话建立的过程
  7. mLife | “变废为宝“—单细胞技术助力揭示菜籽饼施用对微生物解磷功能的促进作用...
  8. 中南大学计算机系高建良,汤哲 - 中南大学 - 计算机学院
  9. openwrt添加开机运行脚本
  10. 【c语言跟练】翁恺-跟学笔记-课堂练习