Nucleus下USB HOST操作流程
- 格式:pdf
- 大小:274.76 KB
- 文档页数:22
Nucleus下usbhost操作流程
硬件的初始化
•C_Board_Init();主要工作是对中断的处理和对定时器的初始化。
•hc_cfg_gpio();对GPIO的配置,配置中断引脚USB_INT5和复位引脚。
S1R72005
•S1R72005是一款兼容USB2.0协议、支持全速(12Mbps)传输的有OTG功能的设备
•其特点如下:
•1)将Host,外围和On-the-Go功能整合在一个芯片中;•2)兼容On-the-Go 1.0协议;
•3)支持USB2.0全速模式(12Mps);
•4)备有On-the-Go端口;
•5)支持control,bulk,interrupt和Isochronous传输方式;•6)内建2.5Kbyte的传输FIFO;
•7)设有16位宽的处理器通用接口;
•8)可以作为16位宽的DMA slave使用;
•9)支持12MHz,27MHz and 48MHz的晶振时钟输入;•10)内建PLL电路;
•SIR72005的引脚连接
•CD0-CD15 D0-D15
•CA0-CA7 A0-A7
•xWR nWE
•xRD nOE
•xCS nCSD
•xINT HOST_INT5 (PORTA的第5位)•xWAIT高电平
•xRESET RESET和nCSC(PORTG的第11位)•时钟接外部晶振,频率12MHZ
•DMA
USB的互连是指USB设备与主机之间进行连接和通信的操作,主要包括:
•总线的拓扑结构
•内部层次关系
•数据流模式
•USB层次结构
USB通信的数据流模型
USB通信逻辑上可分为:信号层、协议层和数据传输层.
信号层传输的是位信息流。
协议层传输的包信息流称为事务处理(Transaction)。
将数据传输层传输的信息流称为传输(Transfer)
所有的传输最终都以比特流的方式在信号层上实现通信。
USBD层的功能
•管理主机控制器。
通过usb_bus管理主机控制器,并提供与HCD层的接口函数,
usb_alloc_bus,usb_register_bus等
•客户端驱动程序的管理。
为每个设备驱动程序维护了一个相关的usb_driver的数据结构。
接口函数有usb_register等
•USB设备的配置和管理。
通过协议提供的USB 命令usb_set_address等
•数据传输的管理。
用于USB控制传输的接口函数usb_control_msg,批量传输的接口函数
usb_bulk_msg。
URB是USB系统中统一的传
输数据结构。
HCD层的功能
•主机控制器硬件初始化
•为USBD层提供接口函数
•提供根集线器的配置,控制功能
•完成4种类型的传输工作
•中断处理,根集线器每隔255timeticks进行一次端口的状态查询工作。
nucleus系统下USB host驱动
•在nucleus操作系统中建立了两个任务:usb_client_task和usb_hub_task
•usb_client_task的优先级最高,但是要等客户端驱动程序加载完成后才能唤醒,所以先进入usb_hub_task任务
•usb_hub_task任务首先进行主机的初始化
USB HOST初始化流程
主机控制器寄存器的配置
•Reset所有寄存器
•设置外部中断引脚的输出方式
•使能中断寄存器
•通道的配置
•NU_Create_Timer创建一个usbtimer,服务程序为timer_isr, 触发时间为255timeticks,未使能。
•在usb_otg72015_rh_init_int_timer里调用
NU_Control_Timer使能这个timer
•timer_isr里调用usb_otg72015_rh_int_timer_do 查询集线器状态有没有变化
•NU_Register_LISR(0x06, ENT_USBHOST_LISR, &old_lisr)注册一个6号的低级中断,中断的入口地址为ENT_USBHOST_LISR。
•在ENT_USBHOST_LISR中激活高级中断
NU_Activate_HISR(&USBHOST_HISR)•usb_otg72015_interrupt_Main()就在USBHOST_HISR中。
设备的插上和拔下是通过集线器某个端口的状态变化位体现的。
当集线器检测到设备插入以后
•usb_alloc_dev申请一个新的usb_device,获得总线上对应的主机控制器资源
•usb_connect为设备分配一个设备ID
•usb_new_device配置设备,并为其加载驱动
usb设备在使用之前要完成三个配置:
设备配置设置设备的所有参数,为设备分配可见的USB主机资源
USB配置创建客户可用的usbd通道
功能配置客户可以进行一些配置的修改。