基于FT245的LinuxUSB驱动的设计

合集下载

LINUX操作系统USB驱动程序

LINUX操作系统USB驱动程序

一、引言USB(Universal Serial Bus)即通用串行总线,是一种全新的双向同步传输的支持热插拔的数据传输总线,其目的是为了提供一种兼容不同速度的、可扩充的并且使用方便的外围设备接口,同时也是为了解决计算机接口的太多的弊端而设计的。

一个USB系统主要有三部分组成:USB互连、USB主机、USB设备三部分组成的,其结构如图1所示。

在编写USB设备驱动程序设计时,可以分为三部分编写:主机端设备驱动程序、主机控制器驱动程序设计和设备端驱动程序三部分,在本文中重点介绍主机端驱动程序的设计。

二、USB设备驱动程序的设计USB设备驱动程序的设计包括主机端设备驱动程序设计、主机控制器驱动程序设计和设备端驱动程序设计三部分组成。

主机端设备驱动程序就是通常说的设备驱动程序,它是主机环境中为用户应用程序提供一个访问USB外设的接口。

Linux为这部分驱动程序提供编程接口,驱动程序设计者只要按照需求编写驱动程序框架,通过调用操作系统提供的API接口函数可以完成对USB外设的特定访问。

主机控制驱动主要是对USB主机控制器的驱动,在大多数PC环境下,主机控制器都是由操作系统提供。

嵌入式设备一般都没有USB主机控制器,只是工作在Slave模式下。

如果要使USB具有主机功能,那么设备中需要选用一个带主机控制器的USB接口控制芯片,同时自己还要有实现该主机控制器的驱动程序。

目前Linux内核中只提供USB主机控制器的开放主机控制器和通用主机控制器接口两种规格,而这两种规格主要用在PC架构中。

USB主机端驱动程序与主机控制器的结构如图2所示。

其中USB核是Linux的一个子模块,集中定义了一组USB相关的数据结构、宏以及API函数。

USB设备驱动程序是常说的设备固件程序的一部分,提供设备信息与主机的通信接口。

设备端USB驱动程序设计由以下几部分处理程序组成。

初始化例程:完成描述符指针、端点、配置改变等操作。

数据传输例程:完成控制传输、批量传输、中断传输及同步传输等传输方式下的数据收发工作。

基于Linux的USB驱动研究与实现

基于Linux的USB驱动研究与实现

图1 USB分层结构2 Linux下的USB框架Linux下的USB框架分为三层,如图2所示。

USB的驱动可以分为三类:USB控制器的驱动、主机端USB设备的驱动、设备上的USB Gadget驱动。

USB core管理上层驱动查荣明(1980-),男,江苏苏州人,硕士研究生,工程师。

研究方向:嵌入式系统接口技术、底层驱动。

孔康(1989-),男,山东济宁人,硕士研究生,工程师。

研究方向:嵌入式系统接口技术。

石璐(1988-),男,河南商丘人,本科,工程师。

研究方向:嵌入式系统总体技术方案。

图2 Linux下的USB框架图本文研究的是主机端USB设备的驱动。

由于驱动本质上是基于Linux的USB core层提供的结构进行的,因此,有必要介绍相关数据结构。

USB相关的数据结构USB相关的数据结构前,需要及的几个逻辑概念:Device、ConfigurationEndpoint。

其中,Endpoint在前文中已介绍。

它们之间的关系可以用如图3[3]表示。

图3 逻辑关系图从图3可以看出,一个USB设备(device)通常包含一个或者多个配置(config),一个配置(config)通常包含一个或者多个接口(interface),一个接口(interface)通常包含零个或者多个端点(Endpoint)。

在Linux内核中,分别usb_device、usb_host_config、usb_interface、usb_host_ endpoint四个结构体。

USB四个结构体除了驱动所需要的其他成员变量外,其他要素基本对应四个相应描述符(descriptor),这几个结构图4 USB各结构体间的关系4 USB骨架程序介绍在Linux内核源码目录的drivers/usb/下,有一个usb-skeleton.c,提供了基于USB的骨架驱动程序,该程序针对的设备类型是海量存储设备。

