基于μCLinux的USB芯片FT245BL驱动设计
函数调用成功返回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端口通信。
评论