历史上的今天
今天是:2025年01月17日(星期五)
2021年01月17日 | 快速学Arm(30)--存储器寻址(3)
2021-01-17 来源:eefocus
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状态.
这些东西,当大家用到时会自然明白,这里只简单的说一下.
史海拾趣
|
处理器的体系结构定义了指令集(ISA)和基于这一体系结构下处理器的程序员模型。尽管每个处理器 性能不同,所面向的应用不同,每个处理器的实现都要遵循这一体系结构。ARM体系结构为嵌入系统发展 商提供很高的系统性能,同时保持优异的功耗和 面 ...… 查看全部问答> |
|
各位看官,小弟现在最大的梦想就是用VB.NET控制我板子上(友善之臂MINI2400)上的那个LED灯,搞来搞去都没成功,请哪位大哥大姐行行好给个源码,只要点下按钮让灯亮就行,拜谢了… 查看全部问答> |
|
11. 基于ARM7 、9、11处理器设计的产品,类似Intel的Xscale架构产品的设计方案 (功能特点、结构、作用 举例子说明设计方案,如GPS、游戏机、POS……) 12. 嵌入式系统实时性? ...… 查看全部问答> |
|
我的cisco2600路由器被人把IOS删掉了,我要从另一个2600路由器下载IOS,怎么下呢??高分求助! 我用的是COPY FLASH TFTP命令 ,但是总是报错:TFTP://10.1.1.3 timeout 10.1.1.3是我设置的本机IP。 怎么解决呢》?求高手指教啊 … 查看全部问答> |
|
请问linux下gcc怎么安装,我没有光盘,只有一个gcc-3.2.2-5.i386.rpm,安装的错误提示为: Missing Dependency: glibc-devel >= 2.2.90-12 is needed by package gcc Missing Dependency: cpp = 3.2.2-5 is needed by package gcc 还有,linux下 ...… 查看全部问答> |




