主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

分析代码执行数据

在软件在环 (SIL)、处理器在环 (PIL) 或基于 XCP 的外部模式仿真之后,您可以使用 coder.profile.ExecutionTimecoder.profile.ExecutionTimeSection 类中的方法来分析执行时间数据。

  1. 打开模型 SILTopModel

    openExample('ecoder/SILPILVerificationExample', ...
                 supportingFile='SILTopModel.slx')

  2. 模式部分中,选择仅 SIL/PIL 仿真

  3. 设置库中,指定启用分析的选项:

    • SIL/PIL 设置下,点击可移植字长

    • 时间探查下,点击任务探查开启,点击保存选项所有数据,然后点击函数关闭。

    • 覆盖率下,点击覆盖率收集关闭。

  4. 运行部分中,点击运行 SIL/PIL

软件生成出来了,一个 Simulink.SimulationOutput 对象,里面包含 executionProfile,一个 coder.profile.ExecutionTime 对象。

要获取具有分析数据的代码段总数,请使用 Sections 方法:

no_of_Sections = out.executionProfile.Sections
no_of_Sections = 

  1×2 ExecutionTimeTaskSection array with properties:

    Name
    Number
    ExecutionTimeInTicks
    SelfTimeInTicks
    TurnaroundTimeInTicks
    TotalExecutionTimeInTicks
    TotalSelfTimeInTicks
    TotalTurnaroundTimeInTicks
    MaximumExecutionTimeInTicks
    MaximumExecutionTimeCallNum
    MaximumSelfTimeInTicks
    MaximumSelfTimeCallNum
    MaximumTurnaroundTimeInTicks
    MaximumTurnaroundTimeCallNum
    NumCalls
    ExecutionTimeInSeconds
    Time
要获取分析代码段的 coder.profile.ExecutionTimeSection 对象,请使用方法 Sections
FirstSectionProfile = out.executionProfile.Sections(1)
SecondSectionProfile = out.executionProfile.Sections(2)
FirstSectionProfile = 

  ExecutionTimeTaskSection with properties:

                            Name: 'initialize'
                          Number: 1
            ExecutionTimeInTicks: 154
                 SelfTimeInTicks: 154
           TurnaroundTimeInTicks: 154
       TotalExecutionTimeInTicks: 154
            TotalSelfTimeInTicks: 154
      TotalTurnaroundTimeInTicks: 154
     MaximumExecutionTimeInTicks: 154
     MaximumExecutionTimeCallNum: 1
          MaximumSelfTimeInTicks: 154
          MaximumSelfTimeCallNum: 1
    MaximumTurnaroundTimeInTicks: 154
    MaximumTurnaroundTimeCallNum: 1
                        NumCalls: 1
          ExecutionTimeInSeconds: 4.2778e-08
                            Time: 0


SecondSectionProfile = 

  ExecutionTimeTaskSection with properties:

                            Name: 'step [0.1 0]'
                          Number: 2
            ExecutionTimeInTicks: [262 216 176 174 174 174 178 172 … ]
                 SelfTimeInTicks: [262 216 176 174 174 174 178 172 … ]
           TurnaroundTimeInTicks: [262 216 176 174 174 174 178 172 … ]
       TotalExecutionTimeInTicks: 22366
            TotalSelfTimeInTicks: 22366
      TotalTurnaroundTimeInTicks: 22366
     MaximumExecutionTimeInTicks: 748
     MaximumExecutionTimeCallNum: 68
          MaximumSelfTimeInTicks: 748
          MaximumSelfTimeCallNum: 68
    MaximumTurnaroundTimeInTicks: 748
    MaximumTurnaroundTimeCallNum: 68
                        NumCalls: 101
          ExecutionTimeInSeconds: [7.2778e-08 6.0000e-08 4.8889e-08 4.8333e-08 … ]
                            Time: [101×1 double]

使用 coder.profile.ExecutionTimeSection 方法提取特定代码段的分析信息。例如,使用 Name 获取分析任务的名称。

name_of_section = SecondSectionProfile.Name
name_of_section =

    'step [0.1 0]'

如果计时器未校准,并且您知道计时器速率,例如 2.2 GHz,则可以使用 coder.profile.ExecutionTime 方法 TimerTicksPerSecond 来校准计时器。

out.executionProfile.TimerTicksPerSecond = 2.2e9;
SecondSectionProfile = out.executionProfile.Sections(2);

另请参阅

主题