N32G45XVL-STB之启动管理

目录

概述

1 启动管理介绍

1.1 启动地址

1.2 启动配置

 1.3 启动模式列表

1.4 内嵌启动程序

2 SystemMemory 启动应用

2.1 问题描述

2.2  编程实现


概述

本文主要介绍N32G45XVL-STB之启动管理内容,包括启动地址的选择,启动模式的类型,还介绍了一个实际使用的案例:当JTAG、SWO功能被禁止之后,如何重新对MCU编程。笔者通过具体的实操步骤,介绍了解决这个问题的方法。

1 启动管理介绍

1.1 启动地址

在系统启动时,可以通过 BOOT1 和 BOOT0 引脚来选择在复位后的启动模式,在系统复位后或待机模式退出时, BOOT引脚的值将被被重新锁存。经过启动延迟之后, CPU 从地址 0x0000_0000 获取堆栈顶的地址,并从地址 0x0000_0004指示的复位向量地址开始执行代码。由于 Cortex-M4FP 始终通过 ICode 总线从地址 0x0000_0000 和 0x0000_0004 获取堆栈顶指针和复位向量,所以启动仅适合于从 CODE 代码区开始,设计上需要对启动空间进行地址重映射。

有三种启动模式可选:

从主闪存存储器(Main Flash)启动:


主闪存存储器被映射到启动空间(0x0000_0000);
主闪存存储器可在两个地址区域访问, 0x0000_0000 或 0x0800_000(ICode/DCode/DMA1/DMA2);

从系统存储器(System Memory)启动:


系统存储器被映射到启动空间(0x0000_0000);
系统存储器可在两个地址区域访问, 0x0000_0000 或 0x1FFF_0000(ICode/DCode/DMA1/DMA2);

从内置 SRAM 启动:


内置 SRAM 被映射到启动空间(0x0000_0000);
内置 SRAM 可在两个地址区域访问, 0x0000_0000 或 0x2000_0000(ICode/DCode/SBus/DMA1/DMA2);

1.2 启动配置

SRAM 可以通过虚拟地址段 0x1000_0000 进行存取访问,这使得 CPU 从 Main Flash 或 SystemMemory 启动后,可跳转到 SRAM 通过 ICode/DCode 运行程序(注意不是从 SRAM 启动程序,不属于启动模式)。

除了 BOOT 引脚配置启动程序外,还有两种方式可以在 SRAM 运行程序:

1)直接跳转到 SRAM 的物理地址段 0x2000_0000 运行程序,此时将通过 SBus 运行程序;

2) 跳转到 SRAM 的虚拟地址段 0x1000_0000,内部重映射到物理地址段 0x2000_0000 运行程序,此时将通过 ICode/DCode 高效运行程序。

 1.3 启动模式列表

1.4 内嵌启动程序

内嵌的自举程序存放在系统存储器 System Memory 内,用于通过 USART1 或者 USB-FS 接口(全速 USB 设备, DFU 协议)对闪存存储器进行重新编程。

注意点-1:

USB-FS 接口:

当外部使用 4MHz、 6MHz、 8MHz、 12MHz、 16MHz、 18MHz、24MHz、 32MHz 时钟(HSE)才能运行 USB-FS 接口

注意点-2:

USART1 接口:

除了可以依靠上述的 8 个频率的外部时钟(HSE) 外,还可以依靠内部 8MHz 振荡器(HSI)运行。


2 SystemMemory 启动应用

2.1 问题描述

对MCU编程一般使用JTAG或者SW,这些接口和MCU的IO口复用的。当进行代码调试时,这些IO一般被配置JTAG或者SW,此时IO口不可用。一旦该接口被配置为普通IO时。JTAG和SW功能不可用。

问题:

此时如果要对MCU编程,必须使MCU的启动代码运行到SystemMemory 模式下

2.2  编程实现

根据启动列表可得,要使得MCU运行到 System Memory启动模式,BOOT0=1,BOOT1=0。

启动模式
选择引脚
启动模式对应启动模式下,访问内存空间的起始地址
BOOT1BOOT0Main FlashSystem MemorySRAM
X0Main Flash 启动0x0000_0000
0x0800_0000
0x1FFF_00000x1000_0000
0x2000_0000
01System Memory
启动
0x080000000x0000_0000
0x1FFF_0000
0x1000_0000
0x2000_0000
11SRAM 启动0x080000000x1FFF_00000x0000_0000
0x1000_0000
0x2000_0000

 硬件上的操作位置和操作方法:

将BOOT0和3.3V Pin连接起来,然后板卡断电,等待板卡完成断电后,重新上电,此时,SWO接口能连接上MCU,可实现编程功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值