首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
嵌入式Linux下高速USB主控制器的设计与实现
来源:本站整理  作者:佚名  2010-03-18 10:57:03




    处理器AT91RM9200与外扩USB控制器的连接如图1所示。其中,A[17∶1]为地址线;DATA[15∶0]为数据线;WR_N为读使能;RD_N为写使能;CS_N片选信号采用NCS2;AT9lRM9200的中断源1分配给ISP1761作为其中断信号。处理器和ISP1761之间的数据传输通过中断方式实现,当USB接口有中断产生时,处理器的中断服务程序通过读取ISP1761的中断寄存器判断中断来源,从而执行相应的读/写操作。

2 高速USB软件驱动实现
2.1 Linux系统中USB驱动结构
    USB内核模块是Linux系统中USB子系统的核心模块,它为USB驱动(设备和主控制器)提供了一个统一的接口,以访问和控制USB硬件。
    如图2所示,应用程序发出的USB请求块(URB)经过上层的USB设备驱动和USB内核后到达USB主控制器。处于最底层USB主控制器的驱动(HCD)是USB主机直接与硬件交互的软件模块,它将解析URB后,再将数据发送到指定的USB设备上。


2.2 ISP1761主控制器驱动的实现
    图3为ISP1761与操作系统相连接的接口框图。图5中,ISP1761要完成操作系统与USB设备的通信。驱动部分主要分两个层次:ISP1761硬件抽象层(HAL)和主控制器驱动(HCD)层。前者,通过GPIO接口和操作系统平台的相关函数来完成访问ISP1761硬件的功能;后者,主要实现将数据传输给连接的USB设备,并管理根集中器端口的功能。


    因此,该设计的软件驱动部分主要由以下两个层次来完成USB主机端的驱动功能。
    (1)ISP1761的HAL层。首先初始化设备结构,并添加设备到系统的设备层。其中,初始化部分主要完成ISP1761资源(如内存、中断等)的初始化设置和AT91RM9200处理器的初始化设置,为后期注册驱动程序做准备。如果系统成功添加了设备,在加载和卸载ISP1761主控制器驱动程序到内核时,就会进一步执行平台驱动程序的注册,否则将不能注册驱动程序。一旦注册成功,驱动程序就已经和设备绑定,任何用户态程序要操作此设备都可以通过platform_driver结构所定义的函数进行。下面给出该系统注册的platform_driver结构:


其中,在设备探测和注销等函数中调用了如下一个重要的结构体isp1761_dev。该结构体主要包含了ISP1761设备驱动的基本信息和中断处理例程指针。

上一页  [1] [2] [3] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:115,585.90000 毫秒