你好,游客 登录 注册 搜索
背景:
阅读新闻

向linux嵌入式系统移植实时设备驱动程序

[日期:2006-10-25] 来源:  作者: [字体: ]
典型RTOS应用I/O架构

  下面描述一个典型的I/O配置(仅仅输入)和它向主要应用程序传递数据的路径处理过程依次如下:

  * 一个硬件中断触发一个中断服务例程的执行。

  * 中断服务例程做基本的处理和完成本地的输入操作,或者让RTOS调度延时的处理。在一些情况下,延时处理过程由在Linux里面被叫做用户进程来处理,在这里就是通常的RTOS任务。

  * 无论在何时何地获得数据(中断服务例程或者延时切换),准备好的数据被放进队列(RTOS中断服务例程能够访问应用程序队列通过应用程序接口(API)和其它进程间通信 (?IPC),请看下面的API表)。

  * 一个或者多个应用任务然后从队列读消息,来取出数据。

  在传统的RTOS和Linux之间的典型I/O的比较输出常常由类似的机制来完成。替代使用write()或者相似的系统调用, 一个或者多个RTOS应用程序任务,将准备好的数据放进队列。队列中的数据由以下过程取出:一个I/O程序或者响应”准备好发送”中断的中断服务例程,一个系统时钟,或者其它阻塞在获取队列中的应用任务,然后直接执行I/O操作(可以是轮询,也可以是通过 DMA)。

  将RTOS I/O 映射进 Linux

  上面描述的基于队列的生产/消费I/O模型,仅仅是很多种在传统设计中所采用的特别方法之一。让我们继续用这个直接的例子,来讨论几种在嵌入式Linux下的实现:

  大规模移植到用户空间

  对于勉强了解Linux设备驱动设计细节,或者非常匆忙的开发者,可能将大多数这样基于队列设计程序完整无缺地移植到用户空间。在这种驱动程序映射配置中,内存映射的物理I/O口通过函数mmap()提供的指针可以在用户空间操作。
linux
相关资讯      
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款