Linux串口驱动程序(3)-打开设备

本文深入分析Linux串口驱动程序的打开过程,包括用户调用open函数,内核中tty子系统的层层传递,以及串口驱动中的open函数实现。重点关注open函数的传递路径和串口打开的具体步骤,如使能接收、注册中断程序和启用发送等关键操作。
摘要由CSDN通过智能技术生成

先来分析一下串口打开的过程:

  • 1、用户调用open函数打开串口设备文件;
  • 2、在内核中通过tty子系统,把open操作层层传递到串口驱动程序中;
  • 3、在串口驱动程序中的xx_open最终实现这个操作。

这里主要有2个点需要我们重点分析,一个是open函数的传递过程,而是串口驱动程序XXX_open函数的实现。

1.open函数传递

  • 打开uart_register_driver函数,里面就是实现注册串口驱动,在最后有一个tty_register_driver函数,这个函数实际上就是注册一个字符设备。在注册过程中有一个重要的结构:
static const struct file_operations tty_fops = {
	.llseek		= no_llseek,
	.read		= tty_read,
	.write		= tty_write,
	.poll		= tty_poll,
	.unlocked_ioctl	= tty_ioctl,
	.compat_ioctl	= tty_compat_ioctl,
	.open		= tty_open,
	.release	= tty_release,
	.fasync		= tty_fasync,
};
  • 这就是tty_fops结构,里面的tty_open就是响应用户的open操作的。这这个open函数里面肯定不是直接完成串口打开的,它调用了ua
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值