当前位置:首页 > 电源 > 数字电源
[导读]摘 要:μClinux是一种面向嵌入式微处理器的微型操作系统,已经在嵌入式操作系统中占有重要地位。在此介绍FTDI公司的USB芯片FT245BL的主要性能、工作原理,并将其应用在Blackfin ADSP-BF533微处理器的嵌入式开发平台

摘 要:μ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),用以产生中断。

[!--empirenews.page--]
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个参数传递给中断处理函数,可以利用它来传递一些必要的信息。该中断处理程序如下:[!--empirenews.page--]

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端口通信。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

英国广播公司《科学焦点杂志》网站5月22日刊登了题为《什么是摩尔定律?如今是否仍然适用?》的文章,摘要如下:

关键字: 摩尔定律 半导体 芯片

据业内消息,近日高通公司的CEO Cristiano·Amon在风投会议上表示,大家在关注经济增长时也开始关心芯片,在这个数字化转型和数字经济成为重要部分的时代,芯片对于提高效率是必须的,芯片的重要性正在被普遍接受,未来...

关键字: 高通公司 芯片

作为全球豪华汽车巨头,宝马在未来的电动汽车上也开始加大投资,这一次他们是多方下注,英国牛津的工厂还是战略核心,日前又透露说在中国投资上百亿生产电动车,今晚宝马公司又宣布在美国投资17亿美元,约合人民币123亿元。

关键字: 宝马 芯片 供应商

周四美股交易时段,受到“台积电预期明年半导体行业可能衰退”的消息影响,包括英伟达、英特尔、阿斯麦等头部公司均以大跌开盘,但在随后两个小时内纷纷暴力拉涨,多家千亿美元市值的巨头较开盘低点向上涨幅竟能达到10%。

关键字: 台积电 半导体 芯片

在需求不振和出口受限等多重因素的影响下,全球半导体厂商正在经历行业低迷期。主要芯片厂商和设备供应商今年以来股价集体腰斩。

关键字: 芯片 厂商 半导体

在半导体制造中,《国际器件和系统路线图》将5nm工艺定义为继7nm节点之后的MOSFET 技术节点。截至2019年,三星电子和台积电已开始5nm节点的有限风险生产,并计划在2020年开始批量生产。

关键字: 芯片 华为 半导体

北京时间10月18日消息,富士康周二表示,希望有一天能够为特斯拉公司生产汽车。眼下,富士康正在加大电动汽车的制造力度,以实现业务多元化。

关键字: 富士康 芯片 半导体 特斯拉

近日,中国工程院院士倪光南在数字世界专刊撰文指出,一直以来,我国芯片产业在“主流 CPU”架构上受制于人,在数字经济时代,建议我国积极抓住时代机遇,聚焦开源RISC-V架构,以全球视野积极谋划我国芯片产业发展。

关键字: 倪光南 RISC-V 半导体 芯片

新能源汽车市场在2022年有望达到600万辆规模,为芯片产业带来较大的发展机遇。2022年,我国芯片供应比去年有所缓解,但仍紧张。中期来看,部分类别芯片存在较大结构性短缺风险,预计2022年芯片产能缺口仍难以弥补。这两年...

关键字: 新能源 汽车 芯片

汽车芯片和半导体领域要深度地融合,不仅仅是简单的供需关系,应该是合作关系,把汽车芯片导入到整车厂的应用。为缓解汽车产业“缺芯”,国内汽车芯片产业正探索越来越多的方式完善生态。为了促进汽车半导体产业的快速发展,弥补国内相关...

关键字: 智能化 汽车 芯片

数字电源

15504 篇文章

关注

发布文章

编辑精选

技术子站

关闭