Linux操作系统内核的时钟中断机制
每个通道都有一个向下减小的计数器,8254 PIT的输入时钟信号的频率是 1193181HZ,也即一秒钟输入1193181个clock-cycle。每输入一个clock-cycle其 时间通道的计数器就向下减1,一直减到0值。因此对于通道0而言,当他的计数 器减到0时,PIT就向系统产生一次时钟中断,表示一个时钟滴答已经过去了。当 各通道的计数器减到0时,我们就说该通道处于“Terminal count”状态。 通道计数器的最大值是10000h,所对应的时钟中断频率是1193181/(65536 )=18.2HZ,也就是说,此时一秒钟之内将产生18.2次时钟中断。 2、 PIT的I/O端口 在i386平台上,8254芯片的各寄存器的I/O端口地址如下:
其中,由于通道0、1、2的计数器是一个16位寄存器,而相应的端口却都是8 位的,因此读写通道计数器必须进行进行两次I/O端口读写操作,分别对应于计 数器的高字节和低字节,至于是先读写高字节再读写低字节,还是先读写低字节 再读写高字节,则由PIT的控制寄存器来决定。8254 PIT的控制寄存器的格式如 下: (1)bit[7:6]——Select Counter,选择对那个计数器进行操作。“00 ”表示选择Counter 0,“01”表示选择Counter 1,“10”表示选择Counter 2 ,“11”表示Read-Back Command(仅对于8254,对于8253无效)。 (2)bit[5:4]——Read/Write/Latch格式位。“00”表示锁存(Latch) 当前计数器的值;“01”只读写计数器的高字节(MSB);“10”只读写计数器 的低字节(LSB);“11”表示先读写计数器的LSB,再读写MSB。 (3)bit[3:1]——Mode bits,控制各通道的工作模式。“000”对应 Mode 0;“001”对应Mode 1;“010”对应Mode 2;“011”对应Mode 3;“100 ”对应Mode 4;“101”对应Mode 5。 (4)bit[0]——控制计数器的存储模式。0表示以二进制格式存储,1表示 计数器中的值以BCD格式存储。 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |