首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于μCLinux的USB芯片FT245BL驱动程序实现 02

基于μCLinux的USB芯片FT245BL驱动程序实现 02

读取函数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端口通信。
返回列表