以Windows CE.5.0系统、pxa270平台为例:

一.中断添加

1.要使用中断必须先注册中断 D:/WINCE500/PLATFORM/MAINSTONEIII/src/inc/bsp_cfg.h参照wince自带的中断注册即可。注册值不能大于SYSINTR_FIRMWARE+23。

2.将硬件中断变为系统中断 D:/WINCE500/PLATFORM/MAINSTONEIII/src/kernel/oal/intr.c 其中函数OALIntrStaticTranslate是实现硬件中断转换为系统中断的函数。可以参照别的中断产生的方法写你自己的中断。

3.中断设置与初始化 D:/WINCE500/PUBLIC/csp_pxa27x/oak/oal/common/intr/common/oem.c中的OEMInterruptEnable与OEMInterruptDisable函数,参照别的中断设置写自己的中断。 可以在OEMInitInterrupts添加对中断的初始化,也可以在后面的中断处理线程(IST)中添加。

二. 中断处理线程

1.创建线程CreateThread

2.创建事件CreateEvent

3.中断与事件绑定InterruptInitialize

4.while()

1)等待中断事件发生 WaitForSingleObject

2)确认有一个来自操作系统的事件

3)在尽可能短的时间内处理中断

4)调用 InterruptDone

---------------------------------------------------------------------------------------------

DWORD WINAPI ThreadIST( LPVOID lpvParam )

{ DWORD dwStatus; // 检查运行标志

while( g_fRun )

{ dwStatus = WaitForSingleObject(g_hevInterrupt, INFINITE);

if( dwStatus == WAIT_OBJECT_0 )

{ // 在此处理中断 //

g_dwInterruptCount ++; // 完成中断 //

InterruptDone( g_dwSysInt );

}

} return 0;

} ---------------------------------------------------------------------------------------------

三. 驱动文件DLL 用Platform Builder 新建一个Dll工程,在程序中添加流接口的一些标准函数:

XXX.Init() 

XXX_Deinit()

XXX_IOControl()

XXX_Open()

XXX_Close()

XXX_PowerDown()

XXX_PowerUp()

XXX_Read()

XXX_Seek()

XXX_Write()

在XXX.Init里完成初始化,包括IST的创建等,此函数由系统自动调用。其它函数根据实际需要添加内容。

然后添加一个.def文件用来配置dll所要导出的函数。

LIBRARY dllname EXPORTS

XXX_Init

XXX_Deinit

XXX_IOControl

XXX_Open

XXX_Close

XXX_PowerDown

XXX_PowerUp

XXX_Read

XXX_Seek

XXX_Write

最后将它们编译成DLL文件。

四. 添加驱动到系统

将驱动dll拷贝D:/WINCE500/PBWorkspaces/PXA270/RelDir/MAINSTONEIII_ARMV4I_Release目录下。然后在D:/WINCE500/PLATFORM/MAINSTONEIII/files/Preject.bib中添加:

MODULES ; Name Path Memory Type ;

-------------- --------------------------------------------- -----------

dllname.dll $(_FLATRELEASEDIR)/dllname.dll NK SH

其主要功能是在make image的时候把dllname.dll文件添加到系统内核中去。

接下来还要在projiect.reg中添加:

[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/dllname] "Prefix"="XXX" "Dll"="dllname.dll"

使系统在启动时加载驱动。当然也可以直接建立一个bib文件和reg文件,只要将它们放到platform的release目录下就行了。 上述也可以通过编写cec文件来实现。

(*********************编写流驱动的步骤。有两种实现途径:

1。写DLL,做成Project,加入到OS里。

2。改BSP,把驱动写在BSP里,再选择那个BSP做OS。

****第一种方法步骤是在PB中新建一个DLL项目,编写一些输入函数,寄存器,外设的声明,写DLLENTRY函数;实现流接口函数;编写DLL的导出函数文件.DEF;为驱动程序写入注册表项,还需要修改bib文件。

****第二种方法就是在platform/BSP/drivers下新建一个目录,然后在drivers目录中的dirs文件中加入新建的目录名。在新建的目录下,新建你的源代码文件,在其中实现DLL函数。新建名称分别为sources, makefile, ***.def的文件;修改platform.reg和platform.bib文件

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/josh915/archive/2009/01/08/3734867.aspx)

