From 963e0ed53f19309a5a5447c459416088f0e8075f Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Wed, 26 Aug 2026 19:17:58 +0800 Subject: [PATCH] =?UTF-8?q?debug(main):=20=E6=89=93=E5=8D=B0=20BootInfo=20?= =?UTF-8?q?=E6=8C=87=E9=92=88=E4=B8=8E=20memmap=20=E5=8E=9F=E5=A7=8B?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mm.init 收到 addr=0 size=0 desc=0(全部为 0),可能是全局 BootInfo 为 NULL (读物理 0-24 全 0)或 bootloader 传参异常。mm.init 前打印 BootInfo 指针 本身与 MemmapAddr/MemmapSize/MemmapDescSize/framebuffer_addr 原始值。 --- VKernel/Kernel/main.vp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/VKernel/Kernel/main.vp b/VKernel/Kernel/main.vp index 10971e7..df5894f 100644 --- a/VKernel/Kernel/main.vp +++ b/VKernel/Kernel/main.vp @@ -136,6 +136,13 @@ class ViperKernel: pitch: t.CUInt64T = BootInfo.framebuffer_pitch fb_format: t.CUInt64T = BootInfo.framebuffer_format fb_size: t.CUInt64T = BootInfo.framebuffer_size + # [DBG] 打印 BootInfo 指针与 memmap 原始字段,定位全 0 根因(用后移除) + _dbbuf: t.CArray[t.CChar, 140] + viperlib.snprintf(c.Addr(_dbbuf), 140, "[main] BootInfo=0x%lx mmap=0x%lx mmsz=%lu mmd=%lu fb=0x%lx\n", + t.CUInt64T(BootInfo), BootInfo.MemmapAddr, BootInfo.MemmapSize, + BootInfo.MemmapDescSize, BootInfo.framebuffer_addr) + serial.puts(c.Addr(_dbbuf)) + if BootInfo is not None: paging.init(BootInfo.MemmapAddr, BootInfo.MemmapSize) fb_pages: t.CUInt64T = (fb_size + t.CUInt64T(0xFFF)) >> t.CUInt64T(12)