嵌入式软件开发导论.ppt





《嵌入式软件开发导论.ppt》由会员分享,可在线阅读,更多相关《嵌入式软件开发导论.ppt(81页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式软件开发导论 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望主要内容主要内容l l概述概述l l流驱动接口流驱动接口l l设备驱动程序架构设备驱动程序架构l lUSB mouse 驱动开发示例驱动开发示例l lWindows CE 系统服务系统服务什么是设备驱动程序什么是设备驱动程序设备驱动程序是与硬件设备进行通信的系统设备驱动程序是与硬件设备进行通信的系统程序。一个设备可以是物理设备,也可以是程序。一个设备可以是物理设备,也可以是一个逻辑实体。通常,这些实
2、体需要操作系一个逻辑实体。通常,这些实体需要操作系统对其进行控制,资源管理。设备驱动程序统对其进行控制,资源管理。设备驱动程序就是管理这些物理设备或者虚拟设备,协议就是管理这些物理设备或者虚拟设备,协议 或者系统服务的软件模块。或者系统服务的软件模块。对于每一个基于对于每一个基于Windows CE的设备,设备驱动程序都是必的设备,设备驱动程序都是必不可少。不可少。-译自译自 MSDN“一般一般”驱动程序开发的理解驱动程序开发的理解l l必须使用汇编语言对端口进行读写必须使用汇编语言对端口进行读写l l设备驱动程序是操作系统的一部分,难于设备驱动程序是操作系统的一部分,难于开发与调试。开发与调
3、试。l l设备驱动程序控制硬件设备驱动程序控制硬件l l中断比较难于处理中断比较难于处理必须使用汇编语言读写端口必须使用汇编语言读写端口l lCEDDK.dll 提供提供 APIs与硬件进行通信与硬件进行通信HalGetBusDataHalGetBusDataREAD_PORT_UCHARREAD_PORT_UCHARWRITE_REGISTER_ULONGWRITE_REGISTER_ULONGl l对于逻辑设备驱动程序,采用对于逻辑设备驱动程序,采用Win32 APIs 从硬件获取数据从硬件获取数据设备驱动程序是操作系统的一设备驱动程序是操作系统的一部分,难于开发与调试部分,难于开发与调试
4、l l对于对于UNIX或者是或者是 Windows 9x,设备驱动程设备驱动程序是与操作系统映像连接的,并运行于系序是与操作系统映像连接的,并运行于系统内核态。统内核态。l l对于对于windows CE,大多数的设备驱动程序大多数的设备驱动程序运行于用户态,简单的来说就是一个运行于用户态,简单的来说就是一个DLL文件。文件。设备驱动程序控制硬件设备驱动程序控制硬件l l大多数的设备驱动程序用来控制硬件。大多数的设备驱动程序用来控制硬件。l l对于某些硬件,是没有驱动的。对于某些硬件,是没有驱动的。CPUCPU内存内存内存内存l l对于虚拟设备驱动程序,没有物理设备。对于虚拟设备驱动程序,没有
5、物理设备。文件系统驱动程序文件系统驱动程序文件系统驱动程序文件系统驱动程序RAM diskRAM disk中断有时难于处理中断有时难于处理l lWindows CE提供逻辑中断提供逻辑中断(SYSINTRs)l l中断由一个用户态的线程进行处理中断由一个用户态的线程进行处理(IST)为什么应当写驱动程序?为什么应当写驱动程序?l l当我们设计硬件时,就需要提供这一硬件当我们设计硬件时,就需要提供这一硬件的驱动软件。的驱动软件。l l硬件硬件OEM厂商不提供基于厂商不提供基于Windows CE的的硬件驱动,但是提供硬件的规格说明。硬件驱动,但是提供硬件的规格说明。l l对于一个现有硬件驱动的功
6、能进行扩展。对于一个现有硬件驱动的功能进行扩展。驱动分类驱动分类整体整体 l lWindows CE 整体上将设备驱动分为三种整体上将设备驱动分为三种:内置驱动内置驱动内置驱动内置驱动总线总线总线总线流接口流接口流接口流接口内置驱动内置驱动l l硬件所必须的驱动程序,这些驱动程序通硬件所必须的驱动程序,这些驱动程序通常由设计常由设计OEM厂商进行设计。厂商进行设计。l l如如:键盘,触摸屏,音频设备。键盘,触摸屏,音频设备。l l可能不支持一般的驱动接口,也有可能带可能不支持一般的驱动接口,也有可能带有扩展的接口或者完全提供一个用户自定有扩展的接口或者完全提供一个用户自定义的接口。义的接口。l
7、 l内置驱动通常需要针对具体的操作系统进内置驱动通常需要针对具体的操作系统进行小幅改动。行小幅改动。总线驱动总线驱动l l管理系统总线如管理系统总线如PCI总线等。总线等。PCMCIA与与 CompactFlash也在其列。也在其列。l l负责处理总线上硬件的询问,以及资源的负责处理总线上硬件的询问,以及资源的分配。分配。l l同时也请求设备管理器为总线上的硬件安同时也请求设备管理器为总线上的硬件安装适当驱动程序。装适当驱动程序。驱动分类驱动分类 详细详细l lAudio DriversAudio Drivers l lBattery DriversBattery Drivers l lBlo
8、ck DriversBlock Drivers l lBluetooth HCI Transport DriverBluetooth HCI Transport Driver l lDirect3D Device Driver InterfaceDirect3D Device Driver Interface l lDirectDraw Display DriversDirectDraw Display Drivers l lDisplay DriversDisplay Drivers l lDVD-Video RendererDVD-Video Renderer l lIEEE 1394 D
9、riversIEEE 1394 Drivers l lKeyboard DriversKeyboard Drivers l lNotification LED DriversNotification LED Drivers l lParallel Port DriversParallel Port Drivers l lPC Card DriversPC Card Drivers l lPrinter DriversPrinter Drivers l lSerial Port DriversSerial Port Drivers l lSmart Card DriversSmart Card
10、Drivers l lStream Interface DriversStream Interface Drivers l lTouch Screen DriversTouch Screen Drivers l lUSB DriversUSB Drivers 参见文档参见文档:Driver Development-Driver Development-Driver CategoriesDriver Categories驱动的加载过程驱动的加载过程l l大多数的设备驱动由设备管理器大多数的设备驱动由设备管理器(Device.exe)进程在系统启动时进行加载。进程在系统启动时进行加载。l l另一方
11、面,其中一部分内置驱动程序由另一方面,其中一部分内置驱动程序由GWES.exe进行加载。这些驱动包括显示进行加载。这些驱动包括显示器驱动器驱动(DDI.dll)、键盘驱动、鼠标驱动、键盘驱动、鼠标驱动、触摸屏驱动等。触摸屏驱动等。驱动的加载过程驱动的加载过程1.1.当当Device.exe对设备驱动程序进行安装时对设备驱动程序进行安装时将在注册表的将在注册表的HKEY_LOCAL_ MACHINEDrivers项下检查一个字符串,项下检查一个字符串,其值为其值为 RootKey,传统地,其名字为传统地,其名字为 BuiltIn。2.2.然后设备管理器在进行初始化时使用注册然后设备管理器在进行初
12、始化时使用注册信息检查器为它需要安装的各个驱动读取信息检查器为它需要安装的各个驱动读取值为值为RootKey的键。的键。驱动的加载过程驱动的加载过程驱动的加载过程驱动的加载过程3.3.安装安装DLL,给每一个驱动创建一个给每一个驱动创建一个Active 键,键,然后调用然后调用ActivateDevice 或者或者 ActivateDeviceEx将将DLL注册为系统中的注册为系统中的一个设备驱动程序。一个设备驱动程序。4.4.ActivateDevice在在 HKEY_LOCAL_MACHINEDriversActive下创建一个新的键值。下创建一个新的键值。驱动的加载过程驱动的加载过程驱动
13、加载驱动加载APIl l设备驱动程序也能通过应用程序进行手动设备驱动程序也能通过应用程序进行手动的安装,这是的安装,这是ActivateDeviceEx的一个首的一个首选的功能。选的功能。l l安装驱动一个更老的方法是使用安装驱动一个更老的方法是使用RegisterDevice 与与 DeregisterDevice 主要内容主要内容l l概述概述l l流驱动接口流驱动接口l l设备驱动程序架构设备驱动程序架构l lUSB mouse 驱动开发示例驱动开发示例l lWindows CE 系统服务系统服务什么是流接口什么是流接口l l流接口驱动包括所有提供流接口函数的驱流接口驱动包括所有提供流接
14、口函数的驱动程序,不管由这个驱动控制的设备是什动程序,不管由这个驱动控制的设备是什么类型。么类型。l l典型的流接口驱动程序有:典型的流接口驱动程序有:文件系统驱动文件系统驱动文件系统驱动文件系统驱动(iostream,fstream)(iostream,fstream)COM,LPTCOM,LPT使用流接口使用流接口hSer=CreateFile(TEXT(“COM1:”),GENERIC_READ,0,NULL,OPEN_EXSITING,0,NULL);rc=ReadFile(hSer,&ch,1,&cBytes,NULL);TransmitCommChar(hSer,a);CloseH
15、andle(hSer);直接使用直接使用Win32文件系统文件系统API。创建一个流驱动程序创建一个流驱动程序1.1.写一个导出具体流接口的写一个导出具体流接口的DLL2.2.编译设备驱动程序编译设备驱动程序3.3.对注册表进行配置对注册表进行配置流接口函数流接口函数函数名说明XXX_Close关闭以hOpenContext标识的设备上下文。XXX_Deinit由设备管理器调用来删除对某一设备的初始化信息。XXX_Init由设备管理器调用来对某一设备进行初始化。XXX_IOControl向设备发送命令XXX_Open打开一个设备以进行读、写或者既读又写。当应用调用CreateFile来打开某一
16、个设备文件名时将间接地调用这一个函数。XXX_PowerDown停止向设备供电。只有在软件控制下关机的设备上才可用。XXX_PowerUp恢复向设备供电XXX_Read从设备读取数据XXX_Seek在设备中移动数据指针XXX_Write向设备写数据构建设备驱动程序构建设备驱动程序l l构建设备驱动程序与构建一个构建设备驱动程序与构建一个DLL一样简一样简单。单。l l可以使用可以使用Platform Builder与与EVC+。只只需创建一个需创建一个Windows CE DLL项目项目,输出输出适当适当 的入口点,然后编写代码。的入口点,然后编写代码。l l常犯的一个错误是没有将入口点声明为
17、常犯的一个错误是没有将入口点声明为 extern C,因此因此 C+编译器就不能处理输编译器就不能处理输出的函数名。出的函数名。注册表设置注册表设置l l在在 Project.reg中中:HKEY_LOCAL_MACHINEDriversBuiltInSampleHKEY_LOCAL_MACHINEDriversBuiltInSample Dll=mydriver.Dll Dll=mydriver.Dll Prefix=DEM Prefix=DEM Index=dword:1 Index=dword:1 Order=dword:0 Order=dword:0 FriendlyName=Demo
18、 Driver FriendlyName=Demo Driver Ioctl=dword:0 Ioctl=dword:0注册表设置注册表设置l lOrder给所有的驱动设置相对安装顺序。给所有的驱动设置相对安装顺序。给所有的驱动设置相对安装顺序。给所有的驱动设置相对安装顺序。Order Order 为为为为0 0的驱动先安装,依次安装的驱动先安装,依次安装的驱动先安装,依次安装的驱动先安装,依次安装OrderOrder为为为为1,2,1,2,的驱的驱的驱的驱动。动。动。动。OderOder可以让开发者保证有相到依赖关系可以让开发者保证有相到依赖关系可以让开发者保证有相到依赖关系可以让开发者保证
19、有相到依赖关系的多个驱动以适当的顺序进行安装。的多个驱动以适当的顺序进行安装。的多个驱动以适当的顺序进行安装。的多个驱动以适当的顺序进行安装。l lIndex指定在文件系统中的驱动名的数字部分。在默指定在文件系统中的驱动名的数字部分。在默指定在文件系统中的驱动名的数字部分。在默指定在文件系统中的驱动名的数字部分。在默认情况下,带有前缀认情况下,带有前缀认情况下,带有前缀认情况下,带有前缀COMCOM的驱动在文件系统的驱动在文件系统的驱动在文件系统的驱动在文件系统中分配名字为中分配名字为中分配名字为中分配名字为 COM1COM1,下一个即为下一个即为下一个即为下一个即为COM2COM2。为为为为
20、了保证驱动总是安装成了保证驱动总是安装成了保证驱动总是安装成了保证驱动总是安装成COM2COM2,必须提供必须提供必须提供必须提供Index=2Index=2。演示演示:使用使用emulator编写一个流接口驱动编写一个流接口驱动程序并使用它程序并使用它驱动是如何工作的驱动是如何工作的1.1.When CE启动时启动时,Device.exe根据注册表中根据注册表中的设置安装所有的驱动程序。的设置安装所有的驱动程序。2.2.当安装当安装mydriver.dll时,时,device.exe 调用调用 DEM1_Init。3.3.Application程序调用程序调用CreateFile(“DEM1
21、”)驱动是如何工作的驱动是如何工作的(2)4.4.Coredll.dll 处理处理API调用并切换到调用并切换到 device.exe5.5.Device.exe 调用调用mydriver.dll 的的DEM1_Open。6.6.CreateFile返回返回DEM1_Open的的retval设备功能栈设备功能栈硬件硬件Windows CE DDK API设备驱动程序设备驱动程序设备管理器设备管理器(device.exe)应用程序应用程序主要内容主要内容l l概述概述l l流驱动接口流驱动接口l l设备驱动程序架构设备驱动程序架构l lUSB mouse 驱动开发示例驱动开发示例l lWindo
22、ws CE 系统服务系统服务驱动架构驱动架构驱动的类型驱动的类型内置与流安装机制内置与流安装机制l l通常内置驱动程序根据注册键值安装在通常内置驱动程序根据注册键值安装在 GWES进程空间进程空间l l总线驱动由总线驱动由Device.exe根据键值进行安装根据键值进行安装l l可安装的流驱动或其它驱动由可安装的流驱动或其它驱动由Device.exe根据总线驱动或注册检查器进行安装。根据总线驱动或注册检查器进行安装。设备管理器设备管理器l l用户级进程继续运行用户级进程继续运行l l与内核、注册表交互的单独应用程序,以与内核、注册表交互的单独应用程序,以及流接口驱动及流接口驱动DLL。l l提
23、供提供ActivateDevice 与与 DeactivateDevice API。设备管理器设备管理器l l包括包括IO资源管理器资源管理器l l安装注册表检查器安装注册表检查器(RegEnum.dll),并由并由这一个注册表检查器根据注册表进行驱动这一个注册表检查器根据注册表进行驱动的安装的安装l l提供电源通知回调函数提供电源通知回调函数跟踪所有已安装的驱动程序,给设备接口发出跟踪所有已安装的驱动程序,给设备接口发出跟踪所有已安装的驱动程序,给设备接口发出跟踪所有已安装的驱动程序,给设备接口发出拉入或删除的通知拉入或删除的通知拉入或删除的通知拉入或删除的通知设备管理器设备管理器 l l设
24、备驱动程序的安装过程设备驱动程序的安装过程DEVICE.EXEKernelKernelI/O Resource Manager(part of Device.exe)REGENUM.DLLPCIBUS.DLLloadsloadsloadsloadsloadsloadsDEVICE.EXEDEVICE.EXEI/O Resource ManagerI/O Resource Manager(part of Device.exe)(part of Device.exe)REGENUM.DLLREGENUM.DLLPCIBUS.DLLPCIBUS.DLL注册表枚举器注册表枚举器l l注册枚举器是注册枚
25、举器是注册枚举器是注册枚举器是RegEnum.dllRegEnum.dlll lDevice.exeDevice.exe根据根据根据根据HKEY_LOCAL_MACHINEDriversRootKeyHKEY_LOCAL_MACHINEDriversRootKey安安安安装注册枚举器装注册枚举器装注册枚举器装注册枚举器l l注册枚举器给每一个要安装的驱动程序扫描表项注册枚举器给每一个要安装的驱动程序扫描表项注册枚举器给每一个要安装的驱动程序扫描表项注册枚举器给每一个要安装的驱动程序扫描表项l l注册枚举器是可重入的,并支持分级使用注册枚举器是可重入的,并支持分级使用注册枚举器是可重入的,并支持
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 软件 开发 导论

限制150内