Window CE 驱动开发流程(Windows CE.5.0系统、pxa270平台)相关推荐

  1. Window XP驱动开发(二) 环境搭建(VS2008+WDK+DDKWzard)及示例源码分析

    郁闷,做了WCE嵌入式驱动这么久还没热身够,又被调到做window xp下的驱动开发.没办法.只能受令了. 现在就开始自己的学习之旅吧. 转载请标明是引用于 http://blog.csdn.net/ ...

  2. Window XP驱动开发(十三) 芯片功能驱动端 (代码实现,针对USB2.0 芯片CY7C68013A)

    转载请标明是引用于 http://blog.csdn.net/chenyujing1234 欢迎大家提出意见,一起讨论! 需要源码的可以与我联系. 针对USB2.0 芯片CY7C68013A+FPGA ...

  3. SylixOS 基于STM32平台的GPIO模仿I2C总线的驱动开发流程

    2019独角兽企业重金招聘Python工程师标准>>> 概述 本文档以STM32F767平台为例,详细介绍SylixOS上GPIO模仿I2C总线的驱动开发流程. 初始化 GPIO模仿 ...

  4. LINUX IIO子系统分析之六 iio device的驱动开发流程说明

    前面五章我们基本上把IIO 子系统的内部设计实现均作了说明,本章我们将说明iio device的驱动开发流程,本章的主要内容大致安排如下: 一.IIO子系统的关键技术点总结 二.IIO DEVICE的 ...

  5. linux内核led驱动开发,从Linux内核LED驱动来理解字符设备驱动开发流程

    目录 博客说明 开发环境 1. Linux字符设备驱动的组成 1.1 字符设备驱动模块加载与卸载函数 1.2 字符设备驱动的file_operations 结构体中的成员函数 2. 字符设备驱动--设 ...

  6. 嵌入式驱动开发流程示例(简单的说就是写好驱动,编译,挂载)

    1.在drivers/char/目录下建立一个first_driver_hello.c文件 文件的内容如下 /************************************* NAME:fi ...

  7. Window XP驱动开发(二十一) 过滤驱动程序

    转载请标明是引用于 http://blog.csdn.net/chenyujing1234 欢迎大家拍砖 参考书籍<<Windows驱动开发技术详解>> 过滤驱动程序的开发十分 ...

  8. Linux驱动开发流程四步走

    嵌入式ARM 首先,我们要考虑到作为驱动工程师要做的是摆脱单片机开发的思路,在单板开发(没有OS)过程,设备的驱动接口直接交给了上层,驱动和应用互为平等.在有OS的系统中,驱动独立于硬件平台之外,应用 ...

  9. Window XP驱动开发(十) 驱动程序的基本结构

    转载请标明是引用于 http://blog.csdn.net/chenyujing1234 欢迎大家提出意见,一起讨论! 参考书籍<<Windows驱动开发技术详解>> 一.数 ...

最新文章

  1. python mysql latin1_python操作Mysql数据库
  2. 清华姚班2019级新生来了:高考状元、奥赛金牌,也是一批被AI感召的00后
  3. 【转】WinForm窗体间数据交互的方法
  4. 【设计模式】适配器模式 ( 类适配器代码模板 | 对象适配器代码模板 | 适配器模式示例 )
  5. mysql 工具_MySQL压力测试工具,值得收藏
  6. nginx访问本地目录一直不好使_nginx 配置根目录不生效问题
  7. 不需要软著的安卓应用市场_哪些安卓应用市场上架应用比较简单啊,不需要软著啊?公司开发的 APP 着急上架...
  8. 深度学习在医学影像中的研究进展及发展趋势
  9. 20191022:(leetcode习题)山脉数组的峰顶索引
  10. opencv 图像融合
  11. 错误 C2280 Union : 尝试引用已删除的函数 以及 警告 C4624 “Grade”: 已将析构函数隐式定义为“已删除”的一种解决方法...
  12. javascript string对象方法总结
  13. 第四天:使用 session cookie redis完善登录验证及登录路由
  14. 徐思201771010132《面向对象程序设计(java)》第二周学习总结
  15. flash网页播放器
  16. WebDAV之葫芦儿·派盘+FX文件管理器
  17. ai画面怎么调大小_AI中怎么把图像等比例扩大或缩小尺寸
  18. mysql into loadfile_mysql load_file()和 into outfile
  19. Java别踩白块外挂(附源码)
  20. Java多进程从头讲到尾,值得收藏!

热门文章

  1. Dynamips 7200
  2. CentOS安装问题
  3. IP互动电视的坚强后盾
  4. 超级烧脑惊悚悬疑电影《恐怖游轮》(原片+解说)
  5. PTA:6-8 数组元素的区间删除 (20 分)
  6. 大数据hadoop常见端口
  7. 大数据分析工具如何选择
  8. python向文档中输入内容_Python修改文件往指定行插入内容的实例
  9. python赋值标志_Python中的赋值、引用和深浅拷贝
  10. java中bitconverter_【Java】BitConverter(数字转字节数组工具类)