兄弟们,快醒醒,我们的跑马灯不跑了。

大鱼机器人 2021-10-27 11:05

销售GG在工作群里:“弟兄们,快醒醒,咱现场的跑马灯不跑了。”

还在加班的程序猿:“已经查过了,程序没Bug。”

带娃玩的硬件攻城狮:“硬件没问题,这都是照官方Demo弄的。”

刷剧的测试MM小声嘀咕:“我可都是按用例测的,没出问题啊。”

还是攻城狮有主意:“要不叫FAE过来看看?”

“好好好”,意见终于统一了,FAE也该起床换衣服了......

作为21世纪的嵌入式攻城狮,谁还没见过MCU死机啊,作为一个二手的程序猿,也见过大大小小的事故现场,于是乎,经过半个多月的思想斗争,我最后做出了一个违背祖宗的决定,把祖传百年的秘法无偿的献给国家。


1. 现场讲故事

弟兄们终于盼来了FAE,拉上手,快坐下,咱们说说知心话:“是你芯片问题吧,快点认了哈,这才好给老板交代啊。”

FAE:“GG,这恐怕不好吧,咱先看是不是马累了,跑不动了,要休息啊。”

程序猿:“不会的,我一直给它喂狗的。”

FAE:“没关系,我们还是先坐下,从头捋一把,看看下面这张图,听我讲讲故事吧。”


2. 故事开始

MCU死机一定是有原因的,往往有的流于表面,有的隐藏很深,特别是那种偶发的故障,直让人掉头发,遇到这种情况,最担心的恐怕就是程序猿了,所以看一个程序猿的水平从脱帽开始,而死机的问题,需要从查找现象开始。下面的故事分享会按照图中的现象标号来讲述,我们先进入第一个故事:

1.1.1电源的故事

MCU上电就不能工作,肯定会先看电源,结果有两种:

  1. 电源有问题:这种情况下,硬件攻城狮应该就冲上来了,检查硬件设计或生成问题,比如峰值电源超过设计Spec,原理图/PCB是否设计有问题,板子焊接是否正确。
  2. 电源没问题:等等,电源没问题,怎么还能归出这个问题呢?当然有可能,你见过画PCB封装时把Top和Bottom层画反了的么?

1.1.2 晶体的故事

上了点年纪的攻城狮应该还记得,现在很火的一款MCU早年间(大概07,08年)刚推出的时候,大面积出现晶体不起振的问题,民间传说已经到了拍下桌子就停振的程度。实际测试发现只有少数的日系晶体能完美规避该问题,以至后来官方给出Application Note(AN2867)去讲解晶体的选型,以及该MCU推荐使用的晶体型号。


多年以后的今天,有些MCU已经支持检测到外部晶体失效后自动切换到内部时钟,并触发中断的功能。不少用户也在产品测试的过程中,加入短接晶体的测试来验证系统运行的可靠性。

1.1.3 硬件配置的故事

MCU为了实现灵活的功能,会提供一些Boot配置管脚,MCU在上电Boot过程中会采样这些管脚状态来进入不同的模式,正常启动后就可以用作普通IO,常见的有从内部Flash启动,SD卡启动,QSPI启动,或者进入ISP模式等。所以当Boot管脚配置出现错误时,MCU断然时无法正常启动的。

前不久就有过这样一次不同寻常的加班之旅:使用德系MCU的新板子做回来了,该系列MCU不是第一次用,这次只是做了些外设的改动,不牵扯最小系统的修改,但是,仿真器始终连不上板子,奇怪的是10块板子中,只有2块有该问题。硬件GG比较给力,一晚上就发现了问题:出问题的板子MCU配置管脚电平与默认配置不符,该芯片的配置管脚可以定义Debug口Pin的位置,由于错误的配置导致连接仿真器的Pin已经不具备Debug功能,而错误的电平是由于硬件设计时,MCU管脚可能不够用,故将配置管脚也连到FPGA上备用,恰巧出问题的板子FPGA烧的测试固件没有将未用到的管脚设置高阻。


