4 5 MAM MAM MAMFlash 1 MAM 2

  • Slides: 82
Download presentation

4. 5 存储器加速模块(MAM) • MAM应用示例 MAM部件Flash访问 时钟的配置: 1 关闭MAM部件; 2 根据系统时钟配置 取指周期; 3 启动MAM部件。

4. 5 存储器加速模块(MAM) • MAM应用示例 MAM部件Flash访问 时钟的配置: 1 关闭MAM部件; 2 根据系统时钟配置 取指周期; 3 启动MAM部件。 void MAMSet(uint 32 Fcclk) { MAMCR = 0; If(Fcclk < 20000) { MAMTIM = 1; } else if(Fcclk < 40000000) { MAMTIM = 2; } else { MAMTIM = 3; } MAMCR = 2; }

4. 6 外部存储器控制器(EMC) • 向PSRAM中写入 16位数据 向PSRAM中 0 x 80001020地 址循环写入从0开始递增的数据。 使用逻辑分析仪捕捉到前4 次操作的波形。 uint

4. 6 外部存储器控制器(EMC) • 向PSRAM中写入 16位数据 向PSRAM中 0 x 80001020地 址循环写入从0开始递增的数据。 使用逻辑分析仪捕捉到前4 次操作的波形。 uint 16 *point 16; uint 16 data 16 = 0 x 00; point 16 = (uint 16 *)0 x 80001020; while(1) { *point 16 = data 16++; }

4. 7 引脚连接模块 • PINSEL 2寄存器与外部总线 PINSEL 2[5: 4]与数据总线和控制线的关系列表 PINSEL 2 [5: 4] 数据总

4. 7 引脚连接模块 • PINSEL 2寄存器与外部总线 PINSEL 2[5: 4]与数据总线和控制线的关系列表 PINSEL 2 [5: 4] 数据总 线宽度 P 2. 27: 15 P 2. 15: 8 P 2. 7: 0 P 3. 31 P 3. 30 P 3. 29: 28 P 1. 1 P 1. 0 10 32位 D[31: 16] D[15: 0] D[7: 0] BLS 0 BLS 1 BLS 3: 2 OE CS 0 01 16位 D[15: 0] D[7: 0] BLS 0 BLS 1 CS 0 8位 GPIO D[7: 0] BLS 0 GPIO OE CS 0 11 无 GPIO PINSEL 2 [6; 7] 控制 OE 00 PINSEL 2 [20; 22] 控制 GPIO PINSEL 2[27: 25]与地址线的关系列表 PINSEL 2 [27: 25] 000 001 010 011 100 101 110 111 地址线宽度 无地址线 A 3: 2 A 5: 2 A 7: 2 A 11: 2 A 15: 2 A 19: 2 A 23: 2

 • GPIO应用示例——设置P 0. 0输出高电平 out IO 0 SET 1 in P 0. 0

• GPIO应用示例——设置P 0. 0输出高电平 out IO 0 SET 1 in P 0. 0 IO 0 DIR PINSEL 0 0 IO 0 CLR IO 0 PIN C代码:. . . PINSEL 0 &= 0 x. FFFFFFFC; (1) 设置引脚连接模块,P 0. 0为GPIO IO 0 DIR |= 0 x 00000001; (2) 设置P 0. 0口方向,设置为输出 IO 0 SET = 0 x 00000001; (3) 设置P 0. 0口状态,输出高电平 . . .

 • GPIO应用示例——读取P 0. 0引脚状态 out IO 0 SET 1 in P 0. 0

• GPIO应用示例——读取P 0. 0引脚状态 out IO 0 SET 1 in P 0. 0 IO 0 DIR PINSEL 0 0 IO 0 CLR IO 0 PIN C代码:. . . uint 32 Pin. Stat; PINSEL 0 &= 0 x. FFFFFFFC; (1) 设置引脚连接模块,P 0. 0为GPIO IO 0 DIR (2) 设置P 0. 0口方向,设置为输入 Pin. Stat. . . &= 0 x. FFFFFFFE; = IO 0 PIN; (3) 从IO 0 PIN读取引脚状态

软件中断使能寄存器 VICSoft. Int 软件中断清零寄存器 VICSoft. Int. Clear 中断使能清零寄存器 VICInt. En. Clr 中断状态寄存器 VICRaw. Intr

