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/TM4C1294NCPDT:fdOpenSession / fdCloseSession

Guru**** 2486815 points
Other Parts Discussed in Thread: TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/735123/rtos-tm4c1294ncpdt-fdopensession-fdclosesession

器件型号:TM4C1294NCPDT

工具/软件:TI-RTOS

我有一个项目、它将具有多个任务、所有任务都在一组以太网句柄上工作。

在我看来、到目前为止、每个任务都必须分别使用 fdOpenSession/fdCloseSession 打开/关闭文件系统。

我的问题是:

我有一个任务为以太网通信创建文件句柄、如果成功完成、它将启动任务以"接收/发送/控制/监控"这些进程。

随着任务的执行、可以打开多个附加句柄以进行其他通信。

这些任务中的每一个都有一个唯一的文件处理系统、还是都指向某种"全局"系统?  我要求的原因是、一旦主任务打开句柄、所有同级任务似乎都无法使用相同的句柄接收/传输项目。

关于这些问题的文件似乎极为缺乏。

稍后-

David

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

    每个任务都必须执行 fdOpenSession。

    Todd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    每个任务是否都有一组唯一的句柄、或者句柄是否在所有任务之间都是全局的? 如果我在任务 A 中打开句柄、句柄 B 能否处理句柄?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    校正:

    每个任务是否都有一组唯一的句柄、或者句柄是否在所有任务之间都是全局的? 如果我在任务 A 中打开一个句柄、该句柄是否可以由任务 B 处理?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    每个任务都必须执行 fdOpenSession。 这会分配一个小内存并将其分配给任务的 env。 它不能在任务之间共享。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    也许我的问题不清楚、但我可能很密集...

    我现在尝试启动2个任务(只是初始子集、整个任务中有6个)。 "超级用户"和"接收"。 所有任务都执行其中的 fdOpenSession/fdCloseSession (它们永远不会到达 fdCloseSession 调用、因为它们永远不会结束)。

    "分频器"打开将要使用的主插座。 如果它成功地创建了它们(并且按照我所能说的那样操作)、它将启动"接收"任务、并进入其系统监控功能(成功)。
    'receive'应该从主套接字集获取命令、然后对其进行操作。
    我从 PC 打开 TCP 套接字并传输初始命令、但 fdSelect 似乎从未识别到已收到的内容。
    我跟踪了我的设置代码、以确保正确打开了内容(在我看来)、完成后、我有3个本应打开的句柄、没有错误。

    我向下看代码、从我的角度来看、fdSelect 很明显没有表明收到了什么。
    我想知道的是:"分频系数"任务中显示的控标是否与"接收"任务可以访问的控标相同?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

    据我所知、文件描述符在不同的任务之间共享。 实际上,这正是 TIRTOS 中 tcpEcho 示例所示的内容-它有一个创建套接字的'main'任务,然后将接受的套接字连接的文件描述符传递到调用 recv()和 send()的 tcpWorker 任务。 如果您尚未看到此示例、您可能希望查看一下。 可在 CCS 的 TI Resource Explorer 中 TM4C1294NCPDT 的"TI 网络示例"下找到该示例。

    我对 TIRTOS 2.16.1.14进行了快速测试,并通过在 tcpWorker()函数中添加 fdSelect()调用,修改了随附文件中的 tcpEcho 示例。 该程序从 fdSelect()发出,返回代码为1,能够到达 while 循环。 您可以尝试将其与您正在执行的操作进行比较、看看它是否能帮助您发现差异。

    此致、

    文森特

    e2e.ti.com/.../tcpEcho.c