主要内容

插装代码分析器

在代码检测分析器中,将代码添加到生成的代码中,以记录在处理器上执行的每个任务的开始和停止时间。将记录的每个任务的启动和停止时间发送到开发计算机进行保存、处理和显示。每个任务的瞬时状态可以从流程中所有任务的启动和停止时间和优先级的组合中推断出来。

考虑一个具有两个任务的简单模型,一个高优先级和一个低优先级在嵌入式处理器上执行,并由代码检测分析器进行度量。此图显示了代码检测分析器所做的度量,以及对这些度量所产生的各个任务状态的推断。

通过查看图表,可以看到低优先级任务的状态是从高优先级任务的执行中推断出来的。由于只测量任务执行的开始和结束时间,因此可能会丢失一些相关数据,特别是内核延迟。由于内核延迟先于任务开始,所以不能直接观察到中断事件的实际时间,可以假设任务的开始时间比中断的实际时间延迟。此外,当任务从抢占状态转移到运行状态时,内核延迟将被添加到低优先级任务的解释执行时间中。

代码插装分析得益于易于生成和部署。在部署到以单一任务模式运行单一进程的操作系统的处理器上的模型上,任务执行时间度量具有足够的准确性和精度。由于在每个任务中只添加了少量的代码来记录任务的开始和停止时间,所以在大多数情况下,代码检测分析器对任务执行时间的影响可以忽略不计。

限制

代码检测分析提供了生成代码的轻量级度量工具。然而,在使用代码检测分析程序度量任务执行和持续时间时,必须考虑两个限制。这些限制如下:

  • 无法测量内核延迟或内核延迟组件。内核延迟通常可以视为一个常数。由于内核延迟对所有任务启动时间的影响大致相同,因此可以通过与仿真中的任务时间进行比较来推断出内核延迟的估计。有关内核延迟的更多信息,请参见内核延迟

  • 无法捕捉使用自定义代码块从任务内部发出到OS内核的命令的效果。代码检测分析器记录任务的开始时间、结束时间以及其他任务对任务的抢占。但是,当任务调用OS内核时,代码检测分析器不会将任务和内核之间的控制更改记录为抢占。由于内核调用在不详细了解时间的情况下被视为不确定性,因此使用这种类型的探查器无法可靠地测量所测量的任务持续时间。有关任务持续时间的详细信息,请参见任务持续时间

另请参阅

相关的话题