软件中断使能寄存器 VICSoft. Int 软件中断清零寄存器 VICSoft. Int. Clear 中断使能清零寄存器 VICInt. En. Clr 中断状态寄存器 VICRaw. Intr 中断源 [31: 0] 向量IRQ 0控制寄存器 VICVect. Cntl 0 向量IRQ 0 IRQ 中断使能寄存器 VICInt. Enable IRQ中断状态寄存器 VICIRQStatus 高 向量IRQ 0使能 中断源 IRQ 0 Vect. Addr 0 向量地址0寄存器 VICVect. Addr 0 优 先 级 向量IRQ 15 FIQ 向量IRQ 15控制寄存器 VICVect. Cntl 15 向量IRQ 15使能 FIQ中断状态寄存器 VICFIQStatus 中断选择寄存器 VICInt. Select 硬 件 优 先 级 选 择 IRQ中断信号 IRQ 15 IRQ 0 Vect. Addr 15 IRQ 15 中断源 向量地址15寄存器 VICVect. Addr 15 Def. IRQ 低 非向量IRQ FIQ 中断 信号 默认向量地址寄存器 VICDef. Vect. Addr Def. IRQ Def. Vect. Addr 向量地址选择 向量地址寄存器 VICVect. Addr

 • 寄存器描述-参数设置寄存器 向量IRQ 0控制寄存器 VICVect. Cntl 0 向量IRQ 0使能 中断源 向量地址0寄存器 VICVect. Addr

• 寄存器描述-参数设置寄存器 向量IRQ 0控制寄存器 VICVect. Cntl 0 向量IRQ 0使能 中断源 向量地址0寄存器 VICVect. Addr 0 向量IRQ 15控制寄存器 VICVect. Cntl 15 向量IRQ 15使能 默认向量地址寄存器 VICDef. Vect. Addr 中断源 向量地址15寄存器 VICVect. Addr 15 向量地址寄存器 VICVect. Addr 名称 描述 复位置 地址 VICVect. Cntl 0 ~ VICVect. Cntl 15 向量控制 0寄存器 ~ 向量控制 15寄存器 0 0 x. FFFF F 200 ~ 0 x. FFFF F 23 C VICVect. Addr 0 ~ VICVect. Addr 15 向量地址0寄存器 ~ 向量地址15寄存器 0 0 x. FFFF F 100 ~ 0 x. FFFF F 13 C VICDef. Vect. Addr 默认向量地址寄存器 0 0 x. FFFF F 034 VICVect. Addr 向量地址寄存器 0 0 x. FFFF F 030

4. 9 向量中断控制器 • IRQ中断处理 软件处理 硬件处理 1 SPSR_irq = CPSR 1 PC 2

4. 9 向量中断控制器 • IRQ中断处理 软件处理 硬件处理 1 SPSR_irq = CPSR 1 PC 2 CPSR = nzcvq. Ift_irq 2 执行中断服务程序 3 VICVect. Addr = VICVect. Addrn 3 设置返回地址 4 LR_irq = PC 4 恢复程序状态寄存器CPSR 5 PC = 0 x 18 [VICVect. Addr]

4. 9 向量中断控制器 • IRQ中断处理 软件处理 硬件处理 1 SPSR_irq = CPSR 1 LDR 2

4. 9 向量中断控制器 • IRQ中断处理 软件处理 硬件处理 1 SPSR_irq = CPSR 1 LDR 2 CPSR = nzcvq. Ift_irq 2 执行中断服务程序 3 VICVect. Addr = VICVect. Addrn 3 设置返回地址 4 LR_irq = PC 4 恢复程序状态寄存器CPSR 5 PC = 0 x 18 PC, [PC, #-0 xff 0] SUBS PC, LR, #4

 • VIC相关启动代码分析 异常向量表: §一旦产生IRQ中断,微控 制器切换到IRQ模式,并跳 转到向量表 0 x 0018地址执 行指令。 §一旦产生FIQ中断,微控 制器切换到FIQ模式,并跳 转到向量表

• VIC相关启动代码分析 异常向量表: §一旦产生IRQ中断,微控 制器切换到IRQ模式,并跳 转到向量表 0 x 0018地址执 行指令。 §一旦产生FIQ中断,微控 制器切换到FIQ模式,并跳 转到向量表 0 x 001 C地址执 行指令,然后跳转到 FIQ_Handler代码段。 CODE 32 AREA vectors, CODE, READONLY ENTRY Reset LDR PC, Reset. Addr LDR PC, Undefined. Addr . . . DCD 0 xb 9205 f 80 LDR PC, [PC, #-0 xff 0] LDR PC, FIQ_Addr Reset. Addr DCD Reset. Init Undefined. Addr DCD Undefined . . . Nouse DCD 0 IRQ_Addr DCD 0 FIQ_Addr DCD FIQ_Handler