DV2 DV1 DV0;
0 0 0 4.194304 MHZ NO YES;
0 0 1 1.048576 MHZ NO YES;
0 1 0 32.769 KHZ NO YES;
1 1 0/1 任何 YES NO
PC机通常将Divider bits设置成“010” 。
(3)bit[3:0]——速率选择位(Rate Selection bits),用于周期性或方波信号输出 。
RS bits 4.194304或1.048578 MHZ 32.768 KHZ
RS3 RS2 RS1 RS0 周期性中断 方波 周期性中断 方波
0 0 0 0 None None None None;
0 0 0 1 30.517μs 32.768 KHZ 3.90625ms 256 HZ;
0 0 1 0 61.035μs 16.384 KHZ;
0 0 1 1 122.070μs 8.192KHZ;
0 1 0 0 244.141μs 4.096KHZ;
0 1 0 1 488.281μs 2.048KHZ;
0 1 1 0 976.562μs 1.024KHZ;
0 1 1 1 1.953125ms 512HZ;
1 0 0 0 3.90625ms 256HZ;
1 0 0 1 7.8125ms 128HZ;
1 0 1 0 15.625ms 64HZ;
1 0 1 1 31.25ms 32HZ;
1 1 0 0 62.5ms 16HZ;
1 1 0 1 125ms 8HZ;
1 1 1 0 250ms 4HZ;
1 1 1 1 500ms 2HZ
PC机BIOS对其默认的设置值是“0110” 。
状态寄存器B的格式如下所示:
各位的含义如下:
(1)bit[7]——SET标志 。为1表示RTC的所有更新过程都将终止,用户程序随后马上对日历寄存器组中的值进行初始化设置 。为0表示将允许更新过程继续 。
(2)bit[6]——PIE标志,周期性中断使能标志 。
(3)bit[5]——AIE标志,告警中断使能标志 。
(4)bit[4]——UIE标志,更新结束中断使能标志 。
(5)bit[3]——SQWE标志,方波信号使能标志 。
(6)bit[2]——DM标志,用来控制日历寄存器组的数据模式,0=BCD,1=BINARY 。BIOS总是将它设置为0 。
(7)bit[1]——24/12标志,用来控制hour寄存器,0表示12小时制,1表示24小时制 。PC机BIOS总是将它设置为1 。
(8)bit[0]——DSE标志 。BIOS总是将它设置为0 。
状态寄存器C的格式如下:
(1)bit[7]——IRQF标志,中断请求标志,当该位为1时,说明寄存器B中断请求发生 。
(2)bit[6]——PF标志,周期性中断标志,为1表示发生周期性中断请求 。
(3)bit[5]——AF标志,告警中断标志,为1表示发生告警中断请求 。
(4)bit[4]——UF标志,更新结束中断标志,为1表示发生更新结束中断请求 。
状态寄存器D的格式如下:
(1)bit[7]——VRT标志(Valid RAM and Time),为1表示OK,为0表示RTC已经掉电 。
(2)bit[6:0]——总是为0,未定义 。
1.2 通过I/O端口访问RTC
在PC机中可以通过I/O端口0x70和0x71来读写RTC芯片中的寄存器 。其中,端口0x70是RTC的寄存器地址索引端口,0x71是数据端口 。
读RTC芯片寄存器的步骤是:
mov al, addr;
out 70h, al ; Select reg_addr in RTC chip;
jmp $ 2 ; a slight delay to settle thing;
in al, 71h ;
写RTC寄存器的步骤如下:
mov al, addr;
out 70h, al ; Select reg_addr in RTC chip;
jmp $ 2 ; a slight delay to settle thing;
mov al, value;
out 71h, al
1.3 可编程间隔定时器PIT
每个PC机中都有一个PIT,以通过IRQ0产生周期性的时钟中断信号 。当前使用最普遍的是Intel 8254 PIT芯片,它的I/O端口地址是0x40~0x43 。
Intel 8254 PIT有3个计时通道,每个通道都有其不同的用途:
(1) 通道0用来负责更新系统时钟 。每当一个时钟滴答过去时,它就会通过IRQ0向系统产生一次时钟中断 。
(2) 通道1通常用于控制DMAC对RAM的刷新 。
(3) 通道2被连接到PC机的扬声器,以产生方波信号 。
每个通道都有一个向下减小的计数器,8254 PIT的输入时钟信号的频率是1193181HZ,也即一秒钟输入1193181个clock-cycle 。每输入一个clock-cycle其时间通道的计数器就向下减1,一直减到0值 。因此对于通道0而言,当他的计数器减到0时,PIT就向系统产生一次时钟中断,表示一个时钟滴答已经过去了 。当各通道的计数器减到0时,我们就说该通道处于“Terminal count”状态 。
推荐阅读
- Linux操作系统内核抢占补丁的基本原理
- 如何远程实现为Linux服务器添加新分区
- Linux操作系统内核和设备文件对话
- 在Linux系统下清除操作信息的记录
- Linux应用软件谈之远程桌面控制篇
- Linux服务器前台常出现的提示及含意
- Linux操作系统下的软中断问题分析
- 全面剖析Linux操作系统单用户方式
- Linux操作系统不同对象全面升级方法介绍
- Linux系统小型日程表挑战大型群件