有些时候,ROM确实是一只拦路虎,当你发现配置管脚都正确的时候,芯片居然还不能工作。故事是这样的,用户首次使用MCU,根据自己的需求按照参考设计裁剪了一部分电路,打板回来后发现,无法连接仿真器,硬件GG对比参考板测量了所有信号都满足要求,从芯片内部的DCDC输出也正常,说明芯片已经正常跑起来了,最后还是老马识途,反复Review原理图后,大神发现自己的板子裁掉了EVK的USB电路,由于是新做的板子,flash里没有可以跑起来的正常代码,ROM会进入串口下载模式,而进入该模式前,ROM已经关闭了JTAG接口,因为外部没有给USB供电,所以ROM对USB的初始化会失败而卡死在这里,而解决方案也很简单,只要给USB VDD供电即可。


这里还有个51单片机的故事,当年这个产品支持热插拔,背板通过RS485进行数据通讯,实际现场发现,新挂设备后,会有非常小的概率上报错误帧。经过仔细检查发现,该单片机默认上电会有短暂的ISP模式,该模式下如果总线上有数据能对上ISP协议,单片机就会发送数据,所以插拔过程中可能会出现错误的数据发送到RS485总线上形成冲突。解决方案是再生产烧写的时候配置2个bit位,让其上电后不进入ISP模式即可。

1.1.4 MCU上电的故事

有不少的MCU会在Datasheet中规定上电的时序的要求,如果设计不能满足该要求,有可能会出现上电无法工作的现象。有些MCU在这种情况下,可以通过外部复位的方式重新运行,这样可以通过添加外部看门狗来规避该问题,有些MCU外部Pin的复位也无法让它重新正常工作,只能重新上下电,那就必须通过电源设计来保证。



敲黑板啦,这张图并不是单单讲上电哦,还有掉电的过程,当板子突然掉电,从3.3V掉到1.xV后又重新恢复到3.3V,那也是有可能无法正常工作的,掉电必须到200mV以下再上电才会比较安全。

从图上也能看出,一般都是要求斜率尽可能的陡一些,上电快一些,当然也有一些芯片太快了也不行,具体还要看手册。有了这个参数可并不一定能满足哦,硬件设计时,攻城狮从成本考虑往往会选择不带使能的LDO,这种芯片基本前级有电压后级就输出,所以前级上电慢,输出就会比较缓。MCU一般标称最低工作电压1.8V,但实际在1.1V左右就开始POR了,代码可能低于1.8V就开始跑起来了,如果此时代码加大负载,比如开启PLL,而此时LDO的输出能力也有限,VDD就会掉一个个坑,后面就真的是一个坑了......


所以,使用带使能端的LDO可以让输入电压达到比较高的值后再打开输出,以保证后级输出的线性及斜率够快。

如果真掉到坑里会出现什么结果呢,送大家几个知识点:

  1. MCU停机无法启动,这是大家都不愿意看到的
  2. MCU偏偏能启动,还能工作,但是内部模块初始化不完全导致功能异常,最常见的是Memory
  3. MCU能正常工作,这种产品往往都是有住持开过光的,售价应该不菲

硬件改不了,那有没有降低问题概率的软件workaround呢?能想到的就是软件上来就把看门狗,BOD/LVD都打开(有些芯片默认是关的),如果能设置阈值就调到合理值。

还有些电源域比较复杂的MCU,需要通过PSWITCH管脚来控制内部DCDC的输出,当主VDD出现瞬间掉电(假设200ms后恢复),外部的复位电路会对POR进行复位,但是由于时间太短不足以上PSWITCH产生复位信号去复位内部的DCDC模块,最后会看到出现VDD回沟后,MCU的DCDC挂了,外部高速晶振也无法起振。简单粗暴的解决方案就是把POR的复位信号和PSWITCH接到一起。

下面还有个和上电有关的故事,但和时序无关。

有个应用,需要每次上电的时候从外部的SPI Flash中拷贝固件到MCU内部的Flash中运行,产品本身生成很多年了,突然有个现场发现好几个模块不能正常工作。取回板卡发现,MCU内部的一段Flash无法访问了。查手册发现,该芯片对内部Flash操作时,如果对相同地址进行多次编程但不擦写就会出现该sector无法访问的问题。出问题的模块是通过POE进行供电的,出问题的现场由于是临时供电,所以经常断电,每次上电都会进行编程操作,由于业务逻辑复杂存在这样的风险。安全一点的做法应该是加入检验机制,如果内部的Flash固件已经是最新的,则不需要反复烧写。毕竟内部的Flash也有擦写寿命的。

1.1.5~8 IO口的故事

MCU需要通过IO口来输入输出,所以它需要与外部连接。那它就有一些规范需要遵守,比如极限的电压、电流,静电等级


设计上要尽量避免IO口先上电的情况,图中芯片所讲的5V tolerant是指VDD > 1.8V的情况,如果实际情况 < 1.8V呢?厂家肯定是不保的啊。

硬件设计IO的时候,该做隔离就隔离,别为了省点小钱儿后面再大整改,有些用户发现产线上有个别芯片工作正常,但是功耗特别大,快到1A了,拆下来做IV测试发现个别管脚已经烧掉了,仔细一琢磨,这片子还是不错的,毕竟没给烧坏喽。

讲到IO就不得不提下热插拔,绝大多数的芯片都是不支持的,带电反复热插拔都会对芯片造成一定的损伤,如果确实无法避免,可以考虑长短针的方式让电源和GND先接触,就像USB那样。

1.2.1 初始化的故事

作为曾经的程序猿小白,能Ctrl + C来的代码绝不会多看它一眼,直接就上板跑了。搞了很多的笑话,不同的硬件设计,用了同一份代码,有的跑飞了,有的直接就不能连仿真器了,更绝的还会烧MOS。总之,板子的初始化最好拉硬件攻城狮一起,细细的对一遍,或者做一个表格让硬件GG填好。


针对时钟初始化,不要使用while()这样的等待,如果长时间失败,有可能外部晶体电路有问题,可以切换到内部的FRO继续工作,如果需要也可以通过对外接口将晶体初始化失败上报。

1.2.2 硬件问题的软件事故

几年前遇到一个量产的项目,发现有1ps的板子无法正常工作,回退软件版本不能解决问题,由于是量产项目,没有预留仿真器接口,而且对外只有1个UART通讯接口,还无法正常通讯,单从板子上也看不出什么问题,只有1个LED灯上电后会亮起,通过查看原理图发现,默认LED是不会亮起了,应该是软件点的,或者MCU坏掉了。检查代码发现,软件会初始化包括串口和LED在内的外设,然后去外部EEPROM中读取配置信息,如果配置信息有特殊字符,则进入测试模式,而测试模式代码并未实现任何功能。最终发现,问题是测试人员通过上位机修改了EEPROM中的内容,让MCU进入了没有任何功能的测试模式。这个问题其实也可以通过ABA替换测试,发现问题跟着板子走,从而定位到root cause

1.2.3 BOD/LVD配置

之前已经见过这哥俩的重要性了,如果有阈值的配置,也需要结合自身板子的设计来,之前有遇到过用户把LVD设置到2.5V产生解复位,但板子的VDD供电才1.8V。


2.1.1 看门狗的故事

相信有一些攻城狮并不知道,看门狗正常喂也会给MCU咬死.

举例1. 德系品牌MCU内部的看门狗默认开启恒复位功能,芯片第二次产生看门狗复位后立即锁定芯片并将IO口保持,这个对PLC的应用还是蛮重要的,它可以避免因为软件出现问题后反复持续的复位而导致被控设备的误操作


举例2. 美系品牌MCU内部的看门狗,即使不开window模式,复位间隔依旧不能太快,必须大于20个bus clock,否则也会咬死。


看门狗使用时切记使用芯片内部专用的时钟,如果使用外部时钟或者总线时钟,一旦时钟挂了,看门狗一样无法把MCU拉回来。

2.1.2 MCU复位死机

MCU能复位就说明它不想死,但往往最终还是架不住挂掉的命运。所以,复位源往往就是死机的一个前兆,通过它我们就能分析到大致的死因,就好比老西医看片子,老中医看舌苔。这里我们再介绍一个类似老中医的硬件问题:EMC问题

经测试,由它导致的MCU复位可以获取到不同的复位源,包括电源复位,Reset Pin复位,看门狗复位。导致的死机也包括HardFault_Handler,BusFault_Handler, UsageFault_Handler等等。

考虑到产品的稳定可靠,有些MCU支持禁止reset pin或者可以将其复用为输出以降低受到干扰后复位的现象。但是有些MCU不支持该功能,这种情况下就比较考验硬件攻城狮的经验了。最后再唠10块钱儿的,工艺越先进,EMC越有挑战。

