- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试将 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/
我正在使用准系统教程作为我正在开发的操作系统的基础,它似乎是一个较旧的教程:它将内核编译为软盘镜像,然后使用 GRUB 加载它。 基本上,我仍然想使用 GRUB,但我希望我的操作系统从 CD 运行。主
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
我有一个关于 PCI 的问题。 PCI 具有三个地址空间; PCI I/O、PCI 内存和 PCI 配置空间。它们分别位于何处?在 PCI Controller 中?还是在设备中?它们中的任何一个是系
在我的内核调用ArchInit()函数内部的AHCIInit()函数之后,我在其中一个MemAllocate()调用中遇到了页面错误,并且这仅在真实计算机中发生,因为我尝试在VirtualBox,VM
我正在搞一些业余操作系统开发,我对内存映射的 I/O 地址有点困惑。我了解整个内存映射 I/O 概念,但我试图弄清楚开发人员如何获取地址来操作硬件。 这些地址是由硬件供应商指定的,还是某种适用于所有计
我正在尝试将 VESA 添加到 JamesM 的教程中,但在启用分页时我无法访问 LFB。禁用分页时它工作正常。我正在使用 napalms v86 hack 切换到 VESA 模式,效果很好,但在启用
我正在开发操作系统作为个人爱好,以便我可以学习软件工程和计算机体系结构。 当文本到达底部或 VGA_HEIGHT 时,我试图让 VGA 终端“滚动”。我将 OSDev wiki 中的代码与我自己的代码
我正在开发操作系统内核。我在将扩展 ASCII 字符打印到屏幕时遇到问题。当我尝试在屏幕上打印字符时,一般的 ascii 字符很容易以白色打印出来。但是当我尝试打印扩展的 ASCII 字符(如 blo
我完全是 osdeving 的初学者。现在我已经按照 osdevwiki 实现了键盘和 VGA 屏幕。现在我想像这样画出合适的像素 void drawPixel(int x, int y, int r
我正在关注 brokenthorn OS 开发系列,直到现在我能够成功运行 bootloader stage1 但是在 linux 机器(ubuntu 16.04)上的 bochs 模拟器中从 FAT
我是一名优秀的程序员,十分优秀!