硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3300|回复: 2
收起左侧

[BOOT/IAP] STM32H7的系统BootLoader知识点研究整理(2020-02-17)

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107645
QQ
发表于 2020-2-17 14:43:11 | 显示全部楼层 |阅读模式
一、除了使用boot引脚控制运行系统BootLoader,也可以上电后跳转,跳转前注意以下问题:
(1)禁止所有外设时钟
(2)禁止使用的PLL
(3)禁止所有中断。
(4)清除所有中断挂起标志。

退出系统BootLoader的方法:
(1)退出boot激活条件,产生硬件复位。
(2)使用Go命令执行用户代码。

重要注意事项:
(1)如果使用Go命令,对于BootLoader中使用的硬件外设寄存器,跳转前是不会设置到复位值的,如果用户代码中恰好也用到这些寄存器,需要重新配置。这里要特别注意的是BootLoader会用到看门狗,并且喂狗时间设为最长了,如果用户代码里面要用到看门狗请根据需要重新配置,并且看门狗一旦开启是无法关闭的。
(2)对于具有双bank特性的STM32,为了能够从用户代码跳转到系统boot,需要将系统boot代码区使用寄存器SYSCFG重映射到0x0000 0000(除了STM32F7系列)。对于STM32F7系列,需要禁止nDBOOT / nDBANK 特性,然后跳转到系统boot区。
(3)如果用到系统bootl的DFU/USB接口,需要用到HSE时钟,这个时钟的频率是通过内部HSI/MSI检测出具体频率。因此,由于外部温度等各种情况,内部HSI的精度会受到影响,从而影响检测出来的HSE时钟有较大误差,最终导致DFU/CAN运行失败。



二、BootLoader的内存管理:

使用bootloader命令进行的所有写操作都只能对齐字(地址应该是4的倍数。 要写入的数据数量也必须是4的倍数(接受未对齐的半页写地址)。

1、有些产品不支持批量擦除操作。 使用BootLoader进行批量擦除时,有两个选项可用:
(1)使用扇区擦除命令一个一个删除。
(2)将保护级别设置为1,然后设置为0(使用读保护命令,然后使用读非保护命令),将导致大批量擦除操作。


2、STM32 L1和L0系列的Bootloader除了支持操作内部Flash,内部SRAM,可选字节等,还支持操作Data Memeory(数据存储区,貌似是指的EEPROM)

数据存储区支持读写操作,而不支持擦除命令,如果要擦除,写0即可。另外对此存储区的写操作必须是4字节对齐(写的地址),并且写入的数据也是4的倍数。

3、F2, F4, F7 和 L4除了支持操作内部Flash,内部SRAM,可选字节等,还支持操作OTP存储区。仅支持读写操作,不支持擦除命令。

4、F2, F4 和 F7系列的内部Flash写格式依赖于供电电压范围,默认的写操作只支持字节(半字,字和双字是不支持的),为了增加些操作速度,用户施加足够的电压范围以允许写操作按半字,字或双字,并通过虚拟内存位置的boot程序更新此配置。该内存位置不是物理地址,但可以根据协议使用常规的BootLoader读/写操作。 该存储位置包含4个字节,分别为如下表所述。

1.png

1.png
2.png
3.png
4.png
6.png









回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107645
QQ
 楼主| 发表于 2020-2-18 09:19:23 | 显示全部楼层
更新完毕。
回复

使用道具 举报

3

主题

1258

回帖

1267

积分

至尊会员

积分
1267
发表于 2020-2-18 09:21:05 | 显示全部楼层
回复

使用道具 举报

3

主题

1258

回帖

1267

积分

至尊会员

积分
1267
发表于 2020-2-18 09:55:55

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-10 15:38 , Processed in 0.227639 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表