实时代码执行探查
本示例向您展示如何使用 C2000™ Microcontroller Blockset 集对生成的代码进行实时执行探查。
该模型的可用版本:
C2000 LaunchPadXL TMS320F28377S (LAUNCHXL-F28377S):
f28377S_RTProfiler.slx
模型
打开示例模型 f28377S_RTProfiler.slx。

简介
Simulink 模型中指定的采样时间决定了在目标硬件上运行生成的代码的时间安排。如果目标硬件具有足够的计算能力,则代码将按照指定的采样时间实时运行。
您可以使用实时执行探查来检查生成的代码是否满足实时性能要求。执行探查结果还可以用于采取措施来改进系统设计。例如,如果代码能够轻松满足实时性要求,您可以考虑向系统中添加更多功能,以利用可用的处理能力。另一方面,如果代码无法满足实时性要求,您可以寻找减少执行时间的方法。例如,您可以确定哪些任务最耗时,然后研究功能和速度之间是否有可能进行权衡。
本示例介绍了一种实时代码执行探查的工作流程,并向您展示如何:
为代码执行探查配置模型,并生成代码。
在目标硬件上运行生成的代码。
通过代码执行探查图和报告分析性能。
在板卡上运行示例
1.打开 f28377S_RTProfiler.slx 模型。该模型配置用于 C2000 LaunchPadXL TMS320F28377S (LAUNCHXL-F28377S) 目标硬件。
2.打开“建模”选项选项卡,然后点击“模型设置”或按 Ctrl+E 打开“配置参数”对话框。转到代码生成>验证。
3.选择“测量任务执行时间”,然后选择“测量函数执行时间” > “详细(所有函数调用点)”选项。这些选项使您能够分析生成的代码中每个任务和函数的执行时间。点击确定。
4.检查是否已选择“硬件实现” > “构建选项” > “构建、加载和运行”。必须选择此选项,否则生成的执行文件将不会下载到目标位置。
5.使用此命令设置要在目标上收集的探查样本数量。
codertarget.tic2000.setExecutionProfileBufferLength(<modelName>, 100)
6.打开“硬件”选项卡,然后点击“构建、部署和启动”以在目标硬件中运行代码。
7.在 MATLAB 命令行窗口中运行以下代码,将探查数据导入 MATLAB 工作区:
codertarget.profile.getData('f28377S_RTProfiler')执行此命令结束后,变量 executionProfile 可在 MATLAB 工作区中使用。
8.在 MATLAB 命令行窗口中运行以下代码,以获取刚刚运行的会话的探查报告。分析报告中各项任务和功能的不同周转时间和执行时间。完成后请关闭报告。
executionProfile.report

9.在 MATLAB 命令行窗口中执行以下代码,以可视化不同任务和函数的调度。注意较快的任务在哪里抢占了较慢的任务,以及不同的函数在哪里开始和结束。
executionProfile.schedule
注意
代码执行分析器使用片上定时器。如果使用处理器模拟器,请选择能够仿真处理器定时器的模拟器。
该模型需要运行足够长的时间才能收集到足够的探查数据。所需时间取决于指定的探查样本数量和模型的采样率。如果使用模拟器,数据采集所需的时间可能比使用硬件要长得多。
要收集的探查样本数量是指分配给存储探查数据的最大缓冲区数量。但这并不意味着函数调用的总数将等于要收集的探查样本的数量。有关详细信息,请参阅
schedule(Embedded Coder)。
P 表示该任务已被抢占。
附带的目标配置文件 (ccxml) 会移除调试器在连接到目标时执行的 RAM 初始化。请确保在使用自定义目标配置文件时出现此行为。
对于异步执行的子系统,仅硬件中断和 Idle Task 模块支持代码执行探查。
探查探测功能会在实际执行时间中增加有限的时间。
提取出探查数据后,程序将在硬件中停止运行。您需要对板卡进行断电重启,或者通过 Simulink 刷新软件才能使其运行。
在探查过程中,定时器 0 是在模型执行完所有初始化操作后配置的。因此,由于计时器在 t=0 时没有被触发,所以 1 步长会有延迟。