我并不是真的想知道VGA的来龙去脉,而是想知道它如何工作的基本原理(以及集成图形),英特尔的网站说-

因此,这个被盗的内存被用作VGA适配器的帧缓冲区,并且VGA图形控制器的任何读/写都会从那里来吗?
使用1MB被盗VGA内存的示例系统-

因此,如果上述系统以VGA模式运行,并且将某些内容写入遗留的VGA地址范围(0xA0000 - 0xbffff),那么进程将是什么?
目前我的理解是,内存控制器会将其从CPU转发到VGA适配器,然后使用图形转换表(GTT)将其转换为03F0_OOOOh - 03FF_FFFFh范围内DRAM顶部的物理地址?
这是否意味着遗留的VGA内存范围0xA0000 - 0xbffff在DRAM中无法访问,因为VGA适配器正在使用MMIO的地址范围?
如果有人能帮上忙的话,我们将不胜感激,
谢谢。
发布于 2014-04-25 13:09:47
几年来,我直接为VGA写了一些东西,所以请记住这一点。
旧的遗留程序(CGA/EGA,VGA)只将所有VRAM内存访问映射到两个段(2x64KByte)。
64 KByte内存块不是直接访问的,而是VGA在那里转发自己的内存。使用集成卡+共享内存,它们没有自己的内存,因此芯片组从全局内存(通常是从顶层地址空间)获取内存。在这种情况下,是的,HW无法访问内存(除非使用芯片组的某些特性)。全局内存中的内存空间通常被映射或用于ROM的阴影。memory. I can't remember exactly how that works but as I remember expansion **BIOS** area starts around C000:0000 where all **BIOS** able **HW** map their **BIOS** memory (not only gfx cards and not only entire segment in size). Now there are many gfx modes that need more than64KBof **VRAM** so you call gfx **BIOS** to map appropriate memory segment toA000:0000`,或者通过IO、操作在gfx IO端口上的控制寄存器设置它。Gfx卡重新映射内存然后你可以使用它..。就像我几年前写的,我处理这件事,所以如果我错了,请编辑或添加评论.
https://stackoverflow.com/questions/23281943
复制相似问题