嵌入式操作系统I/O驱动的研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式操作系统I/O驱动的研究   摘要:嵌入式操作系统I/O驱动系统的设计与实现是实现嵌入式操作系统应用的关键问题。 文章,首先给出I/O驱动的硬件设计;其次,针对硬件给出I/O驱动程序的模块初始化、模块的卸载、设备文件操作接口定义与实现的详细设计过程;最后,给出驱动模块的加载过程与测试方法。   关键词:嵌入式操作系统;驱动程序;内核;系统调用   中图分类号:TP316文献标识码:A文章编号:1009-3044(2008)09-11742-03      Research of I/O Driver of Embedded Operating System   XIAO Yao-nan, XIAO Liao-liang   (Hunan Railway Professional-Technology College, Zhuzhou 412001, China)   Abstract: The design and implementation of driver system of EOS is the key point for the application of EOS. In this paper, Firstly, the hardware design of the I/O driver is proposed; Secondly, the design of module initialization, module exit, interface definition and implementation of the equipment file operation is presented; Finally, the process of mounding the driver and the test method is presented.   Key words: EOS; Driver; Kernel; System Call      1 引言      随着微处理器技术的发展,嵌入式操作系统越来越微型化和专业化,嵌入式系统已经成为计算机应用领域的一个重要组成部分。根据应用场景设计硬件电路,裁剪系统内核,并量身定制应用场景驱动程序是目前嵌入式操作系统到实际应用的关键技术。为此,文章对嵌入式操作系统I/O驱动的硬件设计、I/O驱动程序设计、驱动模块的编译与测试三个方面进行了一些研究。      2 嵌入式操作系统I/O驱动的设计      2.1 I/O驱动的硬件设计   本文以S3C44B0X作为控制CPU,本系统利用74HC574对S3C44B0X的数据端口进行扩展,地址线BA20~BA22通LC138扩展,形成集成块的片选信号。当地址信号为0,I/O_CS0低电平有效,即选中IC12,当地址信号 0,I/O_CS2低电平有效,将选中其它集成块,精简I/O驱动扩展电路如图1所示。      2.2 I/O驱动程序设计   Linux操作系统的设备驱动程序运行在内核空间[2],而应用程序则运行在用户空间,通过系统调用或硬件中断完成从用户空间到内核空间的控制转移[3]。设备驱动模块的功能就是实现系统调用与中断处理,从而扩展操作系统内核的功能[4]。   设备驱动动态运行过程是首先调用入口函数init_module()实现驱动的加载,即调用register_xxx()函数,该函数完成设备驱动的初始化,如寄存器置位、结构体赋值等一系列工作,其中最重要的一个工作就是向内核注册该设备。注册成功后,该设备获得系统分配的主设备号、自定义的次设备号,并建立起与文件系统的关联。关联建立后上层用户程序可实现系统调用,即可对设备实施操作,比如open、read、write、ioctl等。最后通过调用unregister_xxx()卸载驱动,回收相应的资源,使设备的相应寄存器复位并从系统中注销该设备。设备驱动模块动态挂载、卸载和系统调用的全过程如图2所示。      以下将针对图1驱动模块硬件结构详细分析I/O驱动程序的编写方法并给出设计过程。   2.2.1 模块初始化   模块初始化module_init(Xiao_I/O_Opr_init)函数通过参数Xiao_I/O_Opr_init调用I/O端口驱动模块初始化函数static int_init Xiao_I/O_Opr_init(void),该函数利用系统函数void * ioremap(unsigned long offset, unsigned long size)为片选信号BA22~BA20分配内存I/O虚拟地址,从而设备驱动程序能访问I/O内存地址。同时,

文档评论(0)

heroliuguan + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档