本文针对的骨架程序是Linux V3.0.35版本下的程序。

基于Linux系统下USB鼠标驱动开发 毕业论文

基于Linux系统下USB鼠标驱动开发 毕业论文

目录摘要 ----------------------------------------------------------------------------------------------------------------------- IABSTRACT --------------------------------------------------------------------------------------------------------------- II 第一章绪论 ------------------------------------------------------------------------------------------------------------ 11.1课题研究的背景和意义 ---------------------------------------------------------------------------------------------- 11.1.1 课题研究的背景 ------------------------------------------------------------------------------------------------- 11.1.2 课题研究的意义 ------------------------------------------------------------------------------------------------- 1 1.3课题研究的内容 ------------------------------------------------------------------------------------------------------- 1第二章USB简介 ---------------------------------------------------------------------------------------------------- 22.1USB的沿革 ------------------------------------------------------------------------------------------------------------- 2 2.2USB的优点 ------------------------------------------------------------------------------------------------------------- 2 2.3USB的应用及发展趋势 ---------------------------------------------------------------------------------------------- 32.3.1 USB的扩展应用------------------------------------------------------------------------------------------------- 32.3.2 USB的发展趋势------------------------------------------------------------------------------------------------- 4 2.4USB接口类型 ---------------------------------------------------------------------------------------------------------- 4 2.5USB2.0规范------------------------------------------------------------------------------------------------------------- 5 2.6USB3.0简介------------------------------------------------------------------------------------------------------------ 5第三章USB系统架构与协议 ------------------------------------------------------------------------------------- 73.1USB系统拓扑结构 ---------------------------------------------------------------------------------------------------- 7 3.2USB设备逻辑结构 ---------------------------------------------------------------------------------------------------- 8 3.3USB描述符 ------------------------------------------------------------------------------------------------------------- 9 3.3USB数据传输方式 ---------------------------------------------------------------------------------------------------- 9 3.3USB数据流模型 ----------------------------------------------------------------------------------------------------- 103.3.1 控制传输 ------------------------------------------------------------------------------------------------------- 103.3.2 中断传输 ------------------------------------------------------------------------------------------------------- 113.3.3 批量传输 ------------------------------------------------------------------------------------------------------- 113.3.4 同步传输 ------------------------------------------------------------------------------------------------------- 12第四章LINUX系统内核及内核模块 ------------------------------------------------------------------------- 134.1L INUX体系结构------------------------------------------------------------------------------------------------------- 13 4.2L INUX内核架构------------------------------------------------------------------------------------------------------- 13 4.3L INUX内核目录结构 ------------------------------------------------------------------------------------------------ 14 4.4L INUX内核模块开发 ------------------------------------------------------------------------------------------------ 154.4.1 makefile -------------------------------------------------------------------------------------------------------- 154.4.2 安装和卸载内核模块---------------------------------------------------------------------------------------- 17 4.5L INUX内核配置与安装 --------------------------------------------------------------------------------------------- 18第五章LINUX USB系统与功能测试------------------------------------------------------------------------- 2325.1USB协议软件层次 -------------------------------------------------------------------------------------------------- 23 5.2L INUX USB架构------------------------------------------------------------------------------------------------------ 24 5.3M ASS S TORSGE --------------------------------------------------------------------------------------------------------- 24 5.4USB-HID --------------------------------------------------------------------------------------------------------------- 28第六章LINUX USB鼠标驱动程序设计---------------------------------------------------------------------- 316.1USB鼠标驱动程序分析 -------------------------------------------------------------------------------------------- 31 6.2URB --------------------------------------------------------------------------------------------------------------------- 33 6.3搭建开发平台 -------------------------------------------------------------------------------------------------------- 336.3.1 安装编辑工具 ------------------------------------------------------------------------------------------------- 336.3.2 安装和配置编译器------------------------------------------------------------------------------------------- 336.3.3 安装其他工具 ------------------------------------------------------------------------------------------------- 346.3.4 平台硬件构成 ------------------------------------------------------------------------------------------------- 346.3.5 平台软件构成 ------------------------------------------------------------------------------------------------- 36 6.4USB鼠标驱动程序详细设计-------------------------------------------------------------------------------------- 36总结 --------------------------------------------------------------------------------------------------------------------- 41致谢 --------------------------------------------------------------------------------------------------------------------- 42参考文献 ------------------------------------------------------------------------------------------------------------------ 43摘要随着计算机硬件飞速发展,外围设备日益增多,键盘、鼠标、调制解调器、打印机、扫描仪早已为人所共知,数码相机、MP3随身听接踵而至,这么多的设备,如何接入个人计算机?USB就是基于这个目的产生的。

