理论教育 ARM嵌入式系统基础与应用:存储器重映射

ARM嵌入式系统基础与应用:存储器重映射

时间:2023-11-03 理论教育 版权反馈
【摘要】:LPC2138的存储器映射控制是从处理ARM异常必需的3个数据源中选择一个使用。然后设置MEMMAP=2进行存储器重映射,使保存在0x40000000地址处的异常向量表映射到0x00000000地址上。后面几个实例将采用如图3-10所示的Proteus仿真电路。本例程序测试用户RAM模式和Flash模式下的存储器映射。图3-10 Proteus仿真电路需要注意的是,Proteus中ARM7模型不能进行存储器重映射仿真,本例只有在实际硬件电路板上运行,才能够观察到正确的结果。

ARM嵌入式系统基础与应用:存储器重映射

LPC2138的存储器映射控制是从处理ARM异常必需的3个数据源(Flash异常向量、Sram异常向量和Boot Block异常向量,每个异常向量为64B)中选择一个使用。芯片复位时MEMMAP=0,启动Boot装载程序,Boot装载程序检查P0.14引脚的状态和用户的异常向量表,判断是进入ISP还是启动用户程序。若启动用户程序,则自动设置MEMMAP=1,从片内Flash启动。若用户程序需要随时更改异常向量表,可以将64B的异常向量表复制到片内RAM从0x40000000地址开始的区域,从而可以对向量表进行修改。然后设置MEMMAP=2进行存储器重映射,使保存在0x40000000地址处的异常向量表映射到0x00000000地址上。

后面几个实例将采用如图3-10所示的Proteus仿真电路。

例3-1 存储器重映射。

本例程序测试用户RAM模式和Flash模式下的存储器映射。默认从片内Flash启动用户程序,先将64B的异常向量表复制到片内RAM从0x40000000地址开始的区域,然后设置MEMMAP=2进行存储器重映射,使保存在0x40000000地址处的异常向量表映射到0x00000000地址上。这时在用户RAM区的0x40000000~0x4000003F处填入0x55,可以发现在0x00000000~0x0000003F处的内容也变成了0x55。

978-7-111-44508-1-Chapter03-56.jpg(www.daowen.com)

图3-10 Proteus仿真电路

需要注意的是,Proteus中ARM7模型不能进行存储器重映射仿真,本例只有在实际硬件电路板上运行,才能够观察到正确的结果。主程序文件main.c如下:

978-7-111-44508-1-Chapter03-57.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