Chinaunix首页 | 论坛 | 博客
  • 博客访问: 43583
  • 博文数量: 12
  • 博客积分: 480
  • 博客等级: 下士
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-26 23:33
文章分类
文章存档

2010年(12)

我的朋友

分类: LINUX

2010-05-03 18:06:10

  
问题:关注硬件本身:如何开启串行中断发送字符操作?
 
1.终端基本数据结构:
 
  每个终端设备都对应有一个tty_struct数据结构,主要用来保存终端设备参数设置、所属的前台进程组ID和字符IO缓冲队列等信息。
 

struc tty_struct{
  struct termios termios;
  int pgrp;
  int stopped;
  void (*write) (struct tty_struct *tty);
  struct tty_queue read_q;
  struct tty_queue write_q;
  struct tty_queue secondary;
};

extern tty_struct tty_table[];


linux内核使用tty_struct的数组tty_table[]来表示所有的终端设备,如上面代码所示。linux0.11内核共有3个终端设备:一个是控制台设备,另两个是使用系统上两个串行口的串行终端设备。termios 用于对应终端设备的IO属性。
 
2.控制台终端和串行终端设备:
 
  下面的图很好的说明了控制台终端和串行终端的工作原理:控制台终端由键盘终端处理程序keyboard.s和显示控制程序console.c分别进行管理。它接收上层tty_io.c传递过来的显示字符或控制信息,并控制在主机屏幕上字符的显示,同时控制台把键盘按键产生的代码由keyboard.s传送到tty_io.c中去处理。
  串行终端设备则通过rs_io.s与tty_io.c进行交互。
 
 
  键盘中断原理请看另外一篇专门的文章:键盘中断原理
 
3.终端驱动程序接口:
  通常用户用文件系统与设备打交道,每个设备都有一个文件名称。终端驱动程序与系统其他程序的接口函数包括tty_write、tty_read和输入行规则函数copy_to_cooked,这三个函数都在tty_io.c文件中。另外,在tty_ioctl.c中实现了修改终端参数的tty_ioctl函数。
阅读(1514) | 评论(0) | 转发(0) |
0

上一篇:as86不常用指令集锦

下一篇:键盘中断原理

给主人留下些什么吧!~~