基于FT245BM的简易USB接口开发

基于FT245BM的简易USB接口开发

基于FT245BM的简易USB接口开发基于FT245BM的简易USB接口开发摘要:FT245BM的主要功能是进行USB和并行I/O口之间的协议转换。

详细介绍FT245BM芯片的工作原理、内部结构、引脚分布及功能;给出基于FT245BM接口电路的典型设计及驱动和应用软件的编写方法。

关键词:FT245BMUSB接口并行I/O口引言1概述当前,USB外设的开发是一个热点。

由于USB总线具有传输速度快、占用资源少及真正的即插即用等优点,越来越受到业界的青睐。

可是,USB的开发要求设计人员对USB的标准、Firmware(固件)编程及驱动程序的编写等有较深入的理解,因此限制了USB的开发人员;而基于FT245BM芯片的USB产品开发,能够使研发人员在最短的周期内开发出相应的USB产品。

该芯片由FTDI (FutureTechnologyDevicesIntl.Ltd.)公司推出,使用简单、性能卓越,只要熟悉单片机编程及简单的VB、VC应用程序编程,就可很容易地进行用户产品开发。

2FT245BM芯片功能简介FT245BM的主要功能是进行USB和并行I/O口之间的协议转换。

芯片一方面可从主机接收USB数据,并将其转换为并行I/O口的数据流格式发送给外设;另一方面外设可通过并行I/O口将数据转换为USB的数据格式传回主机。

中间的转换工作全部由芯片自动完成,开发者无须考虑固件的设计。

FT245BM内部主要由USB收发器、串行接口引擎(SIE)、USB 协议引擎和先进先出(FIFO)控制器等构成,如图1所示。

USB收发器提供USB1.1/2.0的全速物理接口到USB总线,支持UHCI/OHCI主控制器;串行接口引擎主要用于完成USB数据的串/并双向转换,并按照USB1.1规范来完成USB数据流的位填充/位反填充,以及循环冗余校验码(CRC5/CRC16)的产生和检错;USB协议引擎管理来自USB 设备控制端口的数据流;FIFO控制器处理外部接口和收发缓冲区间的数据转换。

基于FT245RL的C8051F020与LABVIEW的USB接口设计

基于FT245RL的C8051F020与LABVIEW的USB接口设计
端口(文中使用 P3 口)置为开漏模式,否则不能读; (2) 单片机在开始对 FIFO 写数据前一定要把数据端
口置为推挽模式,否则不能写。 下面是一个完整的 F020 收发程序,它实现的功能
是:当从上位机接收到一个数据后,立即向上位机返回 一个同样的数据。
#include "C8051F020.h" #include "string.h" sbit USB_RD =P2^0; sbit USB_WR =P2^1; sbit USB_RXF=P2^2; sbit USB_TXE=P2^3; void PORT_Init (void)// 端口初始化 { P0MDOUT = 0x01; P2MDOUT = 0x03; // p2.0,p2.1 设为推挽;p2.2,p2.3 设 为开漏。 P3MDOUT = 0x00;// P3 设为开漏 XBR1 = 0x00; XBR2 = 0x40; // 开 启 交 叉 开 关 。 } void SysClk_Init (void)// 晶振初始化 { int i; OSCXCN = 0x67; for (i=0; i < 256; i++) ; while (!(OSCXCN & 0x80)) ; OSCICN = 0x88; } void ReadByte(void)// 单片机向 FT245RL 发送数据 { unsigned char Received; while(USB_RXF); { P3 = 0xFF; USB_RD = 0; Received = P3; USB_RD = 1; ACC=Received;
否正确收发数据,完成整个设计,设计流程如图 2 所示。
图 3 硬件电路图
4 安装 PC 机驱动程序 FIFO 公司提供了两种该芯片的驱动安装方法:一

