真正做完了USB驱动,看了《Linux那些事》之后,才知道Linux的USB host驱动有多复杂。我做的还只是USB驱动中的一小部分USB转串口。而且还只是读代码和做小的改动,真正写这些的都是天才。
有关USB驱动的部分在我会在别的文章中逐步的介绍,这里介绍的是从Linux内核初始化到USB设备插入USB口到虚拟出tty设备的过程。先上一个原创的图,画的还挺丑的,不过应该能把过程说清楚:
一,Linux系统初始化阶段:
1 在usb.c中的usb_init()函数会调用bus_register(&usb_bus_type)注册一条USB总线。
2 在usb.c中会在这条总线上注册一个驱动程序: