如何为Art-pi的内部flash设置读保护。
一般在项目开完毕之后,最终烧录固件的时候都会将stm32设置为读保护。过去一直使用STM32 ST-LINK Utility配合st-link来完成这个步骤。这次用到art-pi上,不灵了。
具体表现如下:
完成固件下载
配置option bytes,结果弹出设置失败
原来art-pi上使用的是Stm32H7系列的芯片,属于比较新的系列了。STM32 ST-LINK Utility算是比较久远的一款下载工具了,现在要与时俱进,使用新的工了,就是STM32CubeProgrammer了。看看这界面,一看就是高大上。
具体怎么弄呢?
双击打开工具之后,可以看到右上角有选择连接的硬件设备,这个工具很强大,可以支持多种硬件烧录设备,这里选研究st-link。所以选择了st-link然后点击connect。
由于刚才烧录之后设置读保护是失败的,所以此时芯片是处于没有保护的状态,因此连接成功之后会自动读取到内部flash的内容。
点击左上角的按钮,可以打开菜单栏
选择option bytes,然后可以看到当前的状态字是0xAA,而且右边还有详细的解释,要设置成level1的读保护,需要写入BB。
这里直接点击小三角弹出下拉菜单,然后选择BB,然后点击apply
弹出写入成功,点击确定退出。注意这里退出之后,按电路板上的reset按键,是不会产生复位的,要直接给目标板断电重启,这一步非常重要。
板子重启之后,我们再次连接板子,就会弹出数据读取失败的对话框,说明已经读保护了。
此时如果要解开读保护,要如何操作呢?很简单,只要重复刚才的OB选项的操作就可以了。只不过这次把值改成AA,就可以了。
但是解除读保护,会将内部flash清除,此时读出的都是FF。这样就有效防止直接通过SWD口来拷贝bin固件了。
那如果是批量生产过程中,每一个板子都这么先烧录后加锁,操作步骤太复杂了,有没有简便的方法呢?有的,直接用生产模式,自动烧录。
点击菜单栏,然后选择擦除和烧录选项
然后先选择要烧录的固件,然后勾选全片擦除,下载文件,并在最后的option bytes commands中填写“-ob rdp=0xBB”,最后点击开始自动烧录
当看到log中显示这一句的时候,说明已经烧录成功,此时就可以拔掉板子上的swd口连线。插入第二块版,程序会自动烧录第二块版,不用手工点击。
如果要退出自动烧录模式,只要点击stop就可以了。
这个工具还有其他功能,以后用到了再慢慢研究。