ST意法半导体
直播中

张超

8年用户 1337经验值
私信 关注
[问答]

有没有办法通过STM32CubeProgrammer将安全固件映像加载到STM32L5上?

我正在尝试使用串行引导加载程序通过 STM32CubeProgrammer 将安全固件映像加载到 STM32L5。我可以在引导加载程序模式下成功连接到电路板并执行全芯片擦除,但尝试下载图像(.hex 或 .out)会导致错误:
  • 10:20:33 : Memory Programming ...
  •   10:20:33 : Opening and parsing file: project.out
  •   10:20:33 :   File          : project.out
  •   10:20:33 :   Size          : 256 KBytes
  •   10:20:33 :   Address       : 0x0C000000
  •   10:20:33 : Erasing memory corresponding to segment 0:
  •   10:20:33 : Not flash Memory : No erase done
  •   10:20:33 : Download in Progress:
  •   10:20:34 : Response received from device: NACK
  •   10:20:34 : Error: Write address not acknowledged: 0xC000000
  •   10:20:34 : Error: failed to download Segment[0]
  •   10:20:34 : Error: failed to download the File
在此设备上启用了 TrustZone (FLASH_OPTR->TZEN=1)。读取 0x0BF97FFE 会返回引导加载程序 ID 0x92。
有没有办法通过串行引导加载程序应用安全映像?
谢谢!
更新:
我尝试将我的项目转换为原始二进制文件并将其上传到地址 0x0800'0000。上传报告成功,但验证失败,回读内存显示未编程。


回帖(1)

李杨

2022-12-13 09:33:43
是的,嵌入式引导加载程序在非安全环境中运行。
因此,如果您激活了 trustzone,则默认配置是闪存是完全安全的。
您仍然可以更改此配置以使其完全不安全,并且您将能够编写固件。然后您应该能够通过选项字节再次设置安全区域。
其他方法可能是使用 TZEN=0 对您的软件进行编程,然后激活它并设置正确的安全水印。这也可以通过您的固件来完成。
关于解决安全别名 (0x0C000000),我认为这无论如何都行不通。系统引导加载程序检查地址范围,我认为不包括这个。
所以,我需要使用二进制下载而不是 elf 或 hex。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分