Linux系统环境下的FPGA驱动方案解析

来源:元器件交易网 作者:—— 时间:2012-04-25 09:53

        Linux操作系统的全称是GNU/Linux,它是由GNU工程和Linux内核两个部分共同组成的一个操作系统。该系统中所有组件的源代码都是自由的,可以有效保护学习成果,因而在嵌入式领域得到了广泛的应用。

  FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,该器件是作为专用集成电路ASIC (Application Specific Integrated Circuit)领域中的一种半定制电路而出现的,它的出现既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。在通信行业、传输网、医疗仪器、各种电子仪器、安防监控、电力系统、汽车电子以及消费类电子中都大面积使用。随着产品研发周期的逐步缩短,定制型产品的开发使FPGA在后面的应用面越来越广。例如在2G和3G通信,以及以后的4G通信和wimax等等通信类设备中,它与DSP、MPU一起将大量出现在其中。

  S3C2410微处理器是一款由Samsung为手持设备设计的低功耗、高度集成的微处理器,采用272脚FBGA封装,内含一个ARM920T内核和一些片内外围设备。在时钟方面,该芯片集成了一个具有日历功能的RTC和具有PLL (MPLL和UPLL)的芯片时钟发生器。MPLL产生的主时钟能够使处理器工作频率最高达到203MHz。这个工作频率能够使处理器轻松运行于Windows CE,Linux等操作系统并进行较为复杂的信息处理。为此,本文以S3C2410上使用Altera公司的EP2S30F67214为例,系统地介绍了在Linux系统环境下的FPGA的驱动方法。

  基本原理

  Linux下的设备驱动程序通常是一个存在于应用程序和实际设备间的软件层。许多设备驱动都是与用户程序一起发行的,可以帮助配置和存取目标设备。

  在Linux下驱动FPGA,其本质上就是字符设备的驱动,惯例上它们位于/dev目录。

  1.1 主次编号

  在内核中,dev_t类型(在中定义)用来持有设备编号。通常2.6内核版本限制在255个主编号和255个次编号。

  建立一个字符驱动时,需要做的第一件事是获取一个或多个设备编号。其必要的函数是regis-ter_chrdev_region,设计时可在中声明:

  int register_chrdev_region(dev_t first,unsigned int count,char*name);

  如同大部分内核函数一样,如果分配成功,register_chrdev_region的返回值将是0。出错时,则返回一个负的错误码,但不能存取请求的区域。

1.2 重要数据结构

资讯排行榜

  • 每日排行
  • 每周排行
  • 每月排行

华强资讯微信号

关注方法:
· 使用微信扫一扫二维码
· 搜索微信号:华强微电子