diff --git a/VKernel/Kernel/platform/pch/timer.vp b/VKernel/Kernel/platform/pch/timer.vp index 96637ab..5fb19b4 100644 --- a/VKernel/Kernel/platform/pch/timer.vp +++ b/VKernel/Kernel/platform/pch/timer.vp @@ -3,6 +3,7 @@ import platform.pch.pit as pit import sched.sched as sched import drivers.core.cpu.apic as apic import drivers.serial.uart.serial as serial +import viperlib import asm import t, c @@ -25,6 +26,14 @@ def timer_init(): timer_running = True c.Asm("mfence", op=[t.ASM_DESCR.CLOBBER_MEMORY]) pit.pit_init(TIMER_FREQUENCY) + # [DBG] 读 PIT 计数器验证是否在走(用后移除) + asm.outb(0x43, 0x00) # latch channel 0 + _lo: t.CUInt8T = asm.inb(0x40) + _hi: t.CUInt8T = asm.inb(0x40) + _cnt: t.CInt = t.CInt(_lo) | (t.CInt(_hi) << 8) + _cb: t.CArray[t.CChar, 40] + viperlib.snprintf(c.Addr(_cb), 40, "[PIT] cnt=%d\n", _cnt) + serial.puts(c.Addr(_cb)) def timer_handler(): global ticks, seconds, milliseconds, timer_running, _dbg_once