完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
正常使用STM32系列MCU的PCBA,都会在生产中将代码编程进去,并且设置必要的读写保护,不设置保护状态直接出厂的,应该没有这种情况吧?我在通过ISP功能进行编程,读写保护设置时,发现了一个奇怪的错误,当设置写保护位在WRP的高24bit时,会被后续的读保护命令清除,导致该部分的扇区无法在ISP过程中正常保护。 试验环境: a) STM32F103C8T6的目标板一块,正常供电,不限具体功能。 b) SWD调试口接入,CMD窗口运行STLink命令行工具用于查看内部状态。 c) 计算机运行终端软件通过串口连接目标板的USART1,用于ISP命令。 d) BOOT0接3.3V(VDD)用于上电后进入ISP内部自举模式。 试验过程(ISP命令操作读保护撤销,写保护的设置,读保护使能),以下绿色数据为终端窗口发往MCU,蓝色数据为MCU的应答返回。 CMD窗口STLink命令行显示内容中,绿色为期望的改变,红色为未期望的改变。 //Terminal Window:=========================== 1) USART1发送Readout unprotect 指令 7F 79 92 6D 79 79 //CMD Window:>ST-LINK_CLI.exe -c hotplug -rob///////////// 1) SWD读取MCU Option bytes Device ID: 0x410 Device flash Size: 64 Kbytes Device family: STM32F10xx Medium-density Option bytes: RDP : DISABLED IWDG_SW : 1 nRST_STOP : 1 nRST_STDBY : 1 Data0 : 0xFF Data1 : 0xFF WRP : 0xFFFFFFFF //Terminal Window:=========================== 2) USART1发送Write protect 指令(保护第1个 Sector) 7F 79 63 9C 79 00 00 00 79 //CMD Window:>ST-LINK_CLI.exe -c hotplug -rob///////////// 3) SWD读取MCU Option bytes Option bytes: RDP : DISABLED IWDG_SW : 1 nRST_STOP : 1 nRST_STDBY : 1 Data0 : 0xFF Data1 : 0xFF WRP : 0xFFFFFFFE //Terminal Window:=========================== 4) USART1发送Readout protect 指令 7F 79 82 7D 79 79 //CMD Window:>ST-LINK_CLI.exe -c hotplug -rob///////////// 5) SWD读取MCU Option bytes Option bytes: RDP : ENABLED IWDG_SW : 1 nRST_STOP : 1 nRST_STDBY : 1 Data0 : 0xFF Data1 : 0xFF WRP : 0xFFFFFFFE 重复上述1)->6)步骤,每次在第3)步增加一个保护Sector。当试验到第4)步读出为WRP=0xFFFFFE00时(写保护前面9个Sectors)。执行第5)步读保护后,在第6)步检查时,发现WRP发生了未期望的改变,变成了0xFFFFFF00。过程如下: //Terminal Window:///////////// 7F 79 92 6D 79 79 7F 79 63 9C 79 08 00 01 02 03 04 05 06 07 08 00 (Write protect 00 -> 08 total 9 sectors) 79 //CMD Window:>ST-LINK_CLI.exe -c hotplug -rob///////////// Option bytes: RDP : DISABLED IWDG_SW : 1 nRST_STOP : 1 nRST_STDBY : 1 Data0 : 0xFF Data1 : 0xFF WRP : 0xFFFFFE00 //Terminal Window:///////////// 7F 79 82 7D 79 79 //CMD Window:>ST-LINK_CLI.exe -c hotplug -rob///////////// Option bytes: RDP : ENABLED IWDG_SW : 1 nRST_STOP : 1 nRST_STDBY : 1 Data0 : 0xFF Data1 : 0xFF WRP : 0xFFFFFF00 后续的试验证实了这一点,Write protect 指令设置的WRP字,只有低8位字节能够在Readout protect指令执行后保留,WRP的高24位3字节都将被未期望改写为1。 而且这似乎无法绕过,因为执行了Readout Protect指令后,无法再用Write Protect指令改写WRP了。
|
|
相关推荐
1个回答
|
|
这个问题可能是由于你的代码编程工具或者编程方式不正确导致的。
首先,确保你使用的编程工具是正规的,并且支持对STM32系列MCU进行写保护的编程。确保你的编程工具软件版本是最新的,以避免已知的问题。 其次,确认你在编程的过程中使用的是正确的命令和参数。对于STM32的串口下载方式(ISP),通常使用的是一些特定的命令,如“RDP”(读保护设置)和“WRP”(写保护设置)等。确保你使用的命令和参数是正确的,并且符合STM32系列MCU的规范。 另外,确保你在设置写保护位的时候,是在正确的地址范围内进行设置的。不同型号的STM32系列MCU可能有不同的地址范围和位偏移,因此要根据具体的型号和规格书进行设置。 最后,可能还需要考虑其他的因素,比如软件的逻辑错误或者硬件上的问题。如果你尝试了以上的解决方案仍然无法解决问题,建议你咨询相关的技术支持或者工程师,以获取更详细的帮助。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1645 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1564 浏览 1 评论
992 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
691 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1610 浏览 2 评论
1871浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
656浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
526浏览 3评论
542浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
515浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 02:01 , Processed in 0.717741 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号