2.1.3 Flash编程

大多数MCU都是内置Flash并支持IAP的,使用过程中,还是要注意些好。当年美系大厂收购的Cortex-M3的MCU据说仅支持上百次的擦写。还有些MCU的等待延时需要设置大一些,否则也会出现读写不一致的情况。相关的参数Datasheet一般都会列出:



当然,这里面还有一个比较重要的问题就是每个sector的大小,因为我们知道Flash都需要先擦再写,所以一些解耦的变量希望各自独占一个sector,sector越小其利用率越高。

2.2 要命的低功耗

做低功耗的产品,对设计的要求会更高,因为它需要细细的扣每一个模块甚至每一个pin的功耗。而死机与无法唤醒本身又非常的相似,处理起来还是比较棘手的。这里仅提供些思路

  1. 如果是软件唤醒后对标志判断出错导致的问题,功耗往往会比低功耗模式要大。
  2. 有些低功耗模式BOD和看门狗是关着的,所以电源的波动确实会可能死机。
  3. 电池供电的产品最好硬件上能获取电量并通知MCU做相应的处理。

2.3 程序猿的梦魇

还有些时候,MCU在受到一些外部干扰的时候,会出现一些错误,有些错误是可以软件恢复的,只要clear下寄存器就可以了,有些是不可恢复的,这个一般要靠看门狗。早几年遇到一个项目,现场发现一个板子无法工作,现象是Modbus通讯失败,但主循环的LED灯还在闪烁,说明MCU本身没有死掉,挂上仿真器查看,原来是UART口上出现了帧错误,而软件没有做相关的处理导致接收失败。只要在软件中添加相关的中断服务函数即可修复该Bug。

还有些时候,程序猿睡的太晚,迷迷糊糊做出一些Bug导致业务出错,这也时常有的事情,比如使用RTOS时没考虑优先级反转,几个任务相互卡死......

3. 故事结束

通过这些故事,我们明白了一个道理,想让灯儿不停,马儿就要吃饱。


往期推荐:点击图片即可跳转阅读

工作多年,怀才不遇你该怎么办?


谁说PCB布线不能走直角。。。


该如何学习嵌入式?看大佬的职业规划!


苏联的三进制电脑,为什么被二进制干掉了?


