gpt4 book ai didi

c - OSDev - 无法在启用分页的情况下访问 lfb

转载 作者:太空宇宙 更新时间:2023-11-04 02:48:32 25 4
gpt4 key购买 nike

我正在尝试将 VESA 添加到 JamesM 的教程中,但在启用分页时我无法访问 LFB。禁用分页时它工作正常。我正在使用 napalms v86 hack 切换到 VESA 模式,效果很好,但在启用分页时我无法绘制像素。通过切换回文本模式,它告诉我 lfb 位于 0xFD000000 但我也收到错误消息:

页面错误! (当前为只读)位于 0xFD01E078 为什么?

有人可以向我提供有关如何正确映射 lfb 的示例。目前我只使用这个:

for (i = 0xFD000000; i < 0xFDFFFFFF; i += 0x1000)
get_page(i, 1, kernel_directory);

我不知道这是否是映射 lfb 的正确方法

最佳答案

get_page(i, 1, kernel_directory);

声明为

page_t *get_page(u32int address, int make, page_directory_t *dir);

这意味着它返回一个指向页面条目 的指针,而不是页面本身。此外,它不会在必要时创建新的页面条目,它只会确保特定页面的页表存在。

unsigned int i;
for (i = 0xFD000000; i < 0xFE000000; i += 0x1000)
{
page_t * pg = get_page(i, 1, kernel_directory); //get pointer on a page entry
*pg = (page_t)(i | 0x3); //set that page entry to identity-map address stored in `i`, being it present and writable.
}

关于c - OSDev - 无法在启用分页的情况下访问 lfb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24780997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com