关于存储器重映射一个基本概念的疑惑?请大家帮忙看看。<br />鄙人不才,对《深入浅出ARM7》P400页中的一个范例的疑问?<br /><br /><br />程序如下:<br />/****************************************************************************<br />* 文 件 名:REMAP.C<br />* 功 能:将存储器重映射到片内RAM(0x40000000~0x4000003F),然后更改0x40000000~<br />* 0x4000003F的内容。<br />* 说 明:观察0x00000000~0x0000003F地址上的数据有何变化<br />****************************************************************************/<br />#include "config.h"<br /><br />#define VECTOR_RAM ((unsigned char *) 0x40000000)<br /><br />/****************************************************************************<br />* 名 称:main()<br />* 功 能:存储器重映射。<br />****************************************************************************/<br />int main(void)<br />{ <br /> uint8 i;<br /> uint8 *addr;<br /><br /> MEMMAP = 0x02; // 中断向量从静态RAM重映射(用户RAM模式)<br /><br /> addr = VECTOR_RAM;<br /> for(i=0; i<64; i++) // 用0x55填充0x40000000~0x4000003F<br /> { <br /> *addr = 0x55;<br /> addr++;<br /> }<br /> <br /> addr = VECTOR_RAM;<br /> for(i=0; i<64; i++) // 用0xAA填充0x40000000~0x4000003F<br /> { <br /> *addr = 0xAA;<br /> addr++;<br /> }<br /><br /> MEMMAP = 0x00; // 中断向量从Boot Block重映射(Boot装载程序模式)<br /> <br /> while(1);<br /> return(0);<br />}<br /><br /><br />问题:<br /><br />用0x55填充0x40000000~0x4000003F,为何0x00000000~0x0000003F上的数据也会给改变成0X55?<br />难道改变0x40000000~0x4000003F同时也会改变0x00000000~0x0000003F吗 ?<br />二者到底是怎样的关联方式 ? |
|