-END-
我是张巧龙,一名教电子的大学老师,欢迎关注!
大鱼机器人 一个专注于机器人技术,单片机,嵌入式系统,智能家居,智能设备,PCB设计,IT最新动态的自媒体。此外,还有海量学习资源等你来领取。作者:张巧龙,个人微信号:well_xiaolong。欢迎关注公众号,名称:大鱼机器人,公众号ID:All_best_xiaolong
评论
  • 随着消费者对汽车驾乘体验的要求不断攀升,汽车照明系统作为确保道路安全、提升驾驶体验以及实现车辆与环境交互的重要组成,日益受到业界的高度重视。近日,2024 DVN(上海)国际汽车照明研讨会圆满落幕。作为照明与传感创新的全球领导者,艾迈斯欧司朗受邀参与主题演讲,并现场展示了其多项前沿技术。本届研讨会汇聚来自全球各地400余名汽车、照明、光源及Tier 2供应商的专业人士及专家共聚一堂。在研讨会第一环节中,艾迈斯欧司朗系统解决方案工程副总裁 Joachim Reill以深厚的专业素养,主持该环节多位
    艾迈斯欧司朗 2025-01-16 20:51 131浏览
  • 随着智慧科技的快速发展,智能显示器的生态圈应用变得越来越丰富多元,智能显示器不仅仅是传统的显示设备,透过结合人工智能(AI)和语音助理,它还可以成为家庭、办公室和商业环境中的核心互动接口。提供多元且个性化的服务,如智能家居控制、影音串流拨放、实时信息显示等,极大提升了使用体验。此外,智能家居系统的整合能力也不容小觑,透过智能装置之间的无缝连接,形成了强大的多元应用生态圈。企业也利用智能显示器进行会议展示和多方远程合作,大大提高效率和互动性。Smart Display Ecosystem示意图,作
    百佳泰测试实验室 2025-01-16 15:37 191浏览
  • 日前,商务部等部门办公厅印发《手机、平板、智能手表(手环)购新补贴实施方案》明确,个人消费者购买手机、平板、智能手表(手环)3类数码产品(单件销售价格不超过6000元),可享受购新补贴。每人每类可补贴1件,每件补贴比例为减去生产、流通环节及移动运营商所有优惠后最终销售价格的15%,每件最高不超过500元。目前,京东已经做好了承接手机、平板等数码产品国补优惠的落地准备工作,未来随着各省市关于手机、平板等品类的国补开启,京东将第一时间率先上线,满足消费者的换新升级需求。为保障国补的真实有效发放,基于
    华尔街科技眼 2025-01-17 10:44 185浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 99浏览
  • 实用性高值得收藏!! (时源芯微)时源专注于EMC整改与服务,配备完整器件 TVS全称Transient Voltage Suppre,亦称TVS管、瞬态抑制二极管等,有单向和双向之分。单向TVS 一般应用于直流供电电路,双向TVS 应用于电压交变的电路。在直流电路的应用中,TVS被并联接入电路中。在电路处于正常运行状态时,TVS会保持截止状态,从而不对电路的正常工作产生任何影响。然而,一旦电路中出现异常的过电压,并且这个电压达到TVS的击穿阈值时,TVS的状态就会
    时源芯微 2025-01-16 14:23 182浏览
  •  光伏及击穿,都可视之为 复合的逆过程,但是,复合、光伏与击穿,不单是进程的方向相反,偏置状态也不一样,复合的工况,是正偏,光伏是零偏,击穿与漂移则是反偏,光伏的能源是外来的,而击穿消耗的是结区自身和电源的能量,漂移的载流子是 客席载流子,须借外延层才能引入,客席载流子 不受反偏PN结的空乏区阻碍,能漂不能漂,只取决于反偏PN结是否处于外延层的「射程」范围,而穿通的成因,则是因耗尽层的过度扩张,致使跟 端子、外延层或其他空乏区 碰触,当耗尽层融通,耐压 (反向阻断能力) 即告彻底丧失,
    MrCU204 2025-01-17 11:30 141浏览
  • 电竞鼠标应用环境与客户需求电竞行业近年来发展迅速,「鼠标延迟」已成为决定游戏体验与比赛结果的关键因素。从技术角度来看,传统鼠标的延迟大约为20毫秒,入门级电竞鼠标通常为5毫秒,而高阶电竞鼠标的延迟可降低至仅2毫秒。这些差异看似微小,但在竞技激烈的游戏中,尤其在对反应和速度要求极高的场景中,每一毫秒的优化都可能带来致胜的优势。电竞比赛的普及促使玩家更加渴望降低鼠标延迟以提升竞技表现。他们希望通过精确的测试,了解不同操作系统与设定对延迟的具体影响,并寻求最佳配置方案来获得竞技优势。这样的需求推动市场
    百佳泰测试实验室 2025-01-16 15:45 276浏览
  • 百佳泰特为您整理2025年1月各大Logo的最新规格信息,本月有更新信息的logo有HDMI、Wi-Fi、Bluetooth、DisplayHDR、ClearMR、Intel EVO。HDMI®▶ 2025年1月6日,HDMI Forum, Inc. 宣布即将发布HDMI规范2.2版本。新规范将支持更高的分辨率和刷新率,并提供更多高质量选项。更快的96Gbps 带宽可满足数据密集型沉浸式和虚拟应用对传输的要求,如 AR/VR/MR、空间现实和光场显示,以及各种商业应用,如大型数字标牌、医疗成像和
    百佳泰测试实验室 2025-01-16 15:41 186浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 91浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 66浏览
  • 80,000人到访的国际大展上,艾迈斯欧司朗有哪些亮点?感未来,光无限。近日,在慕尼黑electronica 2024现场,ams OSRAM通过多款创新DEMO展示,以及数场前瞻洞察分享,全面展示自身融合传感器、发射器及集成电路技术,精准捕捉并呈现环境信息的卓越能力。同时,ams OSRAM通过展会期间与客户、用户等行业人士,以及媒体朋友的深度交流,向业界传达其以光电技术为笔、以创新为墨,书写智能未来的深度思考。electronica 2024electronica 2024构建了一个高度国际
    艾迈斯欧司朗 2025-01-16 20:45 176浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