Window CE 驱动开发流程(Windows CE.5.0系统、pxa270平台)
以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平台)相关推荐
- Window XP驱动开发(二) 环境搭建(VS2008+WDK+DDKWzard)及示例源码分析
郁闷,做了WCE嵌入式驱动这么久还没热身够,又被调到做window xp下的驱动开发.没办法.只能受令了. 现在就开始自己的学习之旅吧. 转载请标明是引用于 http://blog.csdn.net/ ...
- Window XP驱动开发(十三) 芯片功能驱动端 (代码实现,针对USB2.0 芯片CY7C68013A)
转载请标明是引用于 http://blog.csdn.net/chenyujing1234 欢迎大家提出意见,一起讨论! 需要源码的可以与我联系. 针对USB2.0 芯片CY7C68013A+FPGA ...
- SylixOS 基于STM32平台的GPIO模仿I2C总线的驱动开发流程
2019独角兽企业重金招聘Python工程师标准>>> 概述 本文档以STM32F767平台为例,详细介绍SylixOS上GPIO模仿I2C总线的驱动开发流程. 初始化 GPIO模仿 ...
- LINUX IIO子系统分析之六 iio device的驱动开发流程说明
前面五章我们基本上把IIO 子系统的内部设计实现均作了说明,本章我们将说明iio device的驱动开发流程,本章的主要内容大致安排如下: 一.IIO子系统的关键技术点总结 二.IIO DEVICE的 ...
- linux内核led驱动开发,从Linux内核LED驱动来理解字符设备驱动开发流程
目录 博客说明 开发环境 1. Linux字符设备驱动的组成 1.1 字符设备驱动模块加载与卸载函数 1.2 字符设备驱动的file_operations 结构体中的成员函数 2. 字符设备驱动--设 ...
- 嵌入式驱动开发流程示例(简单的说就是写好驱动,编译,挂载)
1.在drivers/char/目录下建立一个first_driver_hello.c文件 文件的内容如下 /************************************* NAME:fi ...
- Window XP驱动开发(二十一) 过滤驱动程序
转载请标明是引用于 http://blog.csdn.net/chenyujing1234 欢迎大家拍砖 参考书籍<<Windows驱动开发技术详解>> 过滤驱动程序的开发十分 ...
- Linux驱动开发流程四步走
嵌入式ARM 首先,我们要考虑到作为驱动工程师要做的是摆脱单片机开发的思路,在单板开发(没有OS)过程,设备的驱动接口直接交给了上层,驱动和应用互为平等.在有OS的系统中,驱动独立于硬件平台之外,应用 ...
- Window XP驱动开发(十) 驱动程序的基本结构
转载请标明是引用于 http://blog.csdn.net/chenyujing1234 欢迎大家提出意见,一起讨论! 参考书籍<<Windows驱动开发技术详解>> 一.数 ...
最新文章
- python mysql latin1_python操作Mysql数据库
- 清华姚班2019级新生来了:高考状元、奥赛金牌,也是一批被AI感召的00后
- 【转】WinForm窗体间数据交互的方法
- 【设计模式】适配器模式 ( 类适配器代码模板 | 对象适配器代码模板 | 适配器模式示例 )
- mysql 工具_MySQL压力测试工具,值得收藏
- nginx访问本地目录一直不好使_nginx 配置根目录不生效问题
- 不需要软著的安卓应用市场_哪些安卓应用市场上架应用比较简单啊,不需要软著啊?公司开发的 APP 着急上架...
- 深度学习在医学影像中的研究进展及发展趋势
- 20191022:(leetcode习题)山脉数组的峰顶索引
- opencv 图像融合
- 错误 C2280	Union : 尝试引用已删除的函数	 以及 警告 C4624	“Grade”: 已将析构函数隐式定义为“已删除”的一种解决方法...
- javascript string对象方法总结
- 第四天:使用 session cookie redis完善登录验证及登录路由
- 徐思201771010132《面向对象程序设计(java)》第二周学习总结
- flash网页播放器
- WebDAV之葫芦儿·派盘+FX文件管理器
- ai画面怎么调大小_AI中怎么把图像等比例扩大或缩小尺寸
- mysql into loadfile_mysql load_file()和 into outfile
- Java别踩白块外挂(附源码)
- Java多进程从头讲到尾,值得收藏!