您好!
在 TMS570LC4357上、加电时、我们将根据存储器要求配置 PLL 和 MPU 区域、并且我们能够成功配置它们。 但是、当我们从引导模式跳转到应用程序时、我们必须根据应用程序要求重新配置 MPU。
下面是引导中的初始化序列:
- 内核寄存器初始化
- 初始化 堆栈指针
- 初始化 L2 RAM
- 系统初始化
- 配置 IRQ 偏移
- 初始化 VIM 表
- 初始化 ESM 组1
- 系统时钟初始化
- MPU 初始化
下面是用于配置 MPU 区的示例代码片段:
mpuInit_
;禁用 MPU
MRC P15、#0、r0、c1、c0、 0
BIC r0、r0、#1
DSB
MCR P15、#0、r0、c1、c0、 0
ISB
;禁用背景区域
MRC P15、#0、r0、c1、c0、 0
BIC r0、r0、#0x20000
MCR P15、#0、r0、c1、c0、 0
;设置区域1
MOV r0、#0
MCR P15、#0、r0、C6、C2、 0
LDR r0、r1Base
MCR P15、#0、r0、C6、C1、 0
MOV r0、#0x0008
ORR r0、r0、#0x1000
MCR P15、#0、r0、C6、C1、 4.
movw r0、#((1 << 15)+(1 << 14)+(1 << 13)+(1 << 12)+(1 << 11)+(1 << 10)+(1 << 9)+(1 << 8)+(0x1F << 1)+(1)))
MCR P15、#0、r0、C6、C1、 2
启动应用程序时、会遵循类似的启动初始化序列。 引导能够成功配置 MPU 并启动应用程序、但是、当应用程序开始初始化 MPU 时、当禁用 MPU 时执行'dsb'指令时、我们会收到异常。
在初始化 MPU 时、请告诉我是否缺少任何要求。
谢谢、此致、
Parth
