gadget 驱动

首先要知道普通usb是主从模式的, 一切通信都是由主机控制的,从机没有控制权,也有主从转换的情况。

主机通过引脚触发的中断来知道usb设备的插入,然后发起握手,所以gadget作为从机需要有一个引脚来触发主机的引脚的中断,pullup引脚。

主机对从机的握手是通过与从机的ep0的控制节点通信来实现的,来来回回有几次握手,握手会改变从机的一些配置。

握手的时候需要知道从机的配置信息,这些信息都由print.c文件来提供,print.c还提供对应用层的接口。

at91_udc.c提供gadget 和 eps的抽象 ,在中断处理函数维持状态机,以及最最底层的操作。

udc_core.c 来链接各种对象的关联,使得各个对象相互之间能找到。

composite.c 只是一个适配层,提供共性,特性需要具体的驱动提供。订阅者模式。

各个容器通过链表,指针什么的关联在一起,相互之间能找到。


初始化

udc_bind_to_driver -》composite_bind  --》 printer_bind

                               -》usb_gadget_udc_start-》at91_start-》at91_pullup


探测握手

handle_setup->composite_setup-》usb_function.setup->printer_func_setup

   -》usb_function.set_alt-》printer_func_set_alt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值