网站大量收购闲置独家精品文档,联系QQ:2885784924

《 第八章WinCE设备驱动开发终稿.ppt

  1. 1、本文档共100页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《 第八章WinCE设备驱动开发终稿.ppt

嵌入式系统开发应用基础 李 登 峰 内置驱动程序的模型 图中,内置驱动程序可以采用单层和分层结构来编写,图中最顶端的是GWES它负责直接加载内置驱动程序,不是通过设备管理器加载的。 流接口的设备驱动模型 图中,流接口驱动可以分为单层或分层模型实现,它们都通过设备管理器加载的。所有驱动的管理、设备管理都是流驱动和实现所需的流驱动接口。 设备管理器在第五章已经详细介绍过,这里再提一下设备的初始化过程: (1)当系统冷启动后,首先运行操作系统内核NK.exe; (2)NK.EXE根据注册表[HKEY_LOCAL_MACHINE\init]下的内容陆续启动一些其它的进程,此时Device.exe进程被启动; (3)Device.exe进程被启动后,进行一系列自身的初始化工作,按照顺序会先初始化本身的一些数据结构,再初始化I/O资源管理器和电源管理器,以便完成设备管理功能 (4)Device.exe根据注册表的设置,加载BusEnum.Dll,Device.exe本身的初始化结束。 (5)Device.exe在注册表[HKEY_LOCAL_MACHINE\Driver\RootKey]下读取总线枚举器的位置。 (6)根据RootKey的值,Device.exe会加载总线枚举器。 (7)BusEnum.dll中的Init函数会遍历[HKEY_LOCAL_MACHINE\Driver\BuiltIn]下的每一个子键。并读取这些子键下的注册信息,并加载驱动程序。 (8)设备初始化结束。 在第(7)步中,Init函数读取这些子键的信息而后加载驱 动,那么这些子键的注册信息都代表什么意义,这里有一个 简单的例子: [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\LED] Dll = Led.dll Prefix=LED Index = dword:1 Order = dword:0 FriendlyName = LED Driver “DLL”=”Led.dll”:表示此驱动程序编译后为Led.dll。 Prefix=LED:设备名称的前缀,它表明Led.dll的导出函 数命名是以LED开头的,如LED_Init()等。 Index = dword:1:指定驱动程序的索引,这里等 于1,说明在使用CreateFile()函数打开程序时,第一个参数 为LED1(即设备的名称)。Prefix项与Index项组成了设备的 名称,在第五章设备管理里关于设备名称管理相关内容中有 介绍。Order = dword:0:驱动的加载顺序,数字越小则越 早被加载,它有助于解决驱动之间的依赖关系。 FriendlyName = LED Driver:顾名思义,它是一个更友 好的名称,帮助使用者更好地理解驱动的作用。 以上列出的项不是必须选项,某些驱动不必包含所有项,另 外,某些功能更多的驱动还会有更多的表项来进行配置。 1)使用CEDDK函数 流接口驱动函数 在上一节中,我们讲了有关WinCE设备驱动的知识,最后还详细讲解了流接口驱动的开发,那么这一节我们就在实验板上实际开发一个流接口驱动,通过动手开发驱动来真正掌握流接口驱动的开发。 第一小节介绍对板上GPIO一个引脚开发一个驱动程序; 第二小节介绍开发一个连接在GPIO上的设备的驱动;最后一节则为综合实例,利用前面两节开发的驱动完成一个温度控制系统。 通过这样的学习步骤,全面掌握流接口驱动的开发和应用。 DS18B20可以从VDD供电,也可直接从数据线DQ供电,因此VDD为可选的电源引脚,它的测温范围为-55℃ ~ +125℃,在-10℃ ~ +85℃范围内它的精度为±0.5℃。典型温度转换时间为200ms。它的温度分辨率可编程确定为9~12位,上电默认为12位。12位分辨率时其数据格式如表所示: 12位分辨率时其数据格式 DS18B20接线图 BOOL GPF_Deinit(DWORD hDeviceContext) { BOOL bRet = TRUE; RETAILMSG(1,(TEXT(USERGPF: GPF_Deinit\r\n))); return TRUE; } BOOL GPFGpioInit() { RETAILMSG(1,(TEXT(GPF_Gpio_Setting\r\n))); //设定GPF0为输出 s2440IOP-rGPFCON = (s2440IOP-rGPFCON ~(3 0)) | (10); return TRUE; } DWORD GPF_Init(DWORD dwContext) { RETAILMSG(1,(TEXT(GPF_Init\r\n))); Virtual

文档评论(0)

czy2014 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档