Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI-RTOS
DSP: C6748
SYSBIOS: 6.75.00.12
电路板: 定制硬件
我不理解如何读取 HWI 的 SYSBIOS 时序基准。 我要尝试回答的是: "用于处理 HWI 的 SYSBIOS 开销是多少"? 要回答此问题、您必须考虑三种情况。 在所有这三种情况下,假设应用程序在 HWI 之前的任务级别运行,并且它不在 HWI_disable()代码块中执行,也不在 sloop 中执行。
ISR 不会发布信号量来唤醒任务、也不会发布 SWI。
ISR 发布一个信号量来唤醒一个任务。
ISR 发布一个 SWI。
在所有情况下、HWI 都会触发、CPU 会关闭至 HWI 矢量表。 它从此处进入 HWI 调度程序、该调度程序最终调用我们的 ISR。 我们的 ISR 会执行、然后返回 HWI 调度程序。 调度员确定下一步的位置。 我可以对我的 ISR 进行评测以确定执行所需的时间、但我无法从提供的 SYSBIOS 基准中了解如何将其余时间组合在一起。
中断延迟: SYSBIOS 用户指南指出这是禁用可屏蔽中断的时间。 此外、它还指出、这是从中断触发到中断调度程序的第一条指令的时间。 这两项发言似乎相互矛盾。 不确定我是否需要该数字。 C674x 的数量为205个周期。
Hwi 调度程序 prolog: 在 SYSBIOS 用户指南中定义为从触发中断到调用用户的 ISR 的时间。 C674x 的数量为127个周期。 但等待、这是127个周期、但中断延迟是205个周期。 我认为这是我需要回答"执行 ISR 中第一条指令的中断触发"的数字。
Hwi 调度程序结语: 在 SYSBIOS 用户指南中定义为从我的 ISR 返回到完成 HWI 调度程序工作的时间。 C674x 的数量为159个周期。 似乎我也需要这个数字。
Hwi 调度程序: 未在 SYSBIOS 用户指南中定义。 C674x 号为281个周期。 您会认为这应该是序言+结语、但不会累加(结束但不完全正确)。
Hwi 到被阻止的任务: 在 SYSBIOS 用户指南中定义为从发布信标到执行任务中的第1条指令的 ISR 开始的时间。 但是,下面的图中包括了 HWI 触发的时间和与描述相矛盾的 prolog。 C674x 号是445个圆柱。
Hwi 到 SWI: 在 SYSBIOS 用户指南中定义为从发布 SWI 的 ISR 开始到执行该 SWI 中的第1条指令的时间。 但是,下面的图中包括了 HWI 触发的时间和与描述相矛盾的 prolog。 C674x 的数字为271。
这是我回答这三个问题的最佳猜测。
1.序言+结语= 127 + 159 = 286个周期。 这将忽略中断延迟、因为我认为它正在尝试定义可屏蔽 HWI 的总时间被禁用。 它也不包括 HWI 调度程序、因为我认为序言+结语涵盖了这一点。 很难在计算中包含其中一个、但不确定。 困惑。
2. 序言+结语+ HWI 到被阻止的任务= 127 + 159 + 445 = 731个周期。 如果 HWI to block 任务说明错误且图正确、则该值应为445个周期。 困惑。
3. 序言+结语+ HWI 至 SWI = 127 + 159 + 271 = 557个周期。 如果 HWI 至 SWI 的描述错误且该图正确、则该值应该仅为227个周期。 但这不是真的、因为227小于序言+结语。 困惑。
谢谢、Dean