基于WinCE的车载智能显示终端CAN流接口驱动开发
- 格式:pdf
- 大小:238.75 KB
- 文档页数:3
我的第一个WinCE驱动--流式驱动【转】转做WinCE驱动已经有两个月了,却没有做过一个真正的WinCE 平台下的驱动,心里都有些急了,很想尝试下,好尽快融入WinCE驱动开发这个团队。
头儿也很理解,给了俺个简单的,可以说是非常简单的任务,好让俺找找入门的感觉,就是做一个FM的驱动。
由于WinCE下的驱动大多是基于流接口的,所以偶也采用了流接口,做比较起来简单,呵呵说白了,流接口就是实现以下几个接口:BOOL WINAPI DllMain(HANDLE hInstDll, DWORD dwReason, LPVOID lpvReserved);DWORD XXX_Init(LPCTSTR pContext, LPCVOID lpvBusContext);BOOL XXX_Deinit(DWORD hDeviceContext);DWORD XXX_Open(DWORD hDeviceContext, DWORD AccessCode, DWORD ShareMode);BOOL XXX_Close(DWORD hOpenContext);BOOL XXX_PowerUp(DWORD hDeviceContext); BOOL XXX_PowerDown(DWORD hDeviceContext);BOOL XXX_PowerDown(DWORD hDeviceContext);DWORD XXX_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count);DWORD XXX_Write(DWORD hOpenContext, LPCVOID pBuffer, DWORD Count);DWORD XXX_Seek(DWORD hOpenContext, long Amount, WORD Type);BOOL XXX_IOControl(DWORD hOpenContext, DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn,PBYTE pBufOut, DWORD dwLenOut,PDWORD pdwActualOut);XXX是任意的大写字符串(只能是三个字符,偶刚开始用的FM,后面回出问题),且保证与注册表Prefix项后的一样哦把以上接口给实现了,接下来就是弄注册表咯在注册表中添加如下项目。
WinCE中的驱动程序开发一.实验目的1、熟悉WinCE中流式接口驱动程序的12个接口的功能。
2、掌握流式驱动程序的工作过程。
3、能够编写出流式接口的驱动程序。
二.实验内容使用VS2005的智能设备应用程序开发方法,进行网络通信的编程,并通信多线程技术实现服务器与客户端之间的文件传输。
三.实验设备及工具硬件:PC机一台;软件:Windows XP操作系统,VS2005开发环境,WinCE 6.0开发环境,或Windows Mobile 5.0 SDK四.实验步骤及说明(1)写出流式接口驱动程序的12个接口,及每个接口的功能。
答:见教材515页(2)写出流式驱动程序的工作过程。
答:第一步:加载驱动程序,主要有两种加载方式:(1)当系统启动时,设备管理器搜寻注册表的HKEY_LOCAL_MACHINE\Drivers\BuiltIn键下面的子键,并逐一加载该子键下的每一个驱动,此过程称为BusEnum;(2)应用程序可调用ActivateDeviceEx()函数动态地加载驱动程序。
第二步:设备管理器从注册表的dll键值中获取驱动程序所在的DLL文件名。
第三步:设备管理器调用LoadDriver()函数把该DLL加载到自己的虚拟地址空间中。
第四步:设备管理器在注册表的HKEY_LOCAL_MACHINE\Drivers\Active下,记录所有已经加载的驱动程序。
第五步:设备管理器调用驱动程序中的COM_Init函数,并把上一步中添加的注册表项的完整路径作为COM_Init函数的第1个参数传入驱动程序内。
第六步:在COM_Init中,通常须对硬件进行一些最基本的初始化操作。
通过以上的操作完成流式驱动程序的加载任务。
对驱动程序的操作:第一步:应用程序使用该设备。
首先,应用程序调用CreateFile(TEXT(“COM1”)….)打开设备。
然后,文件系统判断打开的是文件还是设备。
最后,如果打开的是设备,就将控制权交回设备管理器。
C#开发基于wince SDK的PWM控制软件前些天本人苦于vs2005下开发pwm的控制软件,经过几天的努力,现已成功写出了pwm的控制软件,现总结如下开发环境:mini2440+vs2005+vs2005 sp1+mini2440 SDK没有安装wince6.0及PB一、学习相关的知识1、流驱动的相关知识1.1 流驱动的主要接口Wince流驱动方式与c++中开发dll很相相似,主要有以下几个接口:流接口函数功能描述调用流接口对象XXX_Init() 初始化设备系统设备管理器XXX_Denit() 卸载设备系统设备管理器XXX_Open() 打开设备进行读写操作文件API函数CreateFile()XXX_Close() 关闭设备文件API函数CloseHandle()XXX_Read() 读取设备数据文件API函数ReadFile()XXX_Write() 向设备写数据文件API函数WriteFile()XXX_IOControl() 对设备进行各种操作文件API函数DeviceIOControl()XXX_Seek() 移动设备数据的指针位置文件API函数SetFilePointer()XXX_PowerDown() 使设备休眠系统电源管理器XXX_PowerUp() 恢复设备电源系统电源管理器图1 流驱动主要接口1.2 流驱动工作及调用过程1)加载驱动。
在当系统启动时,设备管理器搜寻注册表的HKEY_LOCAL_MACHINE\Driver\BuiltIn键下面的子键,并逐一加载子键下的每个驱动,此过程叫BusEnum。
2)设备管理器从注册表的dll键值中获取驱动程序所在的DLL文件名。
3)设备管理器调用LoadDriver()函数把DLL加载到自己的虚拟地址空间内。
4)设备管理器在注册表的HKEY_LOCAL_MACHINE\Driver\Active下面,记录所有已经加载的驱动程序。
CAN Bus Driver Developer’s Manual(Wince 4.2 Operating System)深圳英贝德科技有限公司Revision History一、重新编写CAN驱动1.编写CAN 总线的驱动程序,驱动程序编写可以使用Platform Builder 4.2或者是eMbedded Visual C++ 4.0,在此我们使用的是Platform Builder 4.2,首先进入你建立的Platform 中,接着在Platform Builder 4.2中新建工程文件,如图1所示:图 1单击New Project or File…菜单命令,弹出如下图2所示界面:图 2单击WCE Dynamic-Link Library 选项,在右则的Project name 输入框中输入驱动文件名CAN 然后点击OK按钮。
接着出现图3所示对话框:图 3选定A simple Windows CE DLL project选项,然后单击Finish按钮,进入Platform Builder 4.2主界面,将其目录展开可见到如图4所示的窗口:图 4双击CAN.cpp 图标,即可进行CAN驱动源程序的编写。
在Windows CE操作系统中,驱动程序都是以动态链接库文件存在的。
我们编写的驱动程序为流接口驱动程序,因此在该动态链接库文件内要定义标准的流接口函数。
其标准流接口函数有:CAN_Init()CAN_Deinit()CAN_Open()CAN_Close()CAN_IOControl()CAN_PowerUp()CAN_PowerDown()CAN_Read()CAN_Seek()CAN_Write()以上每个函数的功能如其函数名称所示。
它们为标准的流接口函数,具体的功能如果没有必要,也就只需定义其函数不用具体实现,在我们的驱动程序中主要完成的代码编写有CAN_Init()、CAN_Deinit()、CAN_Open()、CAN_Close()、CAN_IOControl()、CAN_Read()、CAN_Write()。
基于WinCE环境的CAN适配卡驱动程序的设计与实现
1.引言
WinCE 是一种为多种嵌入式系统和产品设计的紧凑、高效、可升级的操作系统,WinCE 采用标准模式,其最主要的特征:为有限的硬件资源提供了多线程、多任务和完全优先级的计算环境。
WinCE 操作系统支持两种类型的驱动程序:[1]本地驱动程序(Build-In),是
把设备驱动程序作为独立任务实现,直接在顶层任务中实现硬件操作,完成特有专用的驱动程序;流接口驱动程序,WinCE 的I/O 系统将设备程序作为内核过程实现,这种方式便于实现I/O 子系统的层次模型,便于文件系统一起把设
备作为特殊文件处理,提供统一的管理、统一的界面和统一的使用方法,并把设备、文件及网络通信组织成为一致的更高层次的抽象,为用户提供统一的系统服务和用户接口。
驱动程序封装了将这些命令转换为它所控制的设备上的适当操作所需的全部信息。
流接口驱动程序有在启动时加载和动态加载两种方式。
本文实现的在WinCE 环境下流结构的PC/104-CAN 驱动程序是在系统启动时加载的。
2. CAN 总线技术简介
CAN 总线是德国Bosch 公司开发的一种串行数据通信协议,CAN 总线属于总线式串行通讯网络,具有总线为多主方式工作且无需站地址节点信息、CAN 网络上的节点信息分成不同的优先级、总线冲突仲裁时间低和总线的通信介质选择灵活等优点[2]。
CAN 适配卡的核心工作单元是它的控制器,控制器SJA1000 的组织结构如图1 所示。
基于WINCE的CAN总线设备驱动研究
目前嵌入式车载网络系统一般采用LINUX 嵌入式操作系统,以
ARM7s3c44Bo 为微控制器,SJAl000 为CAN 控制器的解决方案,实现LINUX 下的CAN 通信.在WINCE 平台下,CAN 卡的研究已经有很多。
也取得了不
错的应用效果,但以ARM9s3c2440 为嵌入式系统硬件核心,外围扩展CAN 控制器SJA1000,嵌入式操作系统采用WINCE 的应用方案几乎没有,所以值得研究.
1 嵌入式车载网络的构成
嵌人式车载网络由若干个子节点控制器和主控制单元组成,其中主控单元
对子节点进行监视与控制,实现不同的CAN 数据总线系统问的数据交换,网
络的拓朴结构如图1 所示.
图1 系统网络拓扑结构
2 系统采用的驱动模型
目前基于WINCE 的两种驱动模型是本机设备驱动程序和流接口驱动程序,不同的驱动模型只能通过它们支持的软件接口来区别.
本系统采用的是流接口驱动程序,图2 给出了流接口驱动的工作结构.流
接口驱动模型由设备管理器统一加载、管理和卸载,应用程序通过文件系统的API 函数调用流接口函数,然后由流接口驱动程序调用本机驱动或者通过设备
管理器与系统内核或外围设备进行信息交流。
图2 流接口工作结构
3 车载网络主控单元硬件平台实现。
基于WINCE5.0的ⅡC总线驱动程序设计陈绍贵;王新华;郭淑琴【摘要】该文主要研究在嵌入式操作系统WinCE5.0下,如何设计实现S3C2440A 芯片具有ⅡC接口的驱动程序.简单介绍WINCE5.0分层驱动的结构,将驱动程序使用Platform Builder编译进操作系统,最后使用动态加载方式提供给用户使用.【期刊名称】《杭州电子科技大学学报》【年(卷),期】2012(032)004【总页数】4页(P80-83)【关键词】微软嵌入式操作系统;集成电路间总线;驱动程序【作者】陈绍贵;王新华;郭淑琴【作者单位】浙江工业大学信息学院,浙江杭州310023;浙江科技学院信息学院,浙江杭州310023;浙江工业大学信息学院,浙江杭州310023【正文语种】中文【中图分类】TP316.70 引言随着信息技术的发展,以嵌入式智能设备为核心的后PC时代已经来临,嵌入式技术和产品得到了很大的发展,美国微软公司也发布了一系列嵌入式操作系统,并且取得了巨大的成功。
WinCE是微软公司设计的一个开放的、可裁剪的、32位的实时窗口操作系统,具有可靠性好、实时性高、内核体积小等特点;拥有良好的通信能力、出色的图形界面、灵活的电源管理,并内置多媒体功能、支持多种CPU,所以被广泛应用于移动应用产品、消费类电子产品和嵌入式智能设备的开发[1]。
为了使操作系统与硬件很好的连接在一起,编写硬件的驱动程序就显得至关重要了。
1 IIC总线协议IIC串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。
所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。
IIC总线是遵从串行传输协议的。
当总线开始工作的时候,即各位串行(一位接一位)发送,由时钟(clock)线指示读数据(data)线的时刻。
IIC总线数据由8位构成,传输数据前首先传输一个地址,地址由8位组成,前7位为设备地址,第8位为传输方向。