说明:usb serial驱动在主机侧(一般是PC侧)枚举成USB串口,在从设备侧(一般是手机侧)提供tty接口,提供一个主机和从设备通信的机制。本文档主要描述设备侧驱动从主机侧接收到数据后如何通知应用程序以及应用程序读取数据的基本过程。
平台:Linux 3.10.44
一 代码说明
在设备侧利用tty驱动为用户空间提供接口,从tty层开始分成tty接口层,tty链路层(line discipline),usb serial层,usb底层驱动。
tty接口层代码指\kernel\drivers\tty\tty_io.c开始入口的相关代码,tty line discipline有很多种实现,默认情况下使用n_tty,代码从\kernel\drivers\tty\n_tty.c入口。usb serial层代码入口位于\kernel\drivers\usb\gadget\u_serial.c。usb底层驱动是和平台强相关的,在此不做说明。
二 tty设备注册
1. 首先由u_serial中调用tty注册函数“tty_register_driver”注册tty设备。
三 设备打开
应用程序调用open函数,在tty_io.c中,tty_fops指定open对应的函数是tty_open。
static const struct file_operations tty_fops = {
.llseek = no_llseek,
.read = tty_read,
.write