第3讲_ARM 存储器结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
留给用户 进行电路3 . 0 G B 扩展的地 址空间
保留给片外存储器
芯片 复位 后用 户看 见的 地址 空间
2.0GB
网络 0x83400000~0x8340001F Bank3 LCD 0x83000000~0x83400002 外设PACK Bank2 片外存储器 Bank1 Bank0
0xC0000000
异常向量表
CODE32 AREA vectors,CODE,READONLY
例如:发生未定义异常时
Reset
ENTRY
1.程序计数器(PC)指向 0x00000004; 2.执行当前的指令,将 Undefined地址值装入PC, 实现至未定义异常处理程 序的跳转。
LDR LDR . . . DCD LDR LDR
Boot Block SRAM SRAM
0x80000000
Flash Flash
地址空间
成都信息工程学院3+1 创新实验班 - 2012/6/25
讨
论
什么是存储器重映射,为什么要重映射?
成都信息工程学院3+1 创新实验班 - 2012/6/25
2 存储器重映射(映射控制器)
存储器重映射Remap
如果试图访问 一个保留地址 或未分配区域 的地址,ARM 处理器将产生 预取指中止或 数据中止异常。
0x82000000 Bank1:0x8100 0000~0x81FF FFFF Bank0:0x8000 0000~0x80FF FFFF
0x80000000 0x7FFFFFFF 0x7FFFE03F 0x7FFFE000 0x7FFFDFFF
片内存储器
内部SRAM
0x40000000
内部Flash
0x00000000
成都信息工程学院3+1 创新实验班 - 2012/6/25
4.0GB 3.75GB 3.5GB
AHB外 设 保留 保留 VPB外 设
0xFFFFFFFF 0xFFE0FFFF 0xF0000000 0xE01FFFFF 0xE0000000
VPB 外设#1
VPB 外设#0 地址空间
成都信息工程学院3+1 创新实验班 - 2012/6/25
启动块(Boot Block)
•启动块(Boot程序)是芯片生产厂家固化在芯片中的 一段代码,包括ISP、IAP和Real Monitor程序。
•它完成芯片复位后的初始化操作,并提供实现Flash编 程的方法。Boot装载程序可启动对空片的编程、已编程 器件的擦除和再编程,以及在运行的系统中由应用程 序对Flash存储器进行编程。
PC, ResetAddr PC, UndefinedAddr
装入
0xb9205f80 PC, [PC, #-0xff0] PC, FIQ_Addr
ResetAddr UndefinedAddr . . . Nouse IRQ_Addr
DCD DCD
ResetInit Undefined
DCD DCD
创新实验班 - 2012/6/25
异常向量表
各异常向量的固定位臵
地址 异常 0x0000 0000 复位 0x0000 0004 未定义指令 该位臵被Boot装载程序用作有效用户程序的检测标志。通 0x0000 0008 软件中断 过定义此保留值,使向量表所有数据32位累加和为0,芯片 复位后才能脱机运行用户程序。 0x0000 000C 预取指中止(从存储器取指出错) 0x0000 0010 数据中止(访问存储器数据出错) 0x0000 0014 保留 * 0x0000 0018 IRQ 0x0000 001C FIQ
外部中断
TIMER0/1 ADC 通用I/O PWM0
I2C串行接口
SPI串行接口 UART0 & 1 CAN 看门狗定时器
实时时钟
系统控制
成都信息工程学院3+1 创新实验班 - 2012/6/25
AHB外设映射
AHB 外设#127 向量中断控制器 AHB 外设#126 AHB 外设#125 … AHB 外设#1 AHB 外设#0 0xFFE04000 0xFFE00000 0xFFFFF000 0xFFFFC000 0xFFFF8000 0xFFFF4000
保留
均为128×16KB (源自文库MB)范围
0xE01FFFFF
3.5GB+2MB
VPB 外设 3.5GB 地址空间
0xE0000000
AHB(先进的高性能总线)和VPB(VLSI外设总线)外 设区域都为2M字节,可各分配128个外设。每个外设空间的 规格都为16K字节,这样就简化了每个外设的地址译码。 注意:AHB和VPB外设区域中不管是字还是半字,都是一次 性访问。例如不可能对一个字寄存器的最高字节执行单独的读 成都信息工程学院3+1 创新实验班 - 2012/6/25 或写操作
“存储器映射控制”用于控制地址范围为 0x0000~0x003F存储区域的重新映射。该区域存 放着异常向量表。 存储器重新映射是将复位后用户所见的存储器 中部分区域,再次映射到其它的地址上。 对于Philips的LPC系列ARM微控制器,存储器 重新映射区域一共为64字节,分别为异常向量区 (32字节)和紧随其后的32字节。存储器重新映射 的方法允许在不同模式下处理中断,重新映射的存 储器区域在地址0x00000000~0x0000003F处。存储 器重新映射的控制见“存储器映射控制”小节。 成都信息工程学院3+1
L E C T U R E
3
存储器与启动代码
陈子为
成都信息工程学院3+1 创新实验班 - 2012/6/25
对本部分的要求
掌握存储器配置(映射与重映射)的方法 掌握外部存储器的控制方法 了解ARM的分散加载技术,能够看懂和修改 分散加载描述文件 对存储器加速部分,不要求搞清楚原理,但 要知道在什么情况下使用存储器加速模块, 怎样使用存储器加速模块
Boot Block
保留给片内存储器(未用)
1.0GB
16KB片 内 SARM
保留给片内存储器(未用)
0x40004000 0x40003FFF 0x4000003F 0x40000000
通过CS0(P1.0)、 CS1(P3.26)选择片 外扩展的16M NOR Flash和4M SRAM到 底映射在Bank0还 是Bank1
芯片内部框图
ARM7 局部总线 SRAM Flash AHB To VPB 桥 ARM7TDMI-S CPU 系统功能
LPC2000系列微控制器包含四 大部分: ARM7TDMI-S CPU ARM7局部总线及相关部件 AHB高性能总线及相关部件 VLSI外设总线及相关部件
AHB总线
VIC EMC
256KB 片 内 Flash
0.0GB
0x40000000 0x0003FFFF 0x00020000 0x0001FFFF 0x0000003F 0x00000000
128KB 片 内 Flash
成都信息工程学院3+1 创新实验班 - 2012/6/25
外设存储器映射
4.0GB AHB 外设 4.0GB-2MB 0xFFE00000 0xFFFFFFFF
ResetAddr UndefinedAddr
DCD DCD
ResetInit Undefined
后32字节为跳转地址
. . . Nouse IRQ_Addr DCD DCD 0 0
FIQ_Addr
DCD
FIQ_Handler
成都信息工程学院3+1 创新实验班 - 2012/6/25
位于启动代码中的异常向量表
异常向量表
AREA vectors,CODE,READONLY ENTRY Reset LDR LDR LDR LDR LDR PC, ResetAddr PC, UndefinedAddr PC,
可能存在的 SWI_Addr 程序存储器
PC, PrefetchAddr PC, DataAbortAddr
成都信息工程学院3+1 创新实验班 - 2012/6/25
位于启动代码中的异常向量表
异常向量表
CODE32 AREA ENTRY Reset LDR LDR PC, ResetAddr PC, UndefinedAddr vectors,CODE,READONLY
前32字节为异常入口
. . . DCD LDR LDR 0xb9205f80 PC, [PC, #-0xff0] PC, FIQ_Addr
. . .
复位入口 指令未定义中止入口 软件中断入口 预取指中止入口 取数据中止入口 ...
成都信息工程学院3+1 创新实验班 - 2012/6/25
存储器映射控制的必要性
复位后用户看 见的地址空间 0xFFFFFFFF AHB外设 VPB外设 0xE0000000 片外存储器 0x80000000 BootBlock SRAM Flash
0 0
FIQ_Addr
DCD
FIQ_Handler
成都信息工程学院3+1 创新实验班 - 2012/6/25
存储器映射控制的必要性
当发生异常时,程序总是跳转到地址为0x0000~ 0x003F的对应入口处,在该地址范围内存储有异常向 量表。 异常向量表
AREA vectors,CODE,READONLY ENTRY Reset LDR LDR LDR LDR LDR PC, ResetAddr PC, UndefinedAddr PC, SWI_Addr PC, PrefetchAddr PC, DataAbortAddr
Boot Block的映射地址安排
为了兼容将来的器件,整个Boot Block被映 射到片内存储器空间的顶端。所以将来的芯片内 臵不同的RAM和FALSH都不会影响Boot Block的 位臵。
AHB & VPB
映射位臵固定在 内部存储器顶端 RAM和Flash 的变化不会影响 BootBlock的位臵
0x40000000
. . .
0x00000000
成都信息工程学院3+1 创新实验班 - 2012/6/25
存储器映射控制的必要性
复位后用户看 见的地址空间 0xFFFFFFFF AHB外设 VPB外设 0xE0000000 片外存储器 0x80000000 BootBlock SRAM Flash
地址空间
成都信息工程学院3+1 创新实验班 - 2012/6/25
VPB外设映射
系统控制模块 VPB外设#127 0xE01FC000 … UART 0 定时器1 VPB 外设#3 VPB 外设#2
0xE000C000 0xE0008000 0xE0004000 0xE0000000
定时器0 看门狗定时器
0 0
FIQ_Addr
DCD
FIQ_Handler
成都信息工程学院3+1 创新实验班 - 2012/6/25
位于启动代码中的异常向量表
异常向量表
CODE32 AREA vectors,CODE,READONLY ResetAddr PC, ResetAddr PC, UndefinedAddr
注意:异常向量表中程序跳 转使用LDR指令,而没有使 用B指令。 原因: 1.LDR指令可以全地址范围跳 转,而B指令只能在前后 32MB范围内跳转; 2.芯片具有Remap功能。当向 量表位于内部RAM或外部存 储器中,用B指令不能跳转到 正确的位置。
•BOOT程序中包含固化的Boot Loader,其功能为:判 断用户代码是否有效,有效执行用户代码,否则执行 ISP程序。 •其代码固化在芯片内部的8Kflash中,地址为 0x7FFFE000~0x7FFFFFFF,这部分代码用户不能修改 成都信息工程学院3+1 或删除。 创新实验班 - 2012/6/25
Reset
B
ENTRY
LDR LDR . . . DCD LDR LDR
0xb9205f80 PC, [PC, #-0xff0] PC, FIQ_Addr
ResetAddr UndefinedAddr . . . Nouse IRQ_Addr
DCD DCD
ResetInit Undefined
DCD DCD
成都信息工程学院3+1 创新实验班 - 2012/6/25
1 存储器映射
存储器映射(存储器地址分布)是指把芯片中或芯 片外的FLASH,RAM,外设,BOOT BLOCK等进 行统一编址。 地址空间
外设 片外存储器
外部存储器
0xFFFFFFFF
0x80000000
Boot Block
0x7FFFE000