STMCU小助手
发布时间:2022-8-23 16:16
|
简述 STM32CubeProgrammer(STM32CUBEPROG)为任意环境下的STM32微控制器编程提供了 一个一体化的软件工具:多操作系统,图形用户界面或命令行界面,支持多种连接选择(JTAG、SWD、USB、UART),采用手动操作或通过脚本自动操作。( T. K c9 C! K+ I+ V. z 很多情况下,我们为了程序安全,都会在烧录时,使能读保护功能,这样别人就无法通过SWD/JTAG接口访问程序了。之前的STM32 ST-LINK Utility 或者 Jlink 的Segger 软件都能很方便的找到解除读保护的办法,但是新一代的烧录程序STM32CubeProgrammer就很隐蔽了,本文就是介绍了如何通过STM32CubeProgrammer进行加密和解密。6 J! F! z7 n. S 但是请注意,取消读保护后,将对Flash和备份SRAM执行全部擦除,也就无法读出之前的程序。. R; j+ W$ D6 ` 开启读保护 为了方便测试,这里还是要先说明如何使用STM32CubeProgrammer开启读保护。 3 |5 z* w" a c! p- X 在进行读保护设置之前,先了解一下读保护的等级,STM32的读保护有三个等级,详情参考STM32F4xx的中文参考手册。 & ]/ _; F7 C' o$ t( v 可对 Flash 中的用户区域实施读保护,以防不受信任的代码读取其中的数据。读保护分三个 级别,具体定义如下:, ?) q" |- Z- c# K d5 w
级别2特别狠,无法降级,以后只能在用户代码中使用外设(Uart、USB、ETH等)获取数据进行在线升级,所以STM32CubeProgrammer 或者 Segger加密都只使用到级别1,这样用户才能取消读保护。/ I9 `5 X/ i/ }5 G4 R, q7 I8 I6 _ ; `8 d1 G2 s1 v' `, l4 a8 n- W9 O 正常情况下,在STM32CubeProgramer通过ST-LINK连接设备后,读取到空片的数据全为0xFF,我们随便下载一个LED的测试程序,下载进去。
6 ?1 i( S6 g$ B. C6 f/ g+ \& \- i; N
此时断电重启设备,或者在MCU Core选项卡中选择复位再运行,就能看到程序在运行了。 & W# D x/ b/ V0 u0 Q
这时候我们点击 Memory & File edition,点击Read,可以正常读出程序。 ; ]* U- }9 Y6 D1 s# _7 j6 Z
' G q+ e3 @4 e2 a 接下来要进行读保护的操作。切换到 Option bytes 选项卡中,可以看到Read Out Protection 中RDP是没有勾选状态的,这表示flash memory不处于读保护的状态,然后我们要勾选它,并点击下方的Apply,然后软件就会提示选项字已经写入,我们就已经使能读保护了。 " t- K' f3 X+ }
# Q4 G- p( I/ P, F: p: v2 d 这时候切换回Memory &File edition 选项卡,进行读操作,就会被提示读取数据失败,说明我们的读保护已经生效了。 ; l; @8 P4 @+ z, @' g! J/ k# H( c
$ E: c4 ^0 S3 i6 q 取消读保护* G1 o+ o R% d2 g 在进行读保护前,我们需要了解一下连接选项卡中的Mode的各个选项的含义。在文件UM2237中有说明,此处进行摘录。 ! `5 U3 @* v: }9 H; E& H, K
我们使能读保护后,也就无法通过JTAG/SWD接口访问内部flash,这对应的就是第二种情况了,所以mode我们就要选择“Connect Under Reset”,而复位模式根据情况进行选择,我使用的是SWD接口,所以选择的是"Software reset"。 / F, u- F0 {/ q# x+ D
! r/ V4 \7 Z1 D5 Q+ B 这时候切换到Option bytes选项卡中,取消勾选 Read Out Protection 中的RDP寄存器,然后点击Apply。然后软件提示' G \2 A4 N; r( d- P "Option Bytes successfully programmed"说明我们成功取消了读保护。5 H# d1 b0 \4 ?! b" P) S 1 F3 {4 _# q4 C* V! a1 W& \
然后我们就能正常的擦除烧写程序了。
———————————————— 转载:fafuwxm' z0 @2 O6 ~! L B% u/ Z3 f) f0 E) R 4 o$ ]6 [+ R8 d6 K2 q7 g* y! j |
STM32CubeProgrammer 里的“安全编程”
STM32CubeCLT 1.22.0新版本发布
STM32CubeProgrammer 2.23新版本发布
实战经验 | STM32CubeProgrammer与STM32 Bootloader连接全流程实战指南
【STM32U3 评测】人体行为识别
【STM32U3评测】实战项目:无电池温湿度计
STM32CubeProgrammer 2.22:眼见为实 —— 全新MCU内存映射图形导出界面,规避常规开发错误
重磅升级!STM32CubeProgrammer 2.21 解锁SWD多从机模式,开发效率再飙升!
在主机模式下使用STM32Cube HAL I2C驱动
【问卷有礼】STM32CubeProgrammer—您的声音很重要!
微信公众号
手机版