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