
1.在嵌入式系统中什么是段错误 (Segment fault)写出两种常见产生原因。段错误是程序访问不被允许的内存地址操作系统终止程序。常见原因 ①对空指针、野指针进行解引用读写 ②数组越界访问访问栈 / 堆以外内存 ③修改只读常量字符串。2.什么是内存泄漏嵌入式设备长期运行内存泄漏会造成什么现象如何避免内存泄漏使用malloc分配堆内存使用完毕没有调用free释放这块内存程序再也无法使用。 现象嵌入式设备长时间运行可用内存不断变少出现卡顿、任务崩溃、设备死机重启后恢复正常。 避免①malloc 和 free 成对使用②尽量少用动态内存分配优先用全局数组、局部栈数组③函数出口所有分支都要处理内存释放。3.简述中断服务函数 (ISR) 的编写注意事项嵌入式里中断里面为什么不能调用 printf/malloc注意事项①中断函数要短小高效不要做耗时操作②不调用会阻塞、会引起调度的函数③尽量使用 volatile 修饰被中断和主程序共同访问的变量④进入临界区时关闭中断保护共享变量。不能调用 printf/malloc 原因printf内部有互斥锁中断上下文没有任务栈会发生死锁malloc操作堆会操作全局堆链表不是线程安全中断调用会破坏堆结构引发崩溃。4.MQTT 协议常用于嵌入式 WiFi 设备上报考勤数据请简述 MQTT 发布 (Publish)、订阅 (Subscribe) 的工作模式。相比 HTTPMQTT 适合物联网设备的原因MQTT 基于发布‑订阅模型设备作为发布者 (Publish)把考勤记录发布到指定 Topic服务器 / 上位机订阅 (Subscribe) 该 Topic接收设备上报数据。对比 HTTP 优势①报文短小网络开销小适合带宽资源有限嵌入式设备②长连接支持主动上报不用设备轮询③支持 QoS保障消息送达功耗更低。5.什么是临界区嵌入式 RTOS 中如何保护临界资源写出两种方式。临界区多个任务 / 中断会同时访问的共享资源全局缓冲区、考勤缓存数据并发访问会造成数据错乱。保护方式关闭 / 开启中断进入临界区关中断退出打开中断适合短临界区。互斥锁 Mutex任务之间使用互斥锁获取锁之后访问资源访问完释放锁允许任务阻塞不可以在中断中使用互斥锁。