实时时钟中断
CMOS
“CMOS” 是一种非常低功耗的静态内存,位于与实时钟(RTC)相同的芯片上。它于1984年引入IBM PC AT,使用了摩托罗拉MC146818A RTC。CMOS(和实时钟)只能通过IO端口0x70和0x71访问。CMOS内存的功能是在计算机关闭时存储50(或114)字节的BIOS “设置” 信息——因为有一个单独的电池保持时钟和CMOS信息的活跃。
CMOS 值是逐字节访问的,每个字节都是单独可寻址的。每个 CMOS 地址通常被称为 “寄存器”。前 14 个 CMOS 寄存器访问和控制实时时钟。实际上,CMOS 中唯一真正有用的寄存器是实时时钟寄存器和寄存器 0x10。CMOS 中的所有其他寄存器几乎完全过时(或未标准化),因此是无用的。
周期性中断中频率
RS | Int/sec | Period |
---|---|---|
0000 | none | none |
0001 | 256 | 3.90625 ms |
0010 | 128 | 7.8125 ms |
0011 | 8192 | 122.070 Micros |
0100 | 4096 | 244.141 Micros |
0101 | 2048 | 488.281 Micros |
0110 | 1024 | 976.562 Micros |
0111 | 512 | 1.93125 ms |
1000 | 256 | 3.90625 ms |
1001 | 128 | 7.8125 ms |
1010 | 64 | 15.625 ms |
1011 | 32 | 31.25 ms |
1100 | 16 | 62.50 ms |
1101 | 8 | 125.0 ms |
1110 | 4 | 250.0 ms |
1111 | 2 | 500.0 ms |
访问CMOS
读取
outb (0x70, (NMI_disable_bit << 7) | (selected CMOS register number));
写入
val_8bit = inb (0x71);