嵌入式开发常见问题解决方法
逆锋起笔
共 3482字,需浏览 7分钟
· 2021-12-19
一、问题复现
1.1 模拟复现条件
1.2 提高相关任务执行频率
1.3 增大测试样本量
二、问题定位
2.1 打印LOG
2.2 在线调试
2.3 版本回退
2.4 二分注释
二分注释即
以类似二分查找法的方式注释掉部分代码,以此判断问题是否由注释掉的这部分代码引起。2.5 保存内核寄存器快照
![](https://filescdn.proginn.com/4a8e977e6847307ef3d4721c8776cf6f/e90b802349a88577af13a66a4502d903.webp)
三、问题分析处理
3.1 程序继续运行
3.1.1 数值异常
3.1.1.1 软件问题
![](https://filescdn.proginn.com/8efdf7c7ce327eb2fa4808230634da55/b88b9656e2236e94a3ce20cffeb8eb50.webp)
在设计阶段应该合理分配内存资源,为栈设置合适的大小;
将函数内较大的临时变量加”static”关键字转化为静态变量,或者使用malloc()动态分配,将其放到堆上;
改变函数调用方式,降低调用层数。
![](https://filescdn.proginn.com/82d54e00832da39dde03429bfc4f0ae8/8e2c19b23fbf893f0f5c09b29bdeb971.webp)
![](https://filescdn.proginn.com/886e4c25d4411241212782a34cc6a440/00d306c84042837b89d329866dd47702.webp)
3.1.1.2 硬件问题
![](https://filescdn.proginn.com/ceb5dbe1b7d8b5de28d4586a5bbebf3a/885597c44daddcbac3da81815c593f9c.webp)
3.1.2 动作异常
3.1.2.1 软件问题
3.1.2.2 硬件问题
3.2 程序崩溃
3.2.1 停止运行
3.2.1.1 软件问题
在外设时钟门未使能的情况下操作该外设的寄存器;
跳转函数地址越界,通常发生在函数指针被篡改,排查方法同数值异常;
解引用指针时出现对齐问题:
![](https://filescdn.proginn.com/5aaf15b11935298c478eea49ee72263d/3d0d1b307db85f39dabb382d12f308a9.webp)
3.2.1.2 硬件问题
3.2 .2 复位
3.2.2.1 软件问题
3.2.2.2 硬件问题
四、回归测试
五、经验总结
来源地址: https://www.cnblogs.com/jozochen/p/8541714.html
声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除
评论