安全STM32H7 启动流程
安全STM32H7新增选项字节:SECURITY、 SEC_AREA
•系统复位,装载选项字节的过程中,如果SECURITY置位,则无论BOOT引脚电平以及
BOOTADDR选项字节的内容,一定从位于片上系统Flash的RSS启动
• RSS会检查SEC_AREA的内容,是否已经有指定的有效区域(有效区域是指起始地址小于
结束地址)。如果区域有效,则跳转到它所指向的用户Flash上的“安全用户存储区”执行。
如果区域无效,则按照常规启动流程,根据BOOT引脚电平,选择从BOOTADDR0或
BOOTADDR1指向的地址启动
• BOOTADDR0和BOOTADDR1可以填写[0x0,0x3FFF 0000]范围内的任意地址。 RDP2情况
下,系统只能从片上用户Flash启动。如果BOOTADDR0或者BOOTADDR1指向的不是片上
用户Flash,系统会强制从0x0800 0000启动
• SECURITY=1时,系统复位时调试端口关闭
•运行在RSS和安全用户存储区时,调试端口关闭
上电复位状态
• 只要使能Security并设置了安全用户闪存区的有效范围,则总是跳转到该区域的首地址运行
• 在这个区域(region A)内执行的时候,无法通过Debug连接芯片(即使RDP0状态下)
• 复位和运行在region A的时候,芯片处于“安全访问模式。
• 只要使能Security并设置了安全用户闪存区的有效范围,则总是跳转到该区域的首地址运行
• 在这个区域(region A)内执行的时候,无法通过Debug连接芯片(即使RDP0状态下)
• 复位和运行在region A的时候,芯片处于“安全访问模式。
• 芯片出厂时选项字节的缺省设置: SECURITY=0, “安全用户闪存区”是无效区域
• 设置 “安全用户闪存区”必须在SECURITY置位之后;否则设置无效
• “安全用户闪存区”有效的情况下,或者PCROP区域有效的情况下,SECURITY的清
零无法成功;需要先把这两种区域都设置成无效,再对SECRUITY清零
• “安全用户闪存区”的撤销,只需要运行在RSS或“安全用户闪存区” 的代码,把选项字节在Flash接
口中对应的寄存器,其起始地址设置成大于结束地址,并让选项字节生效即可
• PCROP区域的撤销,需要通过RDP降级和PCROP区域无效,同时进行才能完成
具体的说明见附件中的文档:• 设置 “安全用户闪存区”必须在SECURITY置位之后;否则设置无效
• “安全用户闪存区”有效的情况下,或者PCROP区域有效的情况下,SECURITY的清
零无法成功;需要先把这两种区域都设置成无效,再对SECRUITY清零
• “安全用户闪存区”的撤销,只需要运行在RSS或“安全用户闪存区” 的代码,把选项字节在Flash接
口中对应的寄存器,其起始地址设置成大于结束地址,并让选项字节生效即可
• PCROP区域的撤销,需要通过RDP降级和PCROP区域无效,同时进行才能完成
游客,如果您要查看本帖隐藏内容请回复