linux内核ttyusb实现,[zhuan]Linux的USB-Serial驱动(从系统初始化到生成tty设备的全过程)...

本文详细介绍了Linux内核中USB转串口驱动的工作流程,从系统初始化、注册总线和驱动,到USB设备插入后的probe过程,最终生成tty设备。涉及的关键步骤包括bus_register、tty_register_driver、usb_set_configuration和tty_register_device等,揭示了Linux USB驱动的复杂性和精彩之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

真正做完了USB驱动,看了《Linux那些事》之后,才知道Linux的USB host驱动有多复杂。我做的还只是USB驱动中的一小部分USB转串口。而且还只是读代码和做小的改动,真正写这些的都是天才。

有关USB驱动的部分在我会在别的文章中逐步的介绍,这里介绍的是从Linux内核初始化到USB设备插入USB口到虚拟出tty设备的过程。先上一个原创的图,画的还挺丑的,不过应该能把过程说清楚:

26126673_1.jpg

一,Linux系统初始化阶段:

1 在usb.c中的usb_init()函数会调用bus_register(&usb_bus_type)注册一条USB总线。

2 在usb.c中会在这条总线上注册一个驱动程序:usb_generic_driver{

generic_probe()

device_id

}

在这个驱动中包含自己的probe函数和USB设备的ID(注意,这里是设备ID而不是接口的ID)。

3 在usb_serial.c中的usb_serial_init()函数会再次调用bus_register(&usb_serial_bus_type)注册USB转串口总线。

4 usb_serial_init()函数会调用tty_register_driver(usb_serial_tty_driver)向内核注册tty类的设备驱动,并在USB转串口总线上添加这个驱动。

5 option.c中的option_init()函数调用usb_register(&option_dri

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值