基于Linux下nRF24L01设备驱动的设计

基于Linux下nRF24L01设备驱动的设计

基于Linux下nRF24L01设备驱动的设计林丽蓉;余红英;姜世杰;洪永学【摘要】nRF24L01是工作在2.4GHz-2.5GHz的ISM频段的单片无线收发器芯片,广泛应用于无线通信领域。

其通过SPI接口和外部控制器件进行数据交换,目前大多是通过I/O口软件模拟SPI时序来驱动nRF24L01,在此基础上本文提出了基于Linux下通过ARM的SPI接口来驱动nRF24L01的设计方法。

首先介绍了nRF24L01模块的性能特点,详细阐述了硬件和软件的设计要点,然后给出了嵌入式微处理器S3C2440和nRF24L01模块的连接图,介绍了如何用S3C2440的SPI接口的查询模式驱动nRF24L01,最后验证了驱动程序的正确性,从而实现NRF24L01的无线收发。

%nRF24L01 is a single chip wireless transceiver chip which working at 2.4GHz~2.5GHz ISM band,it is widely used in the wireless communication field.It exchanges data with external controller through the SPI interface. Nowadays,most use I/O to simulate SPI timing to drive the nRF24L01, based on it,this article proposes a method which through the SPI interface of ARM to drive nRF24L01 based on Linux. In this article, first it introduces the performance and characteristics of the nRF24L01 module, elaborates the mian points of hardware and software design in detail,then it gives the connected graph between embedded microcontroller S3C2440 processor and nRF24L01 module,and showes how to use the SPI interface’polling mode of S3C2440 to drive the nRF24L01, last it verifies the correctness of the driver and achieves nRF24L01’s wireless transceiver.【期刊名称】《电子测试》【年(卷),期】2012(000)011【总页数】5页(P61-64,89)【关键词】S3C2440;nRF24L01;SPI;查询【作者】林丽蓉;余红英;姜世杰;洪永学【作者单位】中北大学信息与通信工程学院,太原030051;中北大学信息与通信工程学院,太原030051;中北大学信息与通信工程学院,太原030051;中北大学信息与通信工程学院,太原030051【正文语种】中文【中图分类】TN8060 引言随着测控技术的发展,nRF24L01越来越多的应用于无线传输测控系统。

linux usb设备驱动和通信原理

linux usb设备驱动和通信原理

linux usb设备驱动和通信原理Linux USB设备驱动和通信原理一、介绍USB(Universal Serial Bus,通用串行总线)是一种常见的外部设备连接标准,可以连接各种设备,如打印机、键盘、鼠标、摄像头等。

在Linux系统中,USB设备驱动是用于管理和控制USB设备的软件模块。

本文将介绍Linux USB设备驱动的基本原理和USB设备与主机之间的通信过程。

二、USB设备驱动1. 驱动模型在Linux系统中,USB设备驱动使用一种称为USB核心(USB Core)的模型来管理和控制USB设备。

USB核心提供了一组功能强大的API,供驱动程序使用。

驱动程序通过注册到USB核心,并提供一组回调函数来处理USB设备的各种事件和请求。

2. 驱动加载当插入一个USB设备时,Linux内核会自动加载与之对应的驱动程序。

