系列文章目录

todo :待完成文章总结
第一章:语言篇:简单剖析C语言在日常工作中的应用
第二章:裸机篇:关于裸机相关的部分知识(这里主要是针对作者想要了解的部分)
2-1:裸机的启动部分
2-2:Arm架构相关的知识
第三章:通信篇:车载常用的通信网络基础知识
https://blog.csdn.net/qq_50093870/article/details/153388253?spm=1011.2124.3001.6209
3-1 SPI dasiy chin连接方式与代码实现
第四章:操作系统篇:这里主要是作者在工作中常用到的关于RTOS基础的知识,主要是结合相关Autosar开发的架构
第五章:调试篇:这里是在日常工作中用到的调试的知识,主要分为裸机部分的调试和带Os的调试
第六章:Autosar篇:由于不同厂商使用的Autosar的工具链与方法论各不相同,所以作者尽量抽象与简化

一、OS和裸机常用的调试技巧

条件断点

定义:条件断点(Conditional Breakpoint)只有在指定条件满足时才会触发,用于避免在高频执行代码中频繁停机。
如何使用:针对不同的调试设备,有不同的使用方法,这里不再赘述。
优缺点:优点,针对偶发的调试情况,可以捕捉到MCU运行的现场。
缺点,1)非常耗时,由于是通过软件进行判断的而非硬件,可能破坏实时性。
2)可能改变程序行为??
3)在 OS / 多核 / 中断环境下不可靠,这是由于全局变量,可能被其他Task给串改。

应用范围:
在这里插入图片描述

调用栈回溯

定义:调用栈,观察某个函数的调用关系。这是由于xxx;
优点:定位问题路径极快。其中对于Hardfault特别适用,但是当栈被破坏掉的话,就无法进行判别了。

  • 裸机:HardFault / 异常现场
  • RTOS:当前 task 的调用路径
  • Linux:bt 是调试核心能力

栈破坏的常见原因:

  • 栈溢出
  • 野指针写栈
  • memcpy / memset 越界

Trance

Tranc 功能是Trace32特有的,可以追溯变量的变化情况,比如某个变量在什么时候进行了跳变,并且记录下来。
在这里插入图片描述
但是目前这些功能都还没学习完整。

Map文件的使用

Map 文件用来回答三个问题:
代码/变量在“哪”、占“多大”、是谁占的。

这里对于栈溢出,内存不足等问题可以结合该文件进行调试。
在这里插入图片描述
这里目前也没有经常使用。

示波器和各种软件的使用

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