Re: question about system memory space mapping
From: Herman Dullink (spamtrap_at_crayne.org)
Date: 10/19/04
- Next message: Martin Pyle: "Request for documenation on _asm, inline in MSV C++"
- Previous message: wolfgang kern: "Re: DLL import"
- In reply to: Min Wang: "Re: question about system memory space mapping"
- Next in thread: Dirk Wolfgang Glomp : "Re: question about system memory space mapping"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Tue, 19 Oct 2004 21:51:17 +0000 (UTC)
> Is there any book/tutorial which details how various chipsets/controllers
> are programmed during POST and how does host bridge recognize all the
> other bridges/devices and assign address ranges to them?
All there is are databook (which you probably already have). All other
material would
be property of the BIOS makers.
> Can the video adapter work under both graphic mode and text mode at the
> same time?
Depends on what you mean by that. A modern video adapter is quite a complex
thing.
It's usually made up of several independant working units. For you, the most
important
units are the one that reads from the video memory and outputs to the
screen,
and the unit that's between the video memory and the bus (and the CPU).
To accomodate the various video modes, the later unit provided different
addressing
modes/decodings for the CPU. One for text, a few for 1, 2 and 4 bit graphic
modes,
and a couple for 8-bit and direct colour modes.
It's very possible to program the first unit to use 32-bit colour, and then
use a 4-bit
addressing mode to quickly copy vid to vid with 128 bits per access using
the bit
buffers of this addressing mode.
> Suppose I have a PCI video adapter and the frame buffer base address is
> mapped to physical address 0xe1000000. When I put data to this physical
> address, the screen would be overwritten. But if at the same time I write
> to physical address a0000-bffff, what would happen?
This is all about address decoding. For the video adapter it's all he same
memory.
The a0000-bffff range is used for DOS compatibility, and allows up to 128KB
of the video RAM being visible for the CPU in the 1MB range.
Beware that that physical address 0xe1000000 is a 'reserved' range for you
video
adapter. No actual video memory is accessed at that range until the video
adapter
is told that it also should decode that range.
To have access the video RAM at both 0xe1000000 and a0000, you have to
enable both address ranges using the registers on the video adapter.
As these registers are very specific for a video adapter, you have to look
into
the corresponding data book how this is done. This is the main reason we
have
video drivers. It's the piece of software that has the device specific code.
H
- Next message: Martin Pyle: "Request for documenation on _asm, inline in MSV C++"
- Previous message: wolfgang kern: "Re: DLL import"
- In reply to: Min Wang: "Re: question about system memory space mapping"
- Next in thread: Dirk Wolfgang Glomp : "Re: question about system memory space mapping"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|