首页 » 技术文章 » 基于μCLinux的USB驱动程序实现

基于μCLinux的USB驱动程序实现

作者:  时间:2011-03-09 13:56  来源:EDN

  0

  μCLinux是针对嵌入式控制领域的操作系统,它继承了Linux内核的绝大部分特性,专为没有内存管理单元MMU的嵌入式微处理器而设计。它内核小,效率高,源代码开放,包含了完整的TCPIP网络协议。ADSP-BF533ADI公司Blackfin系列的高速数字信号处理器芯片。 Blackfin系列是ADIIntel联合开发的体现高性能体系结构的首款第四代DSP产品,16位定点DSP内核,新型指令结构,支持CC++编程,主频达600 MHz,内核电压12 V,具有动态电源管理能力,功耗低,扩展能力强,被广泛应用于各种信号处理。

  这里使用基于Blackfin ADSP-BF533微处理器的μClinux开发板,在对外通信时需用到USB接口。结合实际情况,选择FTDI公司推出的USB芯片FT245BL。主要介绍USB芯片FT245BL的工作原理和电路设计,以及如何在μClinux操作系统下编写和添加其驱动程序的方法。

  1 FT245BL工作原理与电路设计

  传统USB芯片要求设计人员对USB的标准、Firmware编程及驱动程序的开发等有较深入的理解,工作量大,开发周期长,需要经验丰富的设计者才能完成;而FTDI(Future Technology Devices Intl.Ltd)公司推出的USB芯片FT245BL集成了微控制器,并且把实现USB通信协议的固件程序直接固化在芯片中,同时提供了PC端的没备驱动程序,用户只需进行必要的硬件设计和简单的软件编程,所以大大降低了开发难度。

  11 功能结构

  FT245BLFTDI公司的一款并行FIFO双向数据传输的USB芯片,对于微处理器它提供8位并行数据总线D0D7,对于外部主机是标准串行总线或虚拟接口,其数据传输速率最高可达1 MBs,提供USBl12O规范的全速物理接口,支持UHCIOHCIEHCI主控制器。

  FT245BL芯片的内部系统结构框架图如图1所示,芯片主要由33 V稳压器、USB收发器、串行接口引擎(SIE)USB协议引擎和先进先出(FIFO)控制器、6 MHz振荡器、倍频器、USB锁相环、复位器、EPROM接口等构成。其内部设置了2FIFO数据缓冲区,一个是128 B的接收缓冲区;一个是384 B的发送缓冲区。串行接口引擎用来完成USB数据的串/并双向转换;USB协议引擎用于管理来自USB设备控制端口的数据流,实现USB主机控制器需要的 USB底层协议。

  12 工作原理

  DSPFT245BL接口框图如图2所示。主板CPLDAMS[03]和高5位地址线(A19A15)进行译码;FT245BLTXERXF 信号在查询地址有效时,通过DSP读取其状态,判断是否发送数据或接收数据;TXE用于判断发送FIFO是否满,0为不满,1为满,当TXE0时,外部 DSP向发送FIFO缓冲区写数据,直到发送数据全部写入;RXF用于判断接收FIFO是否有数据,只要数据个数≥1RXF就为低,通知DSP可以读取数据。FT245BLRDWR信号在读写地址有效时,分别与DSPAREAWE相连,DSP可以读取接收数据和写入发送数据。

  13 电路设计

  FT245BL芯片使用主板上的33 V5 V电源供电,主板对外作为一个USB设备。USB总线的电源线连接在芯片的复位引脚RESET上,这样保证了USB芯片平时处于复位状态。

  当USB总线连接到主机时,电源线变高,RESET变高,最终导致RSTOUT变高,由于USBDP引脚配置了一个15 kΩ的上拉电阻连到RSTOUT引脚,使得芯片以全速状态连接到主机。FIFO控制器接口包括8位数据线D7D0、读RD、写WR、发送使能TXE、接收完毕RXF5个信号。由于FT245BL芯片没有片选线,所以信号都是经过主板CPLD内部的译码电路处理后才连接的。DSP采用中断机制读取 FIFO的数据,所以将RXF连接DSP的可编程端口(PF3),用以产生中断。

  2 FT245BL驱动程序的编写

  这里以ADI公司的ADSP-BF533为例,介绍USB接口芯片FT245BLμClinux下驱动程序的编写。依据FT245BL芯片的结构和接口设计,决定将其作为字符设备来开发它的驱动程序。所用开发平台的硬件结构如下:

  21 确定设备的设备名称和主设备号

  主设备号是内核识别不同类型设备的惟一标识,内核利用主设备号将设备与相应的驱动程序对应起来。开发新的驱动程序,必须找到一个还未被使用的主设备号,分配给自己的字符设备。主设备号的确定可以通过两种方法:一是静态定义;二是动态分配。该驱动采用的是静态主设备号,在ft245b1C文件中直接定义设置为254#define ft245bl_major 254 

相关推荐

Linux将进军汽车智能系统领域

Linux  汽车智能系统  2013-07-09

Android回归Linux核心怀抱

Google  Linux  Android  2012-11-01

EXT4数据损失bug影响Linux稳定版内核

EXT4  Linux  2012-10-25

Fedora Linux 18 延期至年底

Fedora Linux 18  2012-10-17

CEVA凭借90%的市场份额继续领导DSP IP市场

CEVA  DSP  2012-05-30

欧胜推出带有语音处理器DSP的下一代音频中枢

欧胜  DSP  2012-05-07
在线研讨会
焦点