Chinaunix首页 | 论坛 | 博客
  • 博客访问: 336718
  • 博文数量: 135
  • 博客积分: 4637
  • 博客等级: 上校
  • 技术积分: 1410
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-21 13:22
文章分类

全部博文(135)

文章存档

2013年(12)

2012年(14)

2011年(42)

2010年(22)

2009年(18)

2008年(27)

分类: 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

阅读(932) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~