07 linux011字符设备管理
Posted 资质平庸的程序员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了07 linux011字符设备管理相关的知识,希望对你有一定的参考价值。
1 与字符设备的大体交互过程(如UART)
[1] 写操作
IO 端口指令
|[0]
V
+---+ [1] 命令 +----------+
| |--------->|UART控制器|[2] 命令接收与执行
|CPU| | |
| | [3] 中断 | |
+---+<---------+----------+
|[4]
V
中断处理程序
[2] 读
读一般由字符设备主动发起中断触发CPU调用相应的中断响应函数读取数据。
2 与字符设备交互涉及的抽象层次
linux 0.11 与字符设备的交互抽象到了文件层面。大体过程如下
(1) 文件操作
[1] 打开文件
字符设备也被抽象为一个文件,其i节点在文件系统中被存储。根据根目录或当前目录可搜索到指定文件对应的i节点到缓冲区中。
[2] 读写文件
文件读写的核心是打开文件时所获取到的i节点信息。由该i节点可得到文件所属设备类型及设备编号,从而调用相应类型的读写函数进行读写,如此处的字符设备读写函数。
(2) 字符设备读写
字符设备在内核中有相应的读写队列,这些队列专门用于缓冲字符设备的数据。
[1] 读字符设备,从字符设备读队列中读取数据,读队列中的数据由字符设备读中断响应函数
写入。
[2] 写字符设备,向字符设备写队列中写入数据,在写队列中完成写操作或者写满队列时向字符设备发送写中断,待字符设备以写中断方式向CPU反馈可写后,CPU再调用写字符设备中断响应函数完成写操作。
(3) 与字符设备进行交互
所以与块设备交互涉及的抽象层次由上到下有
+------------+
|文件操作管理|
+------------+
|
V
+------------+
|读写队列管理|
+------------+
|
V
+------------------+
|字符设备的交互流程|
+------------------+
3 理解键盘输入过程
+------------+
| terminal |
|------------|
|UART|network|
+------------+
^
|写往串口/网口控制器发送给其他设备
v
+------+
| CPU | to echo +----------+ +-------+
|======| ------> |video card|-->|monitor|
|QUEUES| +----------+ +-------+
+======+
^
|I/O指令和中断机制
V
+--------------------------+
|keyboard && its controller|
+--------------------------+
以上是关于07 linux011字符设备管理的主要内容,如果未能解决你的问题,请参考以下文章