当前位置:首页 > 工业控制 > 工业控制
[导读]参数偶尔丢失或升级后配置变乱,常常不是存储单元突然坏了,而是写入流程没有尊重 Flash 的物理边界。单片机内部 Flash 若把擦写粒度和掉电窗口处理得太粗,少量配置也会被写成高风险操作。

参数偶尔丢失或升级后配置变乱,常常不是存储单元突然坏了,而是写入流程没有尊重 Flash 的物理边界。单片机内部 Flash 若把擦写粒度和掉电窗口处理得太粗,少量配置也会被写成高风险操作。

Flash 写坏首先来自擦写粒度不等于变量粒度。应用只想改一个计数值,硬件可能必须先擦掉整页,再把同页里其他配置搬回去;擦除期间页面全为无效态,写入又只能按字或半页逐步完成。若多个参数、版本号和校验字混在同一页,任何一次小改动都会牵动整页寿命。频繁保存运行计数、故障码或通信参数时,单页很快接近擦写上限,表现为某些位只能写不能擦,配置开始出现随机错码。

磨损控制不能只在快到寿命时才想。把高频变化的数据与低频配置分区,给计数类数据做循环日志或磨损均衡,并在记录里加入序号和校验,才能避免一页被反复打穿。写之前还要比较新旧值,没变化就不要擦写;对必须频繁更新的状态,优先考虑 EEPROM、FRAM 或带掉电保持的备份域。单片机资源紧张时尤其要警惕把日志、参数和升级标记挤在同一页,因为省下的空间会在可靠性上还回来。

掉电窗口决定写入是否能被解释。电源下陷时,擦除可能已经完成,数据还没写回;校验字可能先写了,正文还缺几个字;也可能新记录写了一半,旧记录又被提前删除。若启动代码只按一个成功标志判断,就会把半成品当成有效配置。更危险的是,电压不足时继续写 Flash,编程电流和时序都可能不满足要求,留下的不是干净失败,而是难以预测的位错误。

稳妥的提交方式是双份或日志化,而不是原地覆盖。先把新记录写到空槽,正文、序号和校验全部完成后,再写一个最后提交标志;启动时按序号和校验选择最新有效记录。如果掉电发生在中间,旧记录仍能解释系统状态。写入前还应检查电源良好信号,棕断阈值要高于 Flash 最低编程电压,并预留足够保持时间完成当前最小写入单元。记录格式还要能识别全空页和半写页,不能把擦除态误认为默认有效值。单片机固件里这套流程看似啰嗦,却能把随机掉电转化为可恢复的事务失败。

验证时应故意在擦除前、擦除后、写正文、写校验和写提交标志各阶段切断电源,然后反复上电检查恢复结果。只做正常写入和一次重启,几乎无法覆盖最危险的窗口。还要在高温、低压和接近寿命的样片上复测,因为写入时间和失败概率都会改变。若系统允许在线升级,还要把升级镜像、运行参数和回滚标志分开注入故障,确认其中任一块损坏都不会拖垮启动路径。测试还应覆盖连续多次掉电,避免日志指针被反复推进到无效区。只有每个断点都能回到旧配置或新配置之一,才说明掉电保护真的闭合。

因此,Flash 可靠性不靠少写一句配置保存函数。把物理页、寿命和提交原子性一起设计,掉电才只会丢掉本次更新,不会毁掉系统状态。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

PWM 波形偶尔抖一下,后级电机或电源环路就可能把它放大成噪声和发热。单片机定时器虽然能自动翻转引脚,但更新时刻和死区配置不对,输出并不会天然稳定。

关键字: 单片机 PWM 定时器

I2C 偶发不响应时,复位主控往往只能暂时恢复,因为总线状态可能已经被外部器件留在半截事务里。单片机若没有处理 SDA 锁低和上拉边界,软件重新初始化也未必能重新拿回总线。

关键字: 单片机 I2C SDA

ADC 数值缓慢漂移时,问题未必在传感器,也未必靠平均就能消掉。单片机内部转换器如果没有满足采样保持和参考回流条件,软件读到的只是前端妥协后的电压。

关键字: 单片机 ADC 传感器

看门狗本该抓住死机,却常在现场变成莫名重启的来源。单片机系统如果没有把喂狗条件和最坏执行时间绑定,复位既可能误触发,也可能在真正卡死时失效。

关键字: 单片机 看门狗 复位

设备偶发重启时,很多人先怀疑程序跑飞,其实更常见的是电源刚好落在不稳定边界。单片机若没有把欠压复位和上电延时配成一条完整启动链,复位脚会比软件更早暴露问题。

关键字: 单片机 复位 晶振

计时偏差通常不是某个 delay 写错,而是时间基准从源头就不稳定。单片机定时若同时受晶振误差、分频取整和同步延迟影响,软件看到的一秒就可能不是硬件世界的一秒。

关键字: 单片机 计时偏差 晶振

待机电流比预算高,问题不一定出在芯片休眠模式选错,而是板上仍有电气状态没有收干净。单片机进入低功耗前,如果 IO 和唤醒源没有逐项定义,电池寿命会被细小电流慢慢吃掉。

关键字: 单片机 耗电 IO

串口链路少几个字节时,线缆和干扰常常先背锅,但真正原因可能藏在时钟误差和缓冲余量里。单片机串口若只按平均吞吐设计,突发报文一来就会暴露尾部丢字。

关键字: 单片机 串口 缓冲水位

在嵌入式开发的全流程里,程序烧录是连接代码与硬件的最后一公里。很多新手工程师刚接触单片机时,总以为烧录就是“插上线点一下下载按钮”这么简单,直到在量产阶段遇到几十台设备同时烧录效率极低、在现场维护时拆开机壳重新烧录成本极...

关键字: 单片机 编程器烧录

做嵌入式开发、电子DIY、工业控制,几乎都绕不开“弱电控制强电”这个需求:用单片机3.3V/5V的低电压弱电,控制220V交流电的灯泡、电机、加热器这类强电设备通断,最常用的方案就是继电器。很多新手刚接触的时候只知道继电...

关键字: 继电器 单片机
关闭