分类: WINDOWS
2008-12-16 22:03:25
The virtual address range you can use for the virtual-to-physical mapping
in OEMAddressTable is only 0x80000000 to 0x9FFFFFFF (512MB).
Every entry in this table is replicated in the second table in the range
0xA0000000 to 0xBFFFFFFF.
Suppose you define in your OEMAddressTable an entry for 128MB of flash as
follows:
DCD 0x90000000, 0x00000000, 128
the kernel will define another entry
DCD 0xB0000000, 0x00000000, 128
If you access the flash using the virtual addresses @ 0x90000000 you access
the physical range with cache enable; if you access the flash using the
virtual
addresses @ 0xB0000000 you access the physical range with cache disable.
So if you have a virtual cached address and you add 0x20000000, you'll get
the virtual uncached address.
The OEMAddressTable defines a static mapping between kernel virtual
addresses
and physical addresses. if you have an application, the virtual memory it
uses is
allocated dinamically, i.e. virtual address 0x7000000 will map to some
physical
address in RAM according to the MMU