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