经纬恒润嵌入式二面:PPT 讲项目 + 堆栈与看门狗
- 轮次
- 二面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 二面前要求做 PPT 展示一个或多个项目并突出自己的技术:你主要负责哪部分,项目任务是怎么划分的?
- 围绕 PPT 里的项目一步步深挖:整个软件架构、整体设计是怎么做的?
- 看门狗怎么使用?
- 堆和栈有什么区别?溢出怎么处理,会有什么后果?
- 项目里用到的外设 CAN、TIM、USART 分别是怎么配置和使用的?
- 反问环节问到岗位方向:汽车座椅相关,会涉及 FOC 电机驱动。
《参考解析》
PPT 讲项目:面试官要的是「决策 + 指标」
页数控制在 8~12 页比较合适:背景与目标 → 系统框图 → 我的模块与职责边界 → 关键设计取舍 → 最难的问题与定位过程 → 结果指标 → 复盘改进。每页一个结论,图多字少。任务划分那题别只说「我做了底盘控制」,要讲清划分依据(按模块 / 按接口 / 按时间节点)、自己负责哪条链路、和谁对接、交付物是什么。面试官顺着 PPT 追问时,真正在考的是「为什么这么选」——提前准备两个备选方案和取舍理由(比如为什么用 CAN 而不是串口、为什么控制周期定 1 ms),比多写十页功能罗列有用得多。
看门狗:喂狗的位置比喂狗的频率更重要
- 独立看门狗 IWDG 用 LSI(约 32 kHz,精度差)计数,超时直接复位系统;窗口看门狗 WWDG 用 APB 时钟,且要求在窗口期内喂——喂太早也复位,能抓住「跑得比预期快」的死循环。
- 喂狗动作要放在主循环或最低优先级任务里,由各关键任务的健康标志驱动:每个任务跑一圈置位自己的 bit,主循环确认所有 bit 到齐才喂狗。如果只在某个任务里喂,那个任务等于自己证明自己活着,别的任务卡死根本发现不了。
- 不要在中断里喂狗:中断还能响应不代表业务逻辑还在跑。
- 调试时先用
DBGMCU把看门狗冻结,否则一进断点就复位,很难受。 - 通过复位原因寄存器(如
RCC_CSR)区分上电复位、看门狗复位、软件复位,并把现场存进noinit段,复位后上报,否则现场永远查不出来。 - 长耗时操作(擦写 Flash、大块搬运)要么分段喂狗,要么临时关闭但记日志。
堆与栈:分配方式、生长方向与溢出后果
| 维度 | 栈 | 堆 |
|---|---|---|
| 分配方式 | 编译器/运行时隐式分配(函数调用、局部变量) | malloc/free 显式管理 |
| 生长方向 | 向下(高地址往低地址) | 向上 |
| 速度 | 快(只动指针) | 慢(查找空闲块、可能系统调用) |
| 大小 | 链接脚本写死,溢出无提示 | 剩余 RAM 减去已用段,碎片化 |
| 典型问题 | 栈溢出、递归过深 | 内存泄漏、碎片、double free |
栈溢出的后果很隐蔽:轻则踩坏相邻的全局变量,表现为「某个不相干的变量莫名其妙被改」;重则破坏堆的管理元数据,下一次 malloc 直接挂死;再严重就是返回地址被覆盖,跳进 HardFault 或者跑飞到随机地址。检测手段有几层:① 启动时把栈区填 0xCD 魔数,跑一段时间后数还有多少没被改写,得到历史峰值水位;② FreeRTOS 用 uxTaskGetStackHighWaterMark() 看每个任务栈的最小余量;③ 用 MPU 把栈底下面一页设成不可访问,越界立刻触发 MemManage Fault,这是最干脆的;④ 栈底放 canary 值定期校验;⑤ 编译期用 -fstack-usage 静态估算。定位到之后,通常是把大数组局部变量改成静态或堆分配、把深递归改成迭代、给 printf 家族限制缓冲长度。
CAN / TIM / USART 三个外设怎么答
- CAN:位时序与采样点怎么算、验收滤波器怎么配、发送邮箱优先级、Bus-Off 后的自动恢复策略,以及应用层 ID 分配规则(谁发什么、周期多少 ms)。
- TIM:PWM 输出的频率 = 时钟 / (PSC+1) / (ARR+1)、占空比由 CCR 决定;输入捕获测脉宽/频率;编码器模式读电机转速和方向;用定时中断做固定控制周期。做电机控制时,PWM 与 ADC 采样要同步触发,避免采到开关噪声。
- USART:波特率误差控制在 2.5% 以内、DMA + 空闲中断收不定长、收发各一个环形缓冲、错误标志(ORE/FE/NE/PE)怎么清。CAN 与串口的选择理由也可以顺带说:多节点、抗干扰、带仲裁和错误检测的场合用 CAN,点对点调试或接模组用串口。
岗位方向是汽车座椅 + FOC 电机驱动,怎么接住
反问答到这个方向后,最好主动补几句:FOC 的核心是 Clarke/Park 变换把三相电流投到 d-q 轴,表贴式 PMSM 一般把 d 轴电流给定为 0、q 轴给定转矩,控制结构是电流内环(几十微秒级)+ 速度/位置外环;电流采样用下桥三电阻或单电阻,靠 ADC 与 PWM 同步触发;转子角度来自霍尔、编码器或龙伯格/滑模观测器这类无感方案。汽车电子还常问 UDS 诊断、CAN 通信矩阵和 ISO 26262 功能安全(ASIL 等级),提一句自己愿意补这些,比硬装懂更稳。