岗位:嵌入式软件工程师
题型:11 道问答题,60 分钟,总分 110 分
1、问答题
1.1
简述在嵌入式学习中遇到的一个问题(可多个)及处理过程?
解答(抛砖引玉,非标准答案):
问题:
我自己写 RTOS 内核的过程中,发现任务调度不正常,会在心跳函数中出现卡死现象
处理过程:
- 首先尝试使用 Keil 软件的 Debug 模式定位发生错误的程序
- 发现程序会卡在
HardFault_Handler
中断处理函数(非法内存访问、堆栈溢出或者除零等操作)- 尝试打断点进定位发生错误的程序
- 经过逐步排查我发现一旦执行 RTOS 的心跳函数就会触发
HardFault
中断- 逐行查看程序后发现可能访问了不该访问的地址
- 聚焦到就绪链表数组的下标上
- 利用 printf 打印访问时的数组下标,发现不正常
- 思考不正