你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32的串口下载方式(ISP)的写保护位编程错误

[复制链接]
人生之际 提问时间:2021-1-26 10:19 /
正常使用STM32系列MCUPCBA,都会在生产中将代码编程进去,并且设置必要的读写保护,不设置保护状态直接出厂的,应该没有这种情况吧?我在通过ISP功能进行编程,读写保护设置时,发现了一个奇怪的错误,当设置写保护位在WRP的高24bit时,会被后续的读保护命令清除,导致该部分的扇区无法在ISP过程中正常保护。
试验环境:
a) STM32F103C8T6的目标板一块,正常供电,不限具体功能。
b) SWD调试口接入,CMD窗口运行STLink命令行工具用于查看内部状态。
c) 计算机运行终端软件通过串口连接目标板的USART1,用于ISP命令。
d) BOOT03.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 指令(保护第1Sector)
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时(写保护前面9Sectors)。执行第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的高243字节都将被未期望改写为1
而且这似乎无法绕过,因为执行了Readout Protect指令后,无法再用Write Protect指令改写WRP了。

收藏 评论0 发布时间:2021-1-26 10:19

举报

0个回答

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版