×
单片机 > 单片机程序设计 > 详情

快速学Arm(30)--存储器寻址(3)

发布时间:2022-09-13 发布时间:
|

LPC2300系列ARM含有片内Flash,片内SRAM,Boot ROM等,通过存储器的重映射机制对异常向量表进行重映射,可以实现不同的存储器中处理异常事件.如果将异常向量表重新映射到对应存储器.Boot ROM是指保存引导代码(Boot Block)的那部分Flash存储单元.


LPC2300复位后,首先运行Boot Block,将Boot Block内0x7FFF E000~0x7FFF E03F的异常向量表映射到0x0000 0000~0x0000 003F地址以运行处理异常并在装载过程中发生异常.

再根据存储器映射控制寄存器(MEMMAP)的设置运行不同存储器的代码.
当MEMMAP[1:0]=01,此时无需进行Flash向量表的重映射,其向量表本身就是处于0x0000 0000~0x0000 003F地址空间.MEMMAP[1:0]的四种情况:

00: Boot Loader模式,中断向量被重新映射到Boot ROM.

01:用户Flash模式,中断向量被重定向并驻留在Flash中.

10:用户RAM模式,中断向量被重新到静态RAM

11:用户外部存储器模式(仅仅LPC2378)


Boot Block是芯片设计厂家在LPC2300系列ARM内部固化的的一段代码,用户无法对其修改或.这段代码在芯片复位后被首先执行.Boot Block的功能包括,判断用户代码是否有效,芯片是否加密,在应用编程(IAP)综合系统ISP.


当异常向量表前8条指令的机器码累加和为0时,Boot Block认为用户代码有效,否则为无效.我看了一下,大概就是异常向量表的8个字(每个向量1个字)的指令码得和如果是0,则认为是用户代码有效.为什么是这样,我想应该是个技巧,不用去管他.


对芯片加密的步骤很简单,只须在芯片Flash的0x01FC地址出放置加密标志0x87654321即可.当Boot Block检查到该地址存在加密标志时,就对芯片的JTAG和ISP操作进行限制,从而达到加密的效果.


LPC2300系列ARM内部的Flash是无法从外表直接擦写的,这个功能必须通过IAP代码来实现.IAP可以实现片内的Flash的擦除,查空校验,器件ID读取,以及将数据从RAM写入指定的Flash控件等功能.


ISP功能是一种非常有用的片内Flash烧写方式.CPU进入ISP状态时,通过UART0使用约定的协议与上位机里的ISP软件通信.有两种方法可以使CPU进入ISP状态:

1.复位CPU并将CPU的P2.10引脚拉低

2.CPU内部五优先用户代码时,由Boot Block强制CPU进入ISP状态.


这些东西,当大家用到时会自然明白,这里只简单的说一下.



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR熔丝位操作时的要点和需要注意的相关事项