您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

基于μCLinux的USB芯片FT245BL驱动步伐实现

发布日期:2011-04-11

摘 要:μClinux是一种面向嵌入衰落处理惩罚器的微型操纵体系,已经在嵌入式操纵体系中占据紧张职位地方。在此先容FTDI公司的USB芯片FT245BL的重要性能、事变原理,并将其应用在Blackfin ADSP-BF533微处理惩罚器的嵌入式开辟平台上,阐明在μClinux下编写与加载USB接口芯片FT245BL的驱动步伐要领,实现了DSP主板的USB端口通讯。
关键词:μClinux;嵌入式体系;FT245BL;配置驱动步伐


0 引 言
    μClinux是针对嵌入式控制范畴的操纵体系,它承继了Linux内核的绝大部分特性,专为没有内存办理单位MMU的嵌入衰落处理惩罚器而计划。它内核小,服从高,源代码开放,包括了完备的TCP/IP网络协议。ADSP-BF533是ADI公司Blackfin系列的高速数字信号处理惩罚器芯片。Blackfin系列是ADI与Intel连合开辟的表现高性能体系布局的首款第四代DSP产品,16位定点DSP内核,新型指令布局,支持C/C++编程,主频达600 MHz,内核电压1.2 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真个没备驱动步伐,用户只需举行须要的硬件计划和大略的软件编程,以是大大低落了开辟难度。
1.1 成果布局
    FT245BL是FTDI公司的一款并行FIFO双向数据传输的USB芯片,对付微处理惩罚器它提供8位并行数据总线D0~D7,对付外部主机是标准串行总线或假造接口,其数据传输速率最高可达1 MB/s,提供USBl.1/2.O范例的全速物理接口,支持UHCI/OHCI/EHCI主控制器。
    FT245BL芯片的内部体系布局框架图如图1所示,芯片重要由3.3 V稳压器、USB收发器、串行接口引擎(SIE)、USB协议引擎和先辈先出(FIFO)控制器、6 MHz振荡器、8×倍频器、USB锁相环、复位器、E。PROM接口等构成。其内部设置了2个FIFO数据缓冲区,一个是128 B的吸取缓冲区;一个是384 B的发送缓冲区。串行接口引擎用来完成USB数据的串/并双向转换;USB协议引擎用于办理来自USB配置控制端口的数据流,实现USB主机控制器必要的USB底层协议。
1.2 事变原理
    DSP与FT245BL接口框图如图2所示。主板CPLD用AMS[0:3]和高5位地点线(A19~A15)举行译码;FT245BL的TXE和RXF信号在查问地点有效时,通过DSP读取其状态,果断是否发送数据或吸取数据;TXE用于果断发送FIFO是否满,0为不满,1为满,当TXE为0时,外部DSP向发送FIFO缓冲区写数据,直到发送数据全部写入;RXF用于果断吸取FIFO是否有数据,只要数据个数≥1,RXF就为低,关照DSP可以读取数据。FT245BL的RD和WR信号在读写地点有效时,分别与DSP的ARE和AWE相连,DSP可以读取吸取数据和写入发送数据。

1.3 电路计划
    FT245BL芯片利用主板上的3.3 V和5 V电源供电,主板对外作为一个USB配置。USB总线的电源线连接在芯片的复位引脚RESET上,如许包管了USB芯片平常处于复位状态。

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

2 FT245BL驱动步伐的编写
    这里以ADI公司的ADSP-BF533为例,先容USB接口芯片FT245BL在μClinux下驱动步伐的编写。依据FT245BL芯片的结会商接口计划,决定将其作为字符配置来开辟它的驱动步伐。所用开辟平台的硬件布局如下:

   
2.1 确定配置的配置名称和主配置号
    主配置号是内核辨认差别范例配置的惟一标识,内核利用主配置号将配置与相应的驱动步伐映射起来。开辟新的驱动步伐,必须找到一个还未被利用的主配置号,分派给本身的字符配置。主配置号的确定可以通过两种要领:一是静态定义;二是动态分派。该驱动采取的是静态主配置号,在ft245b1.C文件中直接定义设置为254,#define ft245bl_major 254。
2.2 确定编写必要的file-operations数据布局中的成果函数
    该驱动文件ft245b1.C中定义的file_operations数据布局:

   
2.3 配置的注册与刊出
    配置驱动在调用前必须起首向体系注册,这时就实行加载函数static int_init ft245bl_init(void)。该函数的内核语句是register_chrdev(ft245bl_major,FT245BL_DEV,&ft245bl_fops)字符注册函数。此中,ft245bl_major是配置驱动向体系申请的主配置号;FT245BL_DEV是USB配置的名称;ft245bl_fops是之前定义为file_operations数据布局的各个成果函数的文件指针。该函数返回值为0,表现注册告成;返回-INVAL,表现申请的主配置号非法;返回-EBUSY,表现该配置号正在利用。配置注册告成后,配置名会出如今体系的/proc/devices文件中。
    配置有注册就有卸载,卸载字符配置必要调用函数unregister_chrdev(ft245bl_major,FT245BL_DEV),参数有主配置号和配置名两个,USB退出驱动,用staticvoid_exit ft245bl_exit(void)函数。
