uClinux下中断驱动的I/O方式

豆豆网   技术应用频道   2008年07月12日  【字号: 收藏本文

内容摘要:本文在讨论uClinux下中断处理程序和底半部分的开发的基础上,以一种电信E1线路和以太网互联设备上数据流设备为例,讲述中断驱动的I/O方式的驱动程序开发。

  摘要 在开发数据流设备的驱动程序时,采用中断驱动的I/O方式结合缓冲区的使用,可以将数据的接收和系统调用read隔离开来,提高设备在系统中的运行效率。本文在讨论uClinux下中断处理程序和底半部分的开发的基础上,以一种电信E1线路和以太网互联设备上数据流设备为例,讲述中断驱动的I/O方式的驱动程序开发。主要过程是在中断期间填充数据到缓冲块,并用链表将缓冲块串接起来;在系统调用read期间从缓冲块取走数据,再将缓冲块放到自由链表中备用。涉及驱动程序中常用的阻塞式I/O和自旋锁等技术应用。通过使用上述多种技术开发的数据流设备驱动程序,确保系统稳定高效的动作。

  关键词 uClinux 中断驱动 I/O方式

  引 言

  在32位微处理器逐渐成为嵌入式系统主流的同时,嵌入式应用也变得越来越复杂。许多嵌入式系统都不得不借助于专用的操作系统来支撑自己的应用。uClinux作为类Unix操作系统,继承了Linux的各种优秀的品质,成为首选的嵌入式系统的操作系统。

  为自己的设备在操作系统下添加驱动程序,是嵌入式设计必不可少的部分。针对不同的设备类型,选择合适的驱动程序的模式,同样也是十分重要的。通常的设备驱动采用直接I/O的方式,如存储器、看门狗等;而对于象网络这样的数据流设备的驱动,则应该用到中断机制。

  本文以uClinux为背景,以一种数据流设备为目标,介绍中断驱动的I/O设备驱动的开发。

  1 应用背景

  1.1 硬件描述

  本文介绍的驱动程序是应用在一种电信E1线路和以太网互联设备上的。它是旁路接收E1数据并将其发送到以太网的某一台服务器上,在服务器上对E1的话路和信令时隙分析。

  该设备中的处理器是采用三星公司出品的网络型ARM处理器S3C4510B。E1线路接口采用Dallas半导体公司的专用El接口单元(LIU)芯片DS2148,它完成波形整理、时钟恢复和HDB3解码。DS2148将整理后的E1数据流送给一片Altera公司的Cyclone系列的FPGA(EPlC3T144C8),它将串行的E1数据流存入到FIFO,再通过ARM的32位外部总线将数据传送给ARM。ARM将数据打包通过以太网发送到服务器上。图l所示是本系统的硬件框图。本文主要介绍接在ARM的外部总线上的FPGA,在uClinux下的驱动程序中断机制的设计。

作者:邱华 花骏 谢自美    责编:豆豆技术应用

正在加载评论...