MTK UART驱动代码分析

首先参考网上的一些资料,给出UART驱动的整体描述与框架,

在 linux 系统中,tty 表示各种终端。终端通常都跟硬件相对应。比如对应于输入设备键盘 鼠标,输出设备显示器的控制终端和串口终端。

最上面的用户空间会有很多对底层硬件的操作,像 read,write 等。用户空间主要是通过设 备文件同 tty_core 交互,tty_core 根据用空间操作的类型再选择跟 line discipline 和 tty_driver 也就是 serial_core 交互,例如设置硬件的 ioctl 指令就直接交给 serial_core 处理。 Read 和 write 操作就会交给 line discipline 处理。Line discipline 是线路规程 的意思。正如它的名字一样,它表示的是这条终端”线程”的输入与输出规范设置,主要用 来进行输入/输出数据的预处理。处理之后,就会将数据交给 serial_core。


一个 uart_driver 通常会注册一段设备号.即在用户空间会看到 uart_driver 对应有多个设 备节点。例如:/dev/ttyMT0 /dev/ttyMT1 每个设备节点是对应一个具体硬件的,这样就可 做到对多个硬件设备的统一管理,而每个设备文件应该对应一个 uart_port,也就是 说:uart_device 要和多个 uart_port 关系起来。并且每个 uart_port 对应一个 circ_buf(用来接收数据),所以 uart_port 必须要和这个缓存区关系起来。

MTK uart 驱动,源文件路径 Mediatek/kernel/drivers/uart/uart.c

 
 

第 2238 行,调用 mtk_uart_sysfs 函数,其定义如下:


该函数初始化 mtk_uart_sysobj 结构体,主要调用 kobject_init_and_add 函数完成对 kobject 的初始化,建立 kobject 的层次结构,并将 kobject 添加到 sysfs 文件系统中。具 体实现请参考 http://blog.csdn.net/liuhaoyutz/article/details/12993931。

 

回到 mtk_uart_init 函数,第 2241 行调用 uart_register_driver 函数注册 mtk_uart_drv。mtk_uart_drv 结构如下:

uart_register_driver 函数定义在 kernel/drivers/tty/serial/serial_core.c 文件中,

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值