This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320C6412:SWI_inc BIOS API 使用

Guru**** 2539500 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/830181/tms320c6412-swi_inc-bios-api-usage

器件型号:TMS320C6412

你(们)好

我正在调试主要使用 SWI 的传统 C6412代码。 99%的调用是 SWI_POST(),还有一些 SWI_OR()调用。 RTOS 的版本为 BIOS_5_31_02。

我将更改几个 SWI_POST()调用以改用 SWI_inc (),并读取 SWI 对象函数内的邮箱(SWI_getmbox)以确定发生了多少个 SWI 中断。 我正在进行此更改、因为我怀疑在问题发生时会发生多个 SWI 中断。

但是、我可以编译和链接、并下载到目标。 DSP 加载并开始执行、但当它到达第一个 SWI_inc ()调用时、我的应用程序基本上停止响应。

请注意,如果我在 SWI_object 函数中使用 SWI_POST()和 SWI_getmbox,则没有问题-即使 SWI_getmbox 没有使用,因为 SWI_POST()不会修改 mbox。 这只是额外的信息。

我已阅读并重新阅读 C6000 DSP/BIOS 指南。

使用 SWI_inc()而不是 SWI_POST()时是否需要做一些微妙的事情??

是否存在任何问题、因为对于 SWI_inc、我们将邮箱视为计数器而不是位映射(SWI_OR)、或者根本不是(SWI_POST)?

在使用 SWI_inc 之前、是否还需要初始化其他内容、可能在 tcf 文件中?

我使用 mbox 作为 SWI_inc ()的计数器后需要初始化的任何内容?

只是在寻找想法…

谢谢

Jim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、

    您是否可以访问 ROV 视图? 在 CCS 中、Tools > ROV Classic。 您在那里看到了任何错误吗?  

    我正在 SYS/BIOS 团队中进行此操作、以提供帮助。  

    此致、
    Sahin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、

    如果您不在 SWI 中使用邮箱计数器、则 SWI_POST 和 SWI_inc 在本质上是相同的。 我没有看到与此区域相关的任何错误(我检查了较新的版本说明和实际代码)。 正如 Sahin 建议的、我会查看 ROV (或者在您的 CCS 版本上、它可能被称为 KOV...depending)。  

    我会围绕 SWI_getmbox 的使用检查您的逻辑、以查看增量值是否会导致不同的执行路径。

    Todd

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Sahin,不能,我不能进入 ROV 视图。 这是现在直接在目标上运行的基本应用程序。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Todd、

    我无法访问 ROV/CCS。 感谢您验证 SWI_inc ()的调试历史记录和功能,并确认它与 SWI_POST ()基本相同。

    问题似乎是在进行 SWI_inc ()调用时。 如果我只在 SWI 对象函数中指定 SWI_getmbox 的返回值,它不会导致问题,主要问题是 SWI_inc ()调用,此调用只会停止我的应用程序。

    至少、与使用 SWI_POST()时类似、我希望 SWI_inc ()调用也会在 SWI_object 函数上执行、因此我可以首先检查该函数。

    在 SWI_object_function 内(除了 SWI_getmbox)、是否还应该检查 SWI_object 中的其他内容?

    如果我使用 SWI_POST()来表示前几个 SWI_object 函数调用,然后更改为使用具有相同 SWI_object 函数的 SWI_inc (),是否会出现问题?

    谢谢

    Jim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Jim Paul"]如果我使用 SWI_POST()来表示前几个 SWI_object 函数调用,然后更改为使用具有相同 SWI_object 函数的 SWI_inc (),是否会出现问题?

    这对内核来说很好。

    您可能需要确认 SWI 对象有效。 使用 SWI_inc 时、它会更改内部字段、因此如果它不是有效的句柄、则会发生损坏。 当然、如果对象无效、我会惊讶于您没有看到 SWI_POST 的问题、因为它也使用内部字段。

    是否仍有启用日志记录的功能?  

    Todd

    [8/26更新:将此标记为 TI 认为已解决、原因是原始海报没有回复。]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Todd、谢谢。 我无法启用日志记录。 我将尝试检查 SWI 对象的有效性。 也可以尝试其他一些 SWI_**函数。

    Jim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Todd 等、对于这个问题、如果我的代码执行一个 SWI_inc ()调用并跳转到随后进行 SWI_self ()调用的 ISR、我假设 SWI_self ()将与进行另一个 SWI_inc ()调用相同(而不是不同类型...例如 SWI_POST())?

    谢谢

    Jim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、

    我不太关注您的说法。 您从何处调用 SWI_inc? HWI、SWI 或 TSK? Swi_self 仅返回正在执行的 SWI 的句柄。  

    Todd

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是否得到了解决?