2.4 编写相应的成果函数
    对付每一个配置驱动步伐来说,都有一些与此配置密切相干的成果函数,通常对付块配置大概字符配置来说,都存在着诸如打开、封闭、读、写这一类的操纵。当举行体系调用时,将主动地利用驱动函数中特定的函数来实现详细的操纵。打开函数open()重要完成以下操纵,即查抄配置错误(诸如配置未就绪或相似的硬件题目),要是是初次打开,则初始化配置;读取次配置号;分派和填写要放在file→private-data内的数据布局;增长利用计数。读函数read()用来从外部配置中读取数据,当其为NULL指针时,将引起read()体系调用返回-EINVAL(“非法参数”)。函数返回一个非负值表现告成地读取了多少字节。写函数write()向外部配置发送数据,要是没有这个函数,返回一个-EINVAL;要是返回值非负,就表现告成写入的字节数。当配置被封闭时调用release()这个操纵,偶然也称为close()。它应该完成以下操纵:利用计数减1;开释open分派在file→rivate-data中的内存;在末了一次封闭操纵时封闭配置。下面是FT245BL驱动步伐读函数read()的实现:


    读取函数ft245bl_read通过果断USB芯片RXF管脚的状态来处理惩罚吸取到的数据,要是RXF为0,表现吸取缓冲区(RX FIFO)中至少有1个数据,处理惩罚器读取一个数据后重新回到果断;要是RXF为1,表现芯片没有吸取到数据,这时步伐启动停止等待变乱函数wait_event_interruptible,内核从USB配置驱动中开释出来,运行其他步伐,直到有新的数据到来时,内核起首实行停止处理惩罚函数ft245bl_rx_handler,将停止标记位irqflag置1,唤醒等待行列步队ft245bl_waitqueue,然后再回到读取函数中连续运行。
2.5 停止处理惩罚
    配置驱动步伐通过调用停止申请函数申请停止,其格局为:


    函数调用告成返回0值,返回-INVAL表现停止号高出范畴大概handler=NULL;返回-BUSY表现停止已经被占用且不克不及共享。此中,handler是停止处理惩罚子步伐指针,停止孕育产生时主动调用该函数;参数irq为停止号;pt_regs为停止产生之前寄存器的映像,很少利用;irqflags控制停止举动。irqflags=SA_INTER-RUPT表现它在运行时将克制全部的停止;irqflags=SA_SHIRQ表现共享此停止处理惩罚步伐;devname为配置名称;dev_id用于支持停止的共享,它将作为第2个参数转达给停止处理惩罚函数,可以利用它来转达一些须要的信息。该停止处理惩罚步伐如下:

3 实现驱动步伐的加载
    驱动步伐可以根据两种方法编译:一种是静态编译进内核;另一种是编译成模块以供动态加载。该配置驱动步伐采取静态编译进μClinux内核。下面以在嵌入式μClinux体系中需新建一个USB字符型配置FT245BL为例,先容配置驱动步伐的添加的一系列步调。
3.1 配置相干信息
    起首,将编写好的驱动步伐复制到μClinux体系的文件目次中。新建ft245bl目次同一办理USB配置的驱动文件包括C文件、头文件、编译文件、配置文件,存放于目次μClinux-dist/linux-2.6.x/drivers/char/下,在ft245bl下新建Makefile,并在下面两个编译文件中添加编译指令:


    在ft245bl下新建配置文件Kconfig,添加驱动名FT245BL_DRIVER、菜单选项名称USB ft245bl Driv-er、菜单有效选项DRIVER_FT245BL及驱动阐明,代码如下:


    第1项是μClinux体系为配置驱动创建的驱动文件名及地点目次;第2项是配置范例;第3项是配置驱动文件的权限;第4,5项分别为用户ID和组ID;第6,7项为主配置号和次配置号;第8,9,10项分别为次配置号的肇始号码、增量和数量。
3.2 编译驱动步伐
    在/home/μClinux/μClinux-dist目次下运行make menueonfig举行配置,在字符配置选项中可以望见方才添加的FT245BL Driver选项,选中它。通过make的一系列编译,全部内核和应用步伐源代码将被编译,编译结束后将孕育产生二进制文件uImage。
3.3 加载驱动步伐
    这里的BF533主板中数据存储器SDRAM大小为32 MB,地点为0~Ox02000000;异步存储区BootFLASH大小为4 MB,地点为0x20000000~0x203FFFFF。在/home/μClinux/μClinux-dist运行指令下,把uImage文件拷贝到/svr/tftp目次,tftp是一个大略的ftp下载:
    cp images/uImage/svr/tftp
    打开超等终端μClinux,接通目标板电源或按复位键,目标板上的u-boot主动启动,通过超等终真个串口输入下令:


    到此,在μClinux中添加配置驱动步伐的事变已经完成。


4 结 语
    先容了基于Blackfin ADSP-BF533开辟板,在μClinux环境下USB芯片FT245BL驱动步伐的计划与加载。简述了配置驱动步伐开辟的进程,并给出了读函数和停止函数的实例,阐明白在μiClinux下怎样添加FT245BL驱动步伐的要领,实现了DSP主板的USB端口通讯。