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.
工具与软件:
尊敬的 TI 专家:
我使用的是 MCU+ SDK 8.06版、重点介绍运行 FreeRTOS 的 M4F。
您是否有任何建议/实施以下2项的正确方法?
1.禁用来自 ISR 内部的中断。
2.禁用任务内部的中断。
---
我正在玩 Hwip_disable () API,发现它不工作如文件所述。
3.我找到了 SDK 版本9.02的下面的线程,并想知道同样的修补程序是否适用于 SDK 版本8.06 ?
不确定为什么此 API 函数在 SDK 版本8.06和9.02中损坏... 因此、我想知道是否甚至建议使用此 API 来禁用中断?
->我设置了一个优先级= 4的计时器(syscfg 中的默认值)、并在任务之外调用 Hwip_disable ()、只是为了测试它的功能。 与下面的线程的情况相同、我只能在计时器 PRIO = 7时禁用计时器中断。 此外、出于某种原因、如果我在 HwIP 禁用后立即调用 ClockP_SLEEP 或 DebugP_LOG、则计时器中断会像不调用 HwIP 禁用一样触发。 请注意、我尚未应用下面主题中所述的修复。
希望从你的端得到一些建议 如果我的理解有误、请纠正我。 感谢您一如既往的支持!
供参考:
SYSCFG 中的计时器设置
测试代码
您好、Stephen:
感谢您访问德州仪器(TI) E2E 支持论坛。
[报价用户 id="606578" url="~/support/processors-group/processors/f/processors-forum/1368454/processor-sdk-am62x-m4-freertos-interrupt-disable-not-working-hwip_disable "]1.禁用来自 ISR 内部的中断。
2.禁用任务内部的中断。
[报价]您可以调用 Hwip_disable () ISR 中的 API 以及非 ISR 上下文中的 API。
请注意、我尚未应用下面主题中提到的修复程序。
您可以在执行 先前回复中提到的 e2e 线程中建议的步骤后再试一次吗?
请告知我们结果。
您能否说明在上述代码中清除了中断的位置?
此致、
Tushar
你好、Tushar、明白了。 将尝试实施修复并更新有关结果。
您能告诉在上述代码中清除中断的位置吗?
->抱歉、我不确定具体的意思、但是中断是在上面的 SYSCFG (调用 my_timer_callback 的 ISR)函数生成的定时器 ISR 中清除的。 此外、以防万一、我尚未在上述代码中调用 Hwip_restore、但仍会触发计时器中断、但我的预期是它不会触发、因为我尚未再次启用中断。
1.不过、出于好奇心、可以不可以知道在哪里可以找到其他外设的中断优先级? 据我所知、IPC 通信还利用中断、可以知道 IPC 通信的优先级吗? 此外,我假设在实施修复并调用 Hwip_disable ()后,这将被禁用。
2.我也尝试过调用 taskENTER_critical (),并发现与 Hwip_disable 的行为完全相同(修复未实现)... 在中断禁用方面、您是否有机会确认上述2个函数是否具有相同的功能?
感谢您的支持!
尊敬的 Stephen:
将尝试实施此修复并更新结果。
[报价]谢谢、我们将等待结果。
抱歉、我不确定具体意思是什么、但是在上面的 SYSCFG 生成的定时器 ISR (ISR 调用 my_timer_callback)函数内正在清除中断您需要在 ISR 内清除计时器溢出状态。
TimerP_clearOverflowInt() 是用于清除计时器溢出中断的 API。
请参阅 计时器 API 。
[报价 userid="606578" url="~/support/processors-group/processors/f/processors-forum/1368454/processor-sdk-am62x-m4-freertos-interrupt-disable-not-working-hwip_disable/5226168 #5226168"]出于好奇心、我可以知道在哪里可以找到其他外设的中断优先级了吗? 据我所知、IPC 通信也利用中断、我可以知道 IPC 通信的优先级吗?[/quote]我需要在内部查看此详细信息。 请等待一段时间再回来。
。 我还尝试了调用 taskENTER_CRITICAL (),并发现与 Hwip_disable 的行为完全相同(未实现修复)... 在中断禁用方面、您是否有机会确认上述2个函数是否具有相同的功能? [报价]我已经检查了流程,发现 taskENTER_CRITICAL ()内部正在使用 Hwip_disable () API。 请尝试一次、实施修复。
此致、
Tushar
尊敬的 Stephen:
我可以在哪里找到其他外设的中断优先级吗? 据我所知、IPC 通信也利用中断、我可以知道 IPC 通信的优先级吗?
您可以设置外设的优先级、同时在示例中使用它们、就像在计时器外设中一样。
可否通过 IPC 常见内容来详细说明一下您是指 IPC 驱动程序中断优先级?
此致、
Tushar
尊敬的 Tushar:
是的、正确。 IPC 驱动器中断。 我运行 rpmsg_echo_linux 示例程序、我认为是否正确使用了中断? 我对它的优先级感到好奇。 对于这个、SysConfig 中的 IPC 下没有中断优先级。
如果我的理解不正确、请告知我。
谢谢!
尊敬的 Stephen:
感谢您的答复。
我已经检查了驱动程序代码。 如果中断的优先级并非由应用代码决定、则将中断设置为默认优先级(即尽可能低的优先级)。
对于 M4F 内核、中断的默认优先级为7、而对于 R5F、默认优先级为15。 希望这些信息有所帮助。
此致、
Tushar
Tushar、您好、感谢您提供这些信息。
1)
我已检查驱动程序代码。 如果中断的优先级不是由应用程序代码决定的、则中断将设置为默认优先级(即尽可能低的优先级)。[/QUOT]我可以知道在哪里可以查看这个吗?
2) 2)我实施了您发送的修复。 这对我来说是可行的、但我必须重新构建整个 SDK 库才能使它正常工作... 我不确定之前是否犯了什么错误。 感谢你的评分
3.对于 taskenter_critical () 使用 Hwip_disable (),我是否可以知道这是在哪里? 实施修复后、我可以使用 HwiP_disable 同时禁用计时器中断和 IPC 中断、但对于 taskEnter_Critical、似乎没有任何效果。
4.关于 IPC 通信的中断映射、只要我知道入口点就是位于中的此函数
{SDK 安装路径}/source/drivers/ipc_notify/v0/ipc_notify_v0.c
您可以帮助指出 在发生中断时是如何调用它的吗? 我正在查找一个文件 、其中将此函数注册为用于 IPC 通信的 ISR ...
5.您是否知道在中断禁用后调用 ClockP_SLEEP 或 DebugP_LOG 会导致再次触发中断的原因? 我的案例定时器 ISR。
[报价 userid="16414" url="~/support/processors-group/processors/f/processors-forum/1368454/processor-sdk-am62x-m4-freertos-interrupt-disable-not-working-hwip_disable/5226855 #5226855"] TimerP_clearOverflowInt() 是用于清除计时器溢出中断的 API。[/QUOT]我已检查、一旦在 syscfg 中包含计时器、该函数就将由自动生成的 ISR 函数调用。
谢谢你
尊敬的 Stephen:
感谢您的答复。
我可以在哪里查看这个吗?
请检查 Hwip_Params_init () 用于将 Hwip_parameter 初始化为默认值的 API。 您可以在内部找到该 API ${MCU+SDK}/source/kernel/dpl/nortos /[M4/R5]/[hwip_armv7m.c/Hwip_armv7r_vim.c] 子目录。
我已经实施了您发送的修复程序。 这对我来说是可行的、但我必须重新构建整个 SDK 库才能使它正常工作... 我不确定之前是否犯了什么错误。 感谢您的修复。
感谢您的确认。
关于 使用 HwiP_disable ()的 taskENTER_critical ()我是否可以知道它位于何处? 实施修复后,我可以使用 Hwip_disable 同时禁用计时器中断和 IPC 中断,但对于 taskEnter_Critical 似乎没有任何效果。[/报价]每个内核都有不同版本的 API。 您需要在 SDK 源代码中回溯来找到确切的实现。 我在其中查看过与 C7x 内核相关的矢量。 。 taskenter_critical () API 位于 ${MCU+SDK}/source/kernel/freertos/FreeRTOS-Kernel/include/task.h 初始文本文件。
你是否知道在中断禁用后调用 ClockP_SLEEP 或 DebugP_LOG 会导致再次触发中断的原因? 我的案例定时器 ISR。 [报价]您能否提供用于检查此情况的示例代码? DebugP_LOG()和 ClockP_SLEEP() API 与中断功能无关。
[/quote]您能否说明 在发生中断时是如何调用此函数的? 我正在查找一个文件 、该文件将此函数注册为 IPC 通信的 ISR ...在中完成中断设置 IpcNotify_init() API、在内部调用 TI_DRIVERS_CONFIG.c 生成的头文件。
请参阅下图。
此致、
Tushar
[/quote][/quote]
Tushar、您好、非常感谢您提供以上信息。 我将检查它们。
您能提供一个用于检查此问题的示例代码吗? DebugP_LOG()和 ClockP_SLEEP() API 与中断功能无关。
这也是我的期望。 实际上、我很难确定发生了什么、直到我能够将其展开到我用于调试目的的两个代码。 您是否需要项目本身? (虽然代码很杂乱)至于简化的代码、您可以参阅我之前粘贴的上面的片段。
正如你在 timer main 下看到的,调用 Hwip_disable ()后,我没有调用 Hwip_restore。 所以我希望永久禁用计时器 ISR。 但是、这段时间你调用 ClockP Sleep 或 DebugP log。 ISR 似乎再次被触发(计数器递增)。
中断设置在中完成 IpcNotify_init() API、在内部调用 TI_DRIVERS_CONFIG.c 通过 SysConfig 生成的文件。[/QUOT]谢谢您的回答。 错过了这个。 但是... 如果我错了、请更正我(不确定此问题是否正确)
但是、据我所知、还有一个类似 ISR 函数也被映射到内存地址/寄存器。 可能是中断矢量表之类的... 包含在1个文件中... 不确定是否也有这种映射? 一旦使用 Hwip 回调来注册 ISR 函数、如何将此映射到中断寄存器\地址/跳转点...?
您好、Stephen:
类似于 中断矢量表的内容可能…… 包含在1个文件中... 不确定是否也有这种映射?
有关 M4F 内核的矢量表和中断的详细信息、请参阅 ${MCU+SDK}\source\kernel\[nortos/freertos]\dpl\m4\Hwip_armv7m_handler_[nortos/freertos].c 初始文本文件。
此致、
Tushar
尊敬的 Tushar:
感谢您的观看。
我将等待有关 DebugP_LOG 和 ClockP_SLEEP 的更新、这些更新会影响中断禁用。
谢谢你
尊敬的 Stephen:
我将等待有关 DebugP_LOG 和 ClockP_SLEEP 影响中断禁用的更新。
我将创建一个演示项目并检查以上场景。
请等待一段时间再回来。
此致、
Tushar
Tushar 您好,谢谢您将等待您的更新。
BTW,我可以知道何时发布 Hwip_disable ()的官方修补程序吗? 我认为在新版本的 SDK 中呢?
谢谢!
尊敬的 Stephen:
指定的专家将于下周初离职、请期待延迟回复。
感谢您的耐心。
此致、
Vaibhav
您好、Stephen:
感谢您的耐心。
我已为此问题提出内部 Jira 工单、并将更新有关修复版本的信息。
同时、我创建了一个示例项目来重现您的问题、并将检查根本原因。
请等待一段时间再回来。
此致、
Tushar
我创建了一个示例项目以复制您的问题、并将检查根本原因。
尊敬的 Tushar:
在禁用中断后、您是否能够重现我使用调试日志或时钟睡眠时遇到的问题?
谢谢!
尊敬的 Stephen:
感谢您的耐心。
您是否可以 复制在禁用中断后使用调试日志或时钟睡眠时遇到的问题? [报价]是的、我能够在最后重复这个问题
我已为此问题提交了内部 Jira 工单、并将 在收到开发团队的反馈时向您进行更新。
此致、
Tushar
尊敬的 Stephen:
感谢您的耐心。
我们从开发团队那里获得信息。 请查看以下回复。
这是预期行为。 DebugP_Log() 需要 UART 中断。
ClockP_SLEEP() 需要计时器中断。
希望上述信息对您有所帮助。
此致、
Tushar
谢谢您。
如何解决 HwIP 中断禁用问题? 我们是否有预期的发布日期?
尊敬的 Stephen:
如何修复 HwIP 中断禁用问题? 我们是否有预期的发布日期? [报价]该小组需要分析实施修补程序对整个系统的影响。 因为此 API 在 SDK 中的各种位置使用。
未计划在即将发布的 SDK 版本中修复 Hwip_disable () API。 但我们将更新有关 Hwip_disable () API 的文档或发行说明。
谢谢、此致、
Tushar
尊敬的 Tushar:
明白了。 我理解情况。 如果我们想禁用某个中断或所有中断、您有什么建议/替代方法吗?
(抱歉、尚未尝试搜索此内容)
谢谢!
您好、Stephen:
如果我们要禁用某个特定中断或所有中断? [报价]如果您想禁用特定中断、可以使用 hwiP_disableInt (intrNum) API 并将中断号作为参数传递。
要了解有关 Hwip API 的更多信息、请参阅 DPL_HWIP_API_guide。
此致、
Tushar