分类:嵌入式单片机 | 适合人群:0-3年、3-5年 | 难度:中高级 | 题型:跨岗位技术题
面试题
一块单片机控制板上电后可以正常运行,但工作一段时间会偶发重启。问题出现没有固定时间,有时在电机、继电器或通信动作附近发生。你会怎样判断原因并建立可重复的排查过程?
面试官真正想考什么
偶发问题最容易暴露工程师是否只会“换电容、关看门狗、加延时”。面试官希望听到的是证据链:先确认现象究竟是不是复位,再保存复位原因和运行现场,之后分别验证硬件与软件假设,最后用原工况复测。
推荐排查顺序
第一,先确认是复位、死机、掉电还是进入低功耗
可以在启动最早阶段读取并保存芯片的复位原因标志,记录启动次数、关键日志和发生前的运行状态。若程序只是跑飞后被外部系统重新拉起,或者误进入休眠,处理方向与真实掉电复位不同。复位原因寄存器应尽早读取,避免初始化代码先将标志清除。
第二,用复位来源缩小范围
常见来源包括上电复位、欠压复位、外部复位脚、独立或窗口看门狗、软件复位,以及部分器件支持的栈、内存或安全异常复位。不同芯片的标志定义不同,回答时应说明先查对应数据手册,而不是背某个系列的寄存器位。
第三,硬件侧重点看电源、复位脚和干扰路径
用示波器而不是只用万用表观察芯片电源和复位脚,设置合适触发条件捕获短时跌落、尖峰或复位脉冲。对比电机、继电器、无线发射、大电流负载和接口插拔的动作时刻,检查电源余量、去耦回路、地回流、感性负载吸收、复位脚上拉与滤波、连接器接地以及ESD和EMI耦合路径。
第四,软件侧重点查看看门狗、栈和内存
看门狗复位不等于“看门狗误动作”,它可能是在提示任务死锁、长时间关中断、优先级反转或某段代码执行时间失控。还应检查栈水位、数组越界、野指针、堆破坏、递归、并发访问和异常处理。可在关键任务、故障处理和喂狗位置加入轻量日志或GPIO时间标记。
第五,通过改变一个变量验证假设
降低负载、断开感性器件、改用稳定实验电源、调整软件功能开关、延长看门狗窗口或启用内存保护,都可以作为验证手段。但每轮实验只改变一个主要变量并记录复现次数,避免多个改动同时加入后无法判断真正原因。
第六,修复后回到最差工况复测
硬件修改要在温度、电源边界、负载切换和接口扰动等实际条件下复测;软件修改要做长时间运行、压力和异常注入测试。只在桌面上运行几十分钟没有复位,不能证明问题已经关闭。
可直接使用的参考回答
“我会先确认现象是不是MCU复位。程序启动后第一时间读取并保存复位原因,同时记录启动次数和复位前的关键状态,区分欠压、外部复位、看门狗、软件复位或其他异常。”
“硬件侧用示波器触发捕获VDD和复位脚,重点关联电机、继电器、通信和负载切换时刻,检查电源余量、去耦、地回流、复位脚和干扰耦合。软件侧检查看门狗超时原因、任务死锁、长时间关中断、栈溢出、数组越界和内存破坏,并增加不会明显改变时序的日志或GPIO标记。”
“找到假设后,我会一次改变一个变量验证,比如断开感性负载、换实验电源或关闭某个任务。确认根因后再做硬件或软件永久修改,并回到最差负载和长时间运行条件复测。”
面试官可能继续追问
1. 万用表测到3.3V一直正常,能排除电源问题吗?
不能。万用表通常无法捕获持续时间很短的跌落或尖峰,应使用示波器,并合理设置带宽、探头接地和触发条件。
2. 查到是看门狗复位,直接关掉看门狗可以吗?
关闭看门狗可以用于短期对比实验,但不能当成最终修复。还要找到为什么没有按时喂狗,是任务阻塞、调度异常、执行超时还是内存问题。
3. 为什么调试器连接时不复位,脱机就复位?
调试器可能改变时序、复位脚状态、供电、低功耗行为或看门狗配置。应把这些差异列出来,使用日志、GPIO和独立测量工具减少调试器对现场的影响。
4. 复位标志显示多个来源怎么办?
先查芯片手册对标志置位和清除的定义,确认哪些标志会在不同复位间保留。启动时按规定顺序读取、保存并清除,再结合电源和复位脚波形判断。
容易失分的表达
“偶发复位一般就是电源不稳。”——过早锁定单一原因。
“把看门狗关闭就好了。”——掩盖软件失控而不是解决问题。
“多加几个电容试试。”——没有测量对象、假设和前后数据。
“我会一直单步,等问题出现。”——没有考虑调试器改变系统状态。
面试前准备动作
确认常用MCU如何读取和清除复位原因标志。
准备一次电源跌落、看门狗或内存越界问题的完整案例。
会说明示波器观察VDD和复位脚时怎样选择触发点。
能画出“现象确认—原因分类—单变量实验—最差工况复测”的流程。
参考资料
Microchip:Determining the Cause of a Reset
STMicroelectronics AN6011:Reset and Power-Supply Supervision
核心关键词:单片机偶发复位、MCU重启排查、看门狗复位、欠压复位、嵌入式面试题、硬件调试

扫码关注




























