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.

[参考译文] CC1314R10:驱动程序开销 nortos / FreeRTOS

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1524765/cc1314r10-driver-overhead-nortos-freertos

器件型号:CC1314R10
主题:SysConfig 中讨论的其他器件

工具/软件:

当将应用程序从 nortos 移植到 FreeRTOS 时、如果没有 RTOS、数据包间隙会从大约 200us 急剧变化

使用 FreeRTOS 时约 500us、这具有互操作性效应。

该测试使用了分段以太网数据包、其中段大小为 253 字节、并且在传输时传输

数据包(如逻辑分析仪以及暴露于 GPIO 的 LNA、TX 和 RX 引脚上所示)的持续时间相同

IPG 随着 nortos 增加到大小的 3 倍。 这对我来说似乎很大。

Gullik

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

    尊敬的 Gullik:

    感谢您联系我们。

    您能解释一下数据包是如何传输的吗?
    您能否分享一个关于 NoRTOS 和 FreeRTOS 项目的极简示例?

    此致、
    Theo

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

    尊敬的 Theo:

    数据包被放入分段程序中、该分段程序一次切出 N * 253 字节、+剩余的分段

    基于数据包长度。 一个完整的 1500 字节以太网数据包被分成 6 个段、

    5 * 253 + 1 * 235 字节。 所有段都以 1 字节中的数据包类型和数字作为前缀。

    尾随 21 字节的数据包附加了 ACK/NAK 信息+节点 ID +一些其他填充。

    对讲机从接收切换到发送(使用原始 rfUARTbridge 代码、所有 8 个段

    然后传输、然后切换回接收。  

    1 切换到 TX

    2 直到以太网数据包完成斩波段并发送

    3 个发送跟踪数据包

    4 切换回 RX

    我现在使用将无线电映射到 GPIO 和映射到 3 个 GPIO 引脚来监控过程、

    视频的不同部分。

    通道 0 RX/TX(FYI 使用 SysConfig 无法反转此信号)  

    Cnannel 1pA 打开

    通道 2 TX 开启

    通道 3 中断引脚、来自以太网、边沿触发(说明在 GPIO 驱动程序中显示为中断已处理、但显示为中断

    在 eth 服务之前不会复位。

    通道 4 由中断例程触发、通过任务激活清除。 (显示相对低的延迟,40us)

    数据包大小 1.8 ms/253 字节

    使用 FreeRTOS 时 IPG 0.681mS、而不是 0.219mS、带 nortos

    Gullik

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

    可能情况如下:

    进来有无线电数据包

    回调通知任务

    标签:

    任务获取数据包、对其进行处理并返回睡眠状态。

    由于我们正在等待、因此会在中安排优先级较低的任务。

    进来有一个新的数据包

    回调会通知导致重新安排的任务

    等等 转到标签:

    这意味着我们将在两次回调之间重新安排两次。

    两个结节时间为 200 us /重新安排+*实数* IPG 可能总计 681 us??

    现在、如何证明/放弃此假设...

    如果是真的、如何解决这个问题... FreeRTOS 似乎很昂贵

    叹气...

    Gullik

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

    尊敬的 Gullik:

    我看到了两种方法来获取真实的事件日志。

    您可以向所有任务添加 GPIO 切换以跟踪调用这些任务的顺序、也可以使用 TI Logger 进行跟踪: https://dev.ti.com/tirex/explore/node?node=A__AUtBCHw9KYI99xItuPjn4w__com.ti.SIMPLELINK_ACADEMY_CC13XX_CC26XX_SDK__AfkT0vQ__LATEST&placeholder=true

    这样、您就可以从驱动程序中获取 debug 语句、并定义其他自定义调试消息以跟踪程序。

    我认为、当您只在 ISR 中设置事件并直接响应中断时、检查是否有更好的行为是值得的。

    此致、
    Theo

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

    谢谢 Theo、

    是的、我肯定需要更好的工具、并将调查这方面的情况。 我还需要更好的 FreeRTOS 体验、 它似乎比我以前使用过的操作系统更“打包“。我有点怀疑进行任务切换所需的时间、但我认为这是“精益和平均“。 FreeRTOS 的选择是减少不同功能之间的“阻塞“活动和干扰、例如 SPI 驱动的以太网(!) 具有多个 INT 源。  

    无论如何、由于存在变通办法、应用程序现在可以接受地运行...

    我有一种日志机制、它使用一种专有协议将数据放入以太网数据包中、这样传输的时间很便宜、而且日志发生在另一台计算机上。

    我将充分了解 TI 记录器。

    谢谢

    Gullik