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 重要数据结构
上一篇:模块化UPS设计方案解析
下一篇:3D立体眼镜技术方案解析
- •ADI宣布Sensinel by Analog Devices心肺管理(CPM)系统获得美国FDA 510(k)认证并正式上市2024-03-07
- •人工智能安全关键型系统中的验证和确认2024-02-29
- •Omdia:预计 L3 及以上自动驾驶系统平均配备 5-8 个毫米波雷达2023-02-23
- •研究显示近半数美国司机将高级辅助驾驶系统当自动驾驶用2022-10-12
- •日本光伏发电系统也开始“缺芯”了2021-07-14
- •Cadence推出下一代Palladium Z2和Protium X2系统2021-04-06
- •思特威全新推出SC910GS与SC410GS,全面赋能智能交通系统2021-01-07
- •Xsens的MTi-100 系列IMU 为UWB 信标系统提供强大支持2020-09-02
- •业界首创!支持异常检测系统等所需的高速放大2020-05-21
- •亚马逊将开始出售其无人便利店Go系统2020-03-10