简单记录一下Linux gadget serial的工作
来源:互联网 发布:网络主播经常唱的歌 编辑:程序博客网 时间:2024/06/06 07:37
Linux支持连接各种USB从设备,同时也支持自己作为设备插入到其他主机当中。最典型的例子就是Android OS的手机,插入电脑可以被识别为U盘之类的设备。
对于SOC来说,这部分直接对应了USB Device部分的操作。
为了避免与作为主机时支持的"设备驱动 (USB Device Driver)"一词混淆, Linux给这部分的实现取名为"Gadget",小玩具。内核源码的目录为\drivers\usb\gadget,里面包含了内核所支持的不同类型的USB Device Controller (UDC)驱动的实现,以及框架和不同gadget的实现。
以AT91 ARM9为例,最底层的驱动为at91_udc.c(对于支持高速USB 2.0的SOC是atmel_usba_udc.c),它实现了gadget.h定义的统一接口,然后上层的各种gadget driver(如serial.c等)调用这一套统一的接口去实现不同类型的功能,如USB串口、U盘、USB以太网等等。
Atmel USB串口的框架图:
USB串口的描述和使用方法在内核目录\Documentation\usb\gadget_serial.txt中有详细且清晰的描述,就不再这里重复。一旦加载模块后会自动在/dev/下创建设备文件,程序就可以open它并且write,即使USB线没有连接上。之前一直纠结在为什么g_serial没有向上层提供USB cable connect/disconnect的事件,后来想想在使用串口的时候也是一样的情况,打开一个即使没有连接线的串口,也可以发送数据,只是没有人会收到而已。不过与串口唯一的不同在于,如果通讯正在进行中拔掉USB线,那么再次连接USB线后需要重新open一次ttyGS0设备文件才可以重新发送,否则write不能向串口一样正常工作而返回出错。
参考部分:
官方Gadget框架的描述:http://www.linux-usb.org/gadget/
基于9263的配置过程:http://www.cublog.cn/u3/111925/showart_2278264.html
华清讲师刘洪涛的BLOG:http://blog.csdn.net/hongtao_liu/article/details/4555645
- 简单记录一下Linux gadget serial的工作
- 记录一下最近的工作
- Linux-USB Gadget : Part 4: 最简单的 gadget驱动:g_zero
- Linux-USB Gadget : Part 4: 最简单的 gadget驱动:g_zero
- Linux-USB Gadget : Part 4: 最简单的 gadget驱动:g_zero
- Linux-USB Gadget : Part 4: 最简单的 gadget驱动:g_zero
- 简单记录一下简单的理解
- 简单记录一下makefile的使用
- 简单记录一下phpmyadmin的https配置
- 简单记录一下shiro的验证流程
- LINUX: USB-SERIAL / PL2303 工作流程
- 简单记录一下
- 记录一下本周的主要工作及遇到的问题
- 记录一下linux errno的定义位置
- Linux scp awk 用到的,记录一下
- 记录复习一下遇到的linux命令
- 前端的工作准则 记录一下 = =
- 记录一下近几年工作的一些心得
- Sourceinsight 用法大全
- PHP 5.3.1 安装包 VC9 VC6 区别是什么
- mysql数据关联查询及显示问题,一对多查询
- .net winform 数据验证框架
- http和https的区别
- 简单记录一下Linux gadget serial的工作
- 学习opencv第二章函数
- 在右键点击的菜单中添加选项的方法
- What's the difference between "but" and "yet"
- Ubuntu 10.04下安装IE
- 检测iPhone当前网络是不是WiFi的代码:
- 如何执行软件测试
- 把二维数组数据读入txt文本(C语言)
- 编译自己的资源文件编辑器(reseditor.exe)