内核根据设备的厂商ID(Vendor ID)和产品ID(Product ID)来匹配设备和驱动程序。

如果找到匹配的驱动程序,内核会加载该驱动程序,并调用其初始化函数。

3. 驱动程序结构一个USB设备驱动程序通常由以下几个部分组成:- 初始化函数:用于初始化驱动程序的数据结构和资源。

- 描述符匹配函数:用于匹配设备的描述符和驱动程序。

- 事件处理函数:用于处理设备的插入、拔出等事件。

- 控制请求处理函数:用于处理来自主机的控制请求。

- 数据传输函数:用于处理设备和主机之间的数据传输。

三、USB设备与主机通信原理1. 设备描述符USB设备在与主机通信之前,需要提供一个设备描述符,用于描述设备的基本信息,如设备类别、厂商ID、产品ID等。

主机通过设备描述符来识别和配置设备。

2. 端点和传输类型USB设备与主机之间的通信是通过端点(Endpoint)来实现的。

一个USB设备通常包含多个端点,每个端点都有一个唯一的端点地址和传输类型。

主机通过端点地址来选择要与之通信的端点,通过传输类型来确定数据传输的方式,如控制传输、批量传输、中断传输和等时传输。

USB接口芯片FT245AM的原理

USB接口芯片FT245AM的原理

USB接口芯片FT245AM的原理摘要:介绍了一种USB总线接口芯片FT245AM及其在航空ARINC429总线测试仪中的应用方法,同时介绍了FT245AM的内部结构、管脚说明以及与微处理器的接口电路,给出了航空ARINC429总线测试仪的总体框图、部分原理和接口逻辑的Verilog HDL源代码及仿真时序。

关键词:USB总线 ARINC429总线 FT245AM CPLD MCU随着计算机的广泛就算,与计算机通信的方式也越来越多,对通信速度和易用性要求也越来越高,这使得USB通信方式显得越来越突出,应用领域也越来越广泛。

因此,在鼠标、键盘、游戏杆、数据采集卡、数码相机、掌上电脑中都有USB的应用。

FT245AM是美国FTDI公司生产的一种USB专用芯片。

它具有功能强、体积小、传输速度快、符合USB1.1技术规范、易于一微处理器接口等特点,因而倍受用户的青睐。

笔者采用FT245AM成功地开发了航空ARINC429总线测试仪。

FT245AM集成了USB1.1通信协议和外设接口,可以方便地实现USB主机与外设MCU、CPLD的接口,其数据传输速率可达1MB/s。

FT245AM内部128字节的接收FIFO和384字节的发送FIFO大大提高了USB主机与外设的通信质量。

另外,FT245AM还具备3.3V的LDO 调整器、8位频器、USB数据时钟恢复PLL、USB数据收发器,且EEPROM接口逻辑单元可外接串行存储器93C46,以实现USB VID、PID、序列号和设备说明字符串的存储。

使用FT245AM 可大大简化其外围电路,使用户设备更趋于小型化。

1 FT245AM简介1.1 FT245AM内部结构和引脚功能FT245AM芯片的内部结构如图1所示。

