做彩票网站犯法吗,手机应用商店app下载官方版,windows服务器怎么建设网站,如何介绍网站模板下载地址1. 问题描述
客户在使用 STM32L433CCY6 开发过程中#xff0c;出现软件复位后 SRAM2 里的值被擦除问题。
2. 问题确认
客户用同一版软件在两块板子上的表现还不一样#xff0c;一块软件复位后 SRAM2 的值不会被擦除#xff0c;另一块则会被擦除#xff0c;并且确认被擦除…1. 问题描述
客户在使用 STM32L433CCY6 开发过程中出现软件复位后 SRAM2 里的值被擦除问题。
2. 问题确认
客户用同一版软件在两块板子上的表现还不一样一块软件复位后 SRAM2 的值不会被擦除另一块则会被擦除并且确认被擦除的板子没有发生掉电复位。出现问题的板子只是在硬件上拿掉了一些 ESD 保护器件。
3. 问题分析
根据客户的反馈建议客户列出两块板子硬件改动的详细对比表。客户反馈两块板子在硬件上唯一的区别是多增加了一个串口ESD 保护器件还没被拿掉。后面建议硬件上直接拿掉串口但测试后发现问题还是没有解决。后来又怀疑跟客户使用的编译器有关 因为有的编译器会在复位后将 RAM 区的非初始化变量数据清零。所以建议客户针对 IAR 或 Keil 尝试使用下面的方式定义变量
IAR 将不能初始化为零的变量放入特别的限定符
比如__no_init int my_i, my_j;Keil: 代码部分: 将不能初始化为零的变量放入特别的 section 对其他变量正常处理。在编译时加入如下代码
bss_threshold0
#pragma arm section zidata non_init
int my_i, my_j;
#pragma arm section
int my_k 0, my_l 0;链接脚本 加入特别的属性为 UNINIT 的 section
EXEC_2 0x20010000 UNINIT 0x8 {* (non_init) ;}客户按照上面建议在代码上做相应修改后发现 SRAM2 的值还是会被擦除。
4. 问题解决
后面查看 RM0394 发现下面一段关 SRAM2 的描述找到了思路 通过参考手册可以发现SRAM2 可以通过 Option byte 设置 SRAM2_RST 的值来确定是否允许在系统复位时被擦除。我们使用 STM32CubeProgrammer 连接上 STM32L433 的板子在User Configuration 页面也可以看到下面的配置 根据上面的发现让客户检查他们手上两块板子 SRAM2_RST 的值看是否有差异。后来发现果然两块板子的 SRAM2_RST 的值不一样没有出现 SRAM 擦除问题的板子 SRAM2_RST 值是配置为 1。 而出现擦除问题的板子 SRAM2_RST 的值是 0。 而且两块板进行交叉对比测试确实是 SRAM2_RST 的值导致两块板子的行为表现不一样跟两块板子的硬件差异无关。所以最后将出现问题的板子 SRAM2_RST 的值设置为 1SRAM2 的值不会再被擦除问题得到解决。
5. 小结
本篇笔记分析了 STM32L433CCY6 软复位导致 SRAM2 值被擦除问题。后面发现是SRAM2_RST 的值设置为 0 导致了该问题。客户反馈在产线烧录时有修改 option byte 的操作可能是操作过程中 SRAM2_RST 的值被误修改导致出现了问题。同时我们也建议客户检查其它 option byte 的值是否也有被误修改并建议客户在操作 option byte 或Flash 时确保 MCU 供电稳定烧录口接线良好。
参考文献 文档中所用到的工具及版本
STM32CubeProgrammer 本文档参考ST官方的《【应用笔记】LAT1349STM32L4芯片软复位导致SRAM2的值被擦除话题》文档。 参考下载地址https://download.csdn.net/download/u014319604/88969384