1823_ChibiOS的调试功能

         全部学习汇总: GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com)

1823_ChibiOS的调试功能_第1张图片

1. 这里提到的调试,debug,跟测试工作本身是没有直接关系的。主要是为了保证开发以及实现上的保障来考虑的。

2. 所有的调试选项对于内核配置来说都是可访问的,这种设计应该是因为这样的选项会涉及到内核功能配置本身的变化。

3. 运行时的检查,可以在检查到问题的时候挂起系统,类似panic的功能。如果出现了这样的情况,可以按照一个推荐的步骤来检查:首先利用调试器暂停应用;其次,确认软件是否真的是停在了这样的接口上;第三,提取错误信息查看原因;第四,找到这个接口调用的触发点,通常来说条件会给我们解决问题提供很多的提示。

4. 接下来的一些内核的统计,可以提供一些参考信息让我们分析评估系统的行为。

1823_ChibiOS的调试功能_第2张图片

1. 如果开启了内核的统计,每一个线程能够保存下来的时间相关的一些统计包括:线程运行的最长时间、线程运行的最短时间、线程上一次的运行时间、线程累计的运行时间。

2. 上面的这个时间统计是基于定时器来实现的,具体的精度与时钟的精度相同。

1823_ChibiOS的调试功能_第3张图片

1. 系统状态检查,主要能够查出来的问题是在当前的上下文中调用了该上下文不支持的API。

2. 这一页给出来了很多错误代码,而这些错误代码表征了不同上下文调用不合理API的问题。

1823_ChibiOS的调试功能_第4张图片

1. OS接口的一些函数的参数有一定的要求,开启这样的检查可以检查参数是否在合理范围内。比较典型的有,传入的指针参数不能够为NULL的时候但是错误传入了NULL。

2. 系统断言提供的不仅仅是一个状态检查,更重要的设计目的是实现了数据结构完整性的检查。

3. trace buffer,可以在系统异常的时候追踪一些错误的信息。可以通过几种不同的trace掩码设置来确定究竟捕捉哪些信息。

1823_ChibiOS的调试功能_第5张图片

这里提到了一个检查用到的机制,对WA区域进行特殊数据的填充。这种填充的机制在FreeRTOS以及RT-Thread中我都是见过的。

1823_ChibiOS的调试功能_第6张图片

Thread Profiling提供的功能主要是通过计数器来进行线程运行时间的统计,通过这样的统计可以知道线程执行的时候所占的时间权重。

以上就是ChibiOS中的调试功能支持的简单梳理,我觉得设计考虑还是很完善的。至少,并不是让人直面硬件的这种冰冷的交互,而是做到了很大程度上的意义抽象。这对于软件开发人员判断问题发生的效率是很有帮助的。

你可能感兴趣的:(ChibiOS,驱动开发,RTOS,ChibiOS)