Linux的USB-Serial驱动(从系统初始化到生成tty设备的全过程)

    真正做完了USB驱动,看了《Linux那些事》之后,才知道Linux的USB host驱动有多复杂。我做的还只是USB驱动中的一小部分USB转串口。而且还只是读代码和做小的改动,真正写这些的都是天才。    有关USB驱动的部分在我会在别的文章中逐步的介绍,这里介绍的是从Linux内核初始化到USB设备插入USB口到虚拟出tty设备的过程。先上一个原创的图,画的还挺丑的,不过应该能把过
摘要由CSDN通过智能技术生成

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

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

 

 

 
usb 初始化和匹配

 

一,Linux系统初始化阶段:
1 在usb.c中的usb_init()函数会调用bus_register(&usb_bus_type)注册一条USB总线。
2 在usb.c中会在这条总线上注册一个驱动程序:

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
嵌入式系统tty设备驱动框架如下: 1. tty设备驱动的注册 在Linux内核中,tty设备驱动的注册是通过调用tty_register_driver()函数来实现的。该函数会将tty_driver结构体中的成员变量进行初始化,并将其加入到tty_drivers链表中。 2. tty设备的打开 当用户空间应用程序调用open()函数打开tty设备时,内核会调用tty_driver结构体中的open()函数。在open()函数中,会创建tty_struct结构体,并将其加入到tty_driver结构体中的tty_structs链表中。同时,还会调用tty_driver结构体中的start()函数,该函数会启动tty设备的数据传输。 3. tty设备的读写 当用户空间应用程序调用read()或write()函数读写tty设备时,内核会调用tty_driver结构体中的read()或write()函数。在read()函数中,会从tty_struct结构体中读取数据并返回给用户空间应用程序。在write()函数中,会将用户空间应用程序传递的数据写入到tty_struct结构体中。 4. tty设备的关闭 当用户空间应用程序调用close()函数关闭tty设备时,内核会调用tty_driver结构体中的close()函数。在close()函数中,会释放tty_struct结构体,并将其从tty_driver结构体中的tty_structs链表中移除。同时,还会调用tty_driver结构体中的stop()函数,该函数会停止tty设备的数据传输。 5. tty设备驱动的注销 当不再需要使用tty设备驱动时,可以通过调用tty_unregister_driver()函数将其从tty_drivers链表中移除,并释放相应的资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值