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.

[参考译文] RTOS/TDA2E:关于调用 NC_NetStop 的疑问

Guru**** 2595805 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/586299/rtos-tda2e-doubt-regarding-calling-nc_netstop

器件型号:TDA2E

工具/软件:TI-RTOS

您好!

我们使用 XGCONF 工具配置 NDK、为我们在 tda2xx 上运行的应用提供网络功能。

我对调用 NC_NetStop 有疑问。

 在生成的.c 文件中有一个函数 ti_ndk_config_Global_stackThread、该函数调用了 nc_NetStart  

和出口处  

退出:
NC_SystemClose ();

调用 NC_SystemClose。我有疑问:

1. Will NC_SystemClose 关闭网络堆栈、或者我们必须在 netCloseHook 函数中调用 NC_NetStop 以正常关闭网络堆栈。

如果我们必须手动调用 NC_NetStop、那么 NC_SystemClose 的功能是什么。

如果我们不在 netCloseHook 中调用 NC_NetStop、则会导致长期未定义的行为、即当我们运行应用程序将近一周时、a15内核被复位或挂起。

此致

梅扬克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    与上述问题有关的另一个疑问:

    在 e2e 帖子中、有一个这样的帖子提到了:
    NC_NetStop()只需将全局标志设置为 true。 此标志在 while 循环的网络调度程序(在任务中运行)中进行检查。 在网络调度程序任务再次运行之前、不会检查该标志。 由于您正在调用 BIOS_exit、这种情况永远不会发生-网络调度程序将永远不会再次运行。

    以上内容是否意味着我们应该再次运行 netscheduler 任务以影响 nc_NetStop.以下函数是否与 BIOS_start/BIOS_exit 有关:

    xdc_runtime_System_flush ();

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

    您好、Mayank、

    [引用 user="Mayank Agarwal"]

    1. Will NC_SystemClose 关闭网络堆栈、或者我们必须在 netCloseHook 函数中调用 NC_NetStop 以正常关闭网络堆栈。

    [/报价]

    要关闭网络堆栈,只需从应用程序调用 NC_NetStop()即可。  NC_SystemClose ()和 netCloseHook 函数作为关断过程的一部分被调用。

    [引用 user="Mayank Agarwal"]

    如果我们必须手动调用 NC_NetStop、那么 NC_SystemClose 的功能是什么。

    [/报价]

    NC_SystemClose ()只是执行一些额外的堆栈清理。  您不应直接调用此函数、因为它是关断过程的一部分。

    [引用 user="Mayank Agarwal"]

    如果我们不在 netCloseHook 中调用 NC_NetStop、则会导致长期未定义的行为、即当我们运行应用程序将近一周时、a15内核被复位或挂起。

    [/报价]

    应从应用程序调用 NC_NetStop()以关闭栈;它不应位于 netCloseHook 中。  netCloseHook 允许您添加将在堆栈关闭时执行的函数。

    此致、

    伊曼纽尔

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

    您好、Mayank、

    [引述 user="Mayank Agarwal">与上述问题有关的另一个疑问:
    以上内容是否意味着我们应该再次运行 netscheduler 任务以影响 nc_NetStop.以下函数是否与 BIOS_start/BIOS_exit 有关:

    xdc_runtime_System_flush ();

    [/报价]

    BIOS_exit()终止内核和所有调度活动。  然后、处理器将在断点处停止或永久旋转(具体取决于您在*。cfg 文件中配置的内容)。  调用此函数后、所有操作系统对象(任务、swis、hwis 等)都不相关、因为内核不再运行。  要使内核再次运行、您需要重置处理器并重新启动应用。

    NC_NetStop() API 设置一个标志,该标志将通知堆栈需要自行关闭。  这意味着网络任务需要再次运行、以便能够自行关闭和清理。  如果您在之后立即调用 ns_NetStop()和 BIOS_exit(),则网络任务可能不会运行且不会清理;但这是不相关的,因为 BIOS_exit()将终止内核。

    XDC_runtime_System_flush()只能确保所有系统内容被清空(可能是在控制台窗口中)。

    希望这对您有所帮助、

    伊曼纽尔