首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OSDev -在启用分页时无法访问lfb

OSDev -在启用分页时无法访问lfb
EN

Stack Overflow用户
提问于 2014-07-16 12:38:32
回答 1查看 415关注 0票数 1

我试图将VESA添加到JamesM的教程中,但在启用分页时无法访问LFB。当分页被禁用时,它可以正常工作。我正在使用凝固汽油弹v86黑客切换到VESA模式,它工作得很好,但是我不能在启用分页时绘制像素。通过切换回文本模式,它告诉我lfb位于0xFD000000,但我也得到了一个错误:

Page-fault! (present read-only ) at 0xFD01E078,为什么会这样?

有人能给我提供一个样本,我如何才能正确地映射lfb。现在我只是用这个:

代码语言:javascript
运行
复制
for (i = 0xFD000000; i < 0xFDFFFFFF; i += 0x1000)
        get_page(i, 1, kernel_directory);

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-18 06:03:22

代码语言:javascript
运行
复制
get_page(i, 1, kernel_directory);

被宣布为

代码语言:javascript
运行
复制
page_t *get_page(u32int address, int make, page_directory_t *dir);

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

代码语言:javascript
运行
复制
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.
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24780997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档