该芯片采用QFP32封装,其各管脚说明如下:USBDP(7脚):USB差分数据正端;EEDATA(2脚):串行存储器数据;USBDM(8脚):USB 差分数据负端;TEST(5脚):厂商测试管脚;3V3OUT(6脚):3.3V电源输出;D[7:0](25~18脚):外设接口数据总线;XTIN(27脚):晶体振荡器输入;RD(16脚):外设读数据信号输入;XTOUT(28脚):晶体振荡器输出;WR(15脚):外设写数据信号输入;RCCLK(31脚):RC定时器;TXE(14脚):发送FIFO空标志输出;RESET(4脚):芯片复位输入;RXF(12脚):接收FIFO非空标志输出;EECS(32脚):串行存储器片选;[!--empirenews.page--]EEREQ (11脚):串行存储器读取请求;EESK(1脚):串行存储器时钟;EEGNT(10脚):串行存储器读取允许;VCC,AVCC(3、13、26、30脚):分别为芯片电源和电路模拟电源;GND,AGND (9、19、29脚):芯片地和模拟地。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
le16_to_cpu(endpoint->wMaxPacketSize); GFP_KERNEL);
ft245dev-> bulk_out_endpointAddr = endpoint->bEndpointAddress;
} }
wMaxPacketSize 是端点一次可以处理的最大字 节数,它的大小必须小于或等于 FT245 中收发缓存 区的长度。FT245 发送和接收缓存区的长度分别为 384 bytes 和 128 bytes。在实际传输中,数据量如果 大于 wMaxPacketSize 值会被分割。
Key words: Linux; portable device; USB; arm
Linux 操作系统是在嵌入式领域新兴起来的开 源操作系统,相比于 windows 操作系统,Linux 具有 公 开 源 代 码 、系 统 稳 定 、运 行 效 率 高 、网 络 功 能 完 善、便于移植到嵌入式设备中等优点[1]。
bEndpointAddress 是 特 定 的 USB 地 址 ,结 合 USB_DIR_IN 和 USB_DIR_OUT 就可确定该端点的 数据是传向设备还是主机。
USB 数据的发送与接收是通过读写设备来实 现的,当要读写设备时,需要调用 ft245_write( )和 ft245_read( )这两个函数。
会自动调用驱动中的 ft245_open( )函数,其他函数
也 类 似 ,如 write( ) 对 应 ft245_write( ),read( ) 对 应
ft245_read( ),close( )对应 ft245_release( )。
2.2 USB 驱动的具体实现
当一个 USB 设备被安装而内核认为 USB 驱动 程序应该处理它时,ft245_probe( )函数被调用,这是 一 个 探 测 函 数 ,检 查 传 递 给 它 的 设 备 信 息 ,确 定 驱 动程序是否真的适合该设备。



WindowsCE6.0 ◆



制作了支持各大操作系统及应用平台的驱动程序,但
收稿日期:2010-12-20 基金项目:山西省自然科学基金(2009011023) 作者简介:曾强(1985-),男,山西省榆次人,硕士研究生,主要研究方向为智能通信与嵌入式系统;赵娟(1985-),女,山西省太原人,硕士研究 生,主要研究方向为图像三维重构系统;魏林(1985-),男,山西省长治人,硕士研究生,主要研究方向为光电测试系统;王文廉(1978-),男,博 士,四川成都人,主要从事动态测试技术、智能仪器研究.
摘 要:Linux 操作系统具有开源、稳定且便于移植到嵌入式设备中的优点,因而为嵌有 Linux 系统的设备设计 USB 驱
动,就成为实际工程需求。为解决支持 arm 的 Linux USB 驱动,对 USB 驱动的数据结构进行了分析,修改了 USB 驱动的框架
程序,用编译模块方法实现了对 FT245 USB 芯片的驱动加载,完成了基于 arm+Linux 平台的 USB 驱动设计,并成功应用到专
USB 设备是由接口和端点构成的。端点是 USB 通信最基本的形式,它只能是往一个方向传送数据[6]。 接口是用来绑定到设备上的,一个接口只处理一种 USB 逻辑连接,一个 USB 设备可以有多个接口,不同的接 口可以代表不同的功能,USB 驱动程序是绑定到接口 上的。此外,一个 USB 设备通常又有多个配置的,而 且可以在配置之间切换以改变设备的状态;但是一个 时刻只能激活一个配置,一个配置通常具有一个或者 更多的接口,如图 1 所示[7]。
.owner = THIS_MODULE,
.read =
ft245_read,
.write = ft245_write,
.open =
ft245_open,
.release = ft245_release,};
这里定义的函数是 USB 驱动程序的入口点,当
要打开 USB 设备时,使用系统函数 Open( ),系统就
{} };
MODULE_DEVICE_TABLE(usb, FT245_table);
File_ operation 是驱动程序中一个很重要的类, 它定义了一组常见文件 I/O 函数,而这些函数的使
用类似于普通文件的的 I/O 操作[8,9]。程序如下:
static struct file_operations ft245_fops = {
static ssize_t ft245_read(struct file *file, char *buf, size_t len, loff_t *ppos)
static ssize_t ft245_write(struct file *file,const char *user_buffer, size_t count, loff_t *ppos)
在 ft245_probe( )函数里,用一个循环来访问该
72
光电技术应用
第 26 卷
接口中存在的每一个端点,来寻找批量 IN 端点和批 量 OUT 端点,下面是寻找批量 OUT 端点的程序。
for (i = 0; i<iface_desc->desc。bNumEndpoints; ++i) { endpoint = &iface_desc->endpoint[i].desc; if (!ft245dev-> bulk_in_endpointAddr &&
图 1 USB 系统结构框图
1.2 基于 Linux 的 USB 驱动的工作原理 Linux 操作系统是把设备看成是一种文件来处
理的,这一点有别于其他的操作系统。这类文件称 为 设 备 文 件 ,设 备 文 件 分 为 字 符 设 备 和 块 设 备 , Linux 是通过对这些设备文件进行类似于普通文件 的操作来控制设备的。
商不同型号的 USB 芯片的 VID 和 PID 是不同的,
FT245 芯片的 VID=0x0403,PID=0x6001。
驱 动 程 序 中 要 有 一 个 支 持 的 设 备 列 表 ,通 过
VID 和 PID 的值来识别设备。程序如下:
static struct usb_device_id FT245_table [] = { { USB_DEVICE(FT245_VENDOR_ID, FT245_ID) },
USB 是一种字符设备,它的驱动程序是系统内 核和 USB 芯片之间的接口,为应用程序屏蔽了硬件 细节,应用程序通过调用驱动中定义的函数来实现
Hale Waihona Puke 对 USB 设备的控制与数据的读写。
2 基于FT245 的USB驱动的设计流程及其移植
在 Linux 的内核源码中有一个 USB 驱动的框架程 序,文件名为 usb-skeleton.c,目录在/drivers/usb 下,大 多数的 USB 驱动都是在这个框架的基础上修改的。 以下针对 FT245 芯片修改 USB 驱动的框架程序。
用测试系统中,通过实验,验证了设计的正确性。
关键词:Linux;便携式设备;USB;arm
中图分类号:TP311.11
文献标识码:A
文章编号:1673-1255(2011)01-0070-04
Design of Linux USB Driver Based on FT245
ZENG Qiang,ZHAO Juan,WEI Lin,WANG Wen-lian
第1 期
曾强等:基于 FT245 的 Linux USB 驱动的设计
71
却没有支持 arm 的 Linux USB 驱动。该设计以实际应 用出发,针对 FT245 芯片详细介绍了 arm9 平台下 Linux USB 驱动的开发过程及其移植。在专用测试系统中, 该驱动已经应用到手持式数据读取设备中,可取代笔 记本进行野外测试设备的数据读取。
(endpoint->bEndpointAddress&USB_DIR_IN) &&((endpoint-> bmAttributes&USB_ENDPOINT_XFERTYPE_MASK) = USB_ENDPOINT_XFER_BULK)) {
/*找到一个批量 OUT 端点 */ ft245dev-> bulk_out_size =
(School of Information and Communication Engineering, North University of China, Taiyuan 030051,China)
Abstract: The advantages of Linux operating system are open source, stabilization and easy to port in the em⁃ bedded devices, so the actual project needs to design USB driver for devices with the embedded Linux system. In or⁃ der to solve Linux USB driver supporting arm, the data structure of USB driver is analyzed, and the frame programs of USB driver are modified. The driver loading to FT245 USB chip is realized by using compile module method, USB driver design based on arm+Linux platform is completed, and the design successfully applies in the specific test system. Finally, the correctness of design is verified by experiments.
相关文档
最新文档