对于一般的处理器,系统启动后是从0x00000000地址开始读取中断向量表并引导程序的。但利用LPC2000的存储器重映射功能,我们可以将中断向量表转移至其它存储器,而不一定要从0x00000000这个地址读取。
LPC2000的这个功能是通过存储器映射控制寄存器MEMMAP和BOOT管脚来实现的。
4.1 寄存器MEMMAP的取值
MEMMAP 功能 描述
00 Boot装载程序模式 中断向量从Boot Block重新映射。一般情况下,即为地址0x7FFFE000
01 用户Flash模式 中断向量不重新映射,它位于Flash中。一般情况下,即为地址0x00000000
10 用户RAM模式 中断向量从静态RAM重新映射。一般情况下,即为地址0x40000000
11 用户外部存储器模式 中断向量从外部存储器重新映射。一般情况下,即为地址0x80000000
特别注意,不正确的设定会导致器件的错误操作。
例如,每当产生一个软件中断请求,ARM内核就从0x0000 0008处取出32位数据。这就意味着当MEMMAP[1:0]=10(用户RAM模式)时,从0x0000 0008的读数/取指是对0x4000 0008单元进行操作;当MEMMAP[1:0]=00(Boot装载程序模式)时,从0x0000 0008的读数/取指是对0x7FFF E008单元的数据进行操作(Boot Block从片内ROM存储器重新映射);如果MEMMAP[1:0]=11(用户外部存储器模式),从地址为0x8000 0008的片外存储器中读取数据。
4.2 BOOT管脚的功能
LPC22xx系列具有外部存储器接口,BOOT[1:0]脚的状态控制着引导方式,见下表。引脚悬空,内部上拉电阻保证其高电平状态。
BOOT1 BOOT1 引导方式 备注
0 0 CS0控制的8位存储器 MEMMAP[1:0]应设置为11
0 1 CS0控制的16位存储器 MEMMAP[1:0]应设置为11
1 0 CS0控制的32位存储器 MEMMAP[1:0]应设置为11
1 1 内部Flash存储器 MEMMAP[1:0]应设置为01
注意:BOOT管脚和MEMMAP寄存器的设置应该根据硬件电路的具体情况进行设置。若从32位的外部存储器引导,则MEMMAP[1:0]应设置为11,BOOT管脚设置为10。
对于LPC21xx系列,没有外部存储器接口,只能设置MEMMAP[1:0]为01。
对于LPC2200,无片内Flash,故不能设置MEMMAP[1:0]为01。
当然,也可以将P0.14接地,强制芯片重启后(/RESET为低)进入ISP状态。
4.3举例:启动代码
#ifdef __DEBUG
MEMMAP = 0x3;
#endif
#ifdef __OUT_CHIP
MEMMAP = 0x3;
#endif
#ifdef __IN_CHIP
MEMMAP = 0x1;
#endif
上一篇:LPC2000系列学习笔记3--引脚连接模块
下一篇:S3C2440—12.按键中断
推荐阅读最新更新时间:2024-11-20 10:24
设计资源 培训 开发板 精华推荐
- 【仿真模型】01-电阻器
- 使用 Analog Devices 的 LTC1867LACGN 的参考设计
- LT3587 的典型应用 - 高压单片式逆变器和双路升压
- 使用 Analog Devices 的 LTC1775CGN 的参考设计
- LM258DR2G 运放函数发生器的典型应用
- 使用 Infineon Technologies AG 的 OMR9601SCPPBF 的参考设计
- LT1764AEFE-3.3 SCR 预稳压器的典型应用可提供跨线路变化的效率
- LT3971-3.3、1.8V 降压转换器的典型应用电路
- #第七届立创电赛#多功能功率计
- 使用 NXP Semiconductors 的 MC13892VK 的参考设计