深入探讨FLASH被非法改写的问题

发布者:数据梦想最新更新时间:2023-10-30 来源: elecfans关键字:FLASH  中断向量表 手机看文章 扫描二维码
随时随地手机看文章

问题描述:某STM32客户反馈, 当STM32F407V芯片频繁的正常通断电的时候,FLASH 会被非法改写,出现各种各样的异常(整片被擦除、中断向量表被改写、写保护被清除等等)。


经过与跟客户沟通了解到 :

•他们是延续之前的项目,进行的一些软硬件简单修改。之前的项目没有出现过类似的问题。

•确认通断电的时间是足够,即断电后所有的VDD都回到0;上电的时序也正常。

•原理图参考了ST相关开发板的参考设计。

•测量工作时的电压,除了发觉上电时会有一些抖动外,其它一切正常。尝试让他们改善上电电路,去掉这一抖动,再次实验,仍然出现类似的问题。

到这里似乎跟硬件没关联了, 接着对客户代码进行删减又做了如下实验:

1,去掉APP 部分代码,仅仅留下IAP代码。做相同的实验,问题再现。

2,进一步删减程序,去掉程序中所有跟flash以及OPTION BYTE 相关的部分,做相同的

实验,问题依旧。

3,没招,再删,最后仅仅留下下面程序:

客户反应只要调用了delay_init函数就会出问题,不调用就不会出问题(仅仅做了一天的实验)。到这里似乎跟软件有关系了,我们进一步分析发现他们改写了我们的systick的config函数,那么我就做下一个实验。

1,改为标准库中的systick例程,去掉写保护,加一个GPIO定时翻转程序。同时在烧录之后,加上写保护,做相同的实验,问题再现。

2,改为标准库中的systick例程,去掉写保护,加一个GPIO定时翻转。同时在烧录之后,加上写保护,做相同的实验,问题还是再现。

3,到这里我们有点怀疑是芯片真的有损伤了。我们又用cubemx生成了一个GPIO翻转和systick的延时,做相同的实验,问题照旧。

4,到此,我们一方面请芯片设计人员做进一步确认,看看芯片是否真的坏了。同时,我们抱着怀疑一切的态度,请客户的硬件工程师再次确认他们的硬件和原理图的一致性,我们怀疑他们的硬件是否有装错的元器件。主要集中在MCU周边。最后他们的工程师反馈,STM32的PDR_ON脚,板子上装的元器件跟原理图不一致。他们把R47和R48都装了,那么相当于在PDR_ON上是一个0.6v的电压,也就是关断了MCU内部复位。

真是山穷水尽疑无路,柳暗花明又一村,看来问题应该跟内部复位有关。

查看STM32F407数据手册,可以看到相关信息。

从上面规格书来看,STM32F407V的内部复位电路可以选择性开启或关闭,如果选择关闭mcu内部的复位电路,需要在外部接一个复位监测电路保证VDD达到正常工作电压之前一直使MCU处于复位状态。而这里,客户本意并不想关闭内部复位,外部也没有相应的电源监测复位电路。既然这样,根据手册描述,PDR_ON脚接到VDD即可。具体到这里,去掉R48这个1k欧姆的电阻。重做实验验证,异常消失。


结论

其实之前也碰到过另外西安客户发生过频繁上电不工作的情况。因他们是使用了旧的数据手册,没有把PDR_ON脚拉到VDD 所致。

对于ST MCU来说,这个PDR_ON引脚有的封装是被引出来了,有的封装没有引出,如果没有引出的是默认使能内部复位功能,如果引出的话,大家也要当心有的型号是拉低使能内部复位;有的是拉高使能内部复位,设计和使用时注意这点。


关键字:FLASH  中断向量表 引用地址:深入探讨FLASH被非法改写的问题

上一篇:i.MXRT系列单片机的上电时序要求
下一篇:RT-Thread中Lan8720和lwip协议栈的使用

推荐阅读最新更新时间:2024-11-17 17:16

S3C2440开发板裸机程序系列07—NAND FLASH存储器
1. 概述 我的TQ2440开发板上安装有2M的NOR FLASH和512M的NAND FLASH。 NOR FLASH 的特点是芯片内执行(XIP, eXecute In Place),应用程序可以直接在 NOR FLASH 里运行,不必再把代码读到系统RAM中(可以节约SRAM的成本)。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。 NAND FLASH的特点是有很高的存储密度,并且写入和擦除速度也很快,但是无法直接寻址运行程序,接口上需要专门的控制器。另外NAND FLASH 非常容易出现坏区,所以需要有校验的算法。 因此,NOR FLASH一
[单片机]
S3C2440开发板裸机程序系列07—NAND <font color='red'>FLASH</font>存储器
STM32CubeMX系列教程20:Nand Flash
一、Nand Flash 简介 Flash 中文名字叫闪存,是一种长寿命的非易失性(断电数据不丢失)的存储器。可以对称为块的存储器单元块进行擦写和再编程,在进行写入操作之前必须先执行擦除。功能性分为两种: NOR Flash:允许随机存取存储器上的任何区域,以编码应用为主,其功能多与运算相关 Nand Flash:主要功能是存储资料,适合储存卡之类的大量数据的存储。 本章以K9F1G08U0E芯片为例讲解Nand Flash。 二、Nand Flash存储结构 一个Nand Flash由多个块(Block)组成,每个块里面又包含很多页(page)。每个页对应一个空闲区域/冗余区域(spare area),这个区
[单片机]
STM32CubeMX系列教程20:Nand <font color='red'>Flash</font>
如何提高FLASH使用寿命以实现EEPROM的功能呢 ?
一、 stm32的FLASH擦除是按整页或者整扇区擦除的,不同芯片的页或者扇区(下边统称为页)的大小是不一样的,有1K,16K,64K,128K等大小。 现在我们想要 存3个不同16bit变量的数据,1秒存一次 ,如果不做任何算法,将这3个变量存到3个不同的页的16bit地址,每次更改变量内容都要擦除一次整页(但是我们只使用了16bit的空间),根据芯片数据手册可知,保证性能的情况下flash最少擦除次数为10K,1万次。 我们就按1万次计算,理论上不到3小时我们使用的16bit地址就有损坏的风险。而且要存储的变量个数也有限,我们芯片不可能有那么多页,H7系列也就16页。所以需要一些算法处理,充分利用页的空间。 二、E
[单片机]
如何提高<font color='red'>FLASH</font>使用寿命以实现EEPROM的功能呢 ?
STM32L5系列—SRAM、Flash和启动机制的最新安全特性(二)
TZEN的撤销 片上Flash接口控制器,TZ-aware外设 片上Flash,(非)安全区域的划分 对安全和非安全扇区的操作 片上Flash,安全区域里的隐藏保护区域 片上Flash,Secure system memory 读保护 vs. 写保护 RDP各级别的变迁 RDP 0.5的调试体验
[单片机]
Keil STM32调试,使用ST-Link下载程序时提示“flash timeout.reset the target and try it again”
参考: 很郁闷,买来没多久的 STM32F4-DISCOVERY 就挂了? STM32F103RB Jlink调试的时候出现flash timeout.reset the target and try it again 看完以上网友的方案后本人使用FlyMcu读芯片,内容提示芯片被锁。遂想下载一个程序试试,不想程序可以下载,然后再读芯片时已正常。 返回Keil使用ST-Link也可正常使用。 从网友结论及本人测试,些次出现“flash timeout.reset the target and try it again”是由芯片被锁导至。 以下方法未试 问题已经解决了。是keil的环境没有设置好。导致程序进步去。应该是没有Re
[单片机]
Keil STM32调试,使用ST-Link下载程序时提示“<font color='red'>flash</font> timeout.reset the target and try it again”
STM32L4R9的QuadSPI Flash通讯速率不理想
1. 引言 客户反应STM32L4R9 同QSPI Flash 通讯,测出来的读取速率为10MB/s, 和理论值相差较大。 2.问题分析 按照客户的时钟配置和STM32L4R9 的数据手册中的数据,OSPI 读数速率为10MB/s肯定存在问题。同时我们也可以在AN4760 应用手册中看到如下说明: 在客户系统中,IO0~IO3的4线通讯模式下信号波形如下图,可以看出每经过8 个CLK周期就有很长一段时间的延时。如果提高CPU的主频,这个延时会缩短,但客户测到最短的延时也有200ns,并且一直存在: 3.问题解决 从客户测试波形上看,由于是4条数据线,因此8个clock正好是4bytes,也就是32bits数据。怀疑S
[单片机]
STM32L4R9的QuadSPI <font color='red'>Flash</font>通讯速率不理想
写MSP430片内flash|FLASH 读写等操作 学习
【FLASH 操作】FLASH 读写等操作 学习 近似型号中文资料: IC型号:N25Q128 http://www.soiseek.cn/NUMONYX/N25Q128/2.htm 官方文档:F5438中文全集.pdf_免费高速下载|百度网盘-分享无限制 第60页 //****************************************************************************** // 参数: adr 为地址 , 范围 0x1000~0xFFFF void FlashRead(long adr,uint8 *bBuf,uint8 bLen) { while (bLen
[单片机]
7月上旬主流MLC NAND Flash合约价小幅下跌
研究机构集邦科技(DRAMeXchange)表示,由于7月仍处于NAND Flash主要应用产品存储卡及UFD的传统淡季,因此7月初采购意愿仍低,上游供应商也持续地小幅调低主流MLC NAND Flash合约价,以提高客户在淡季的采购意愿,因此7月上旬主流的MLC NAND Flash合约价大致呈现小幅下跌约1%到5%。 以主流颗粒32Gb MLC及16GB ML而言,集邦科技表示,在季底效应及淡季效应的双重影响下,16Gb MLC已自5月的近期合约均价高点4.3美元,下滑到7月初的4美元,跌幅约为7%,而32GB MLC也自5月的近期合约均价高点的7.56美元,下跌到7月初的6.64美元,跌幅约为12% ,从5月到
[半导体设计/制造]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved