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/PROCESSOR-SDK-AM335X:Starteware SPI 驱动程序集成

Guru**** 2943430 points

Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/664504/rtos-processor-sdk-am335x-starteware-spi-driver-integration

器件型号:PROCESSOR-SDK-AM335X
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

您好!

实际上、我使用的是具有 NDK 和 SPI 的 SYS BIOS。 我实现了 TCP 服务器套接字和 SPI 通信、但 MCSPI 驱动程序性能不佳、因为它会在每次事务后关闭并重新打开。 我的性能要求是我需要连续快速地接收 SPI 数据。 为了满足性能要求、我使用 Starterware 示例在每次传输后都不关闭连接的情况下实现 DMA SPI。 现在、我已经对 BareMetal 进行了所需的性能编程、但无法将其集成到 SYS BIOS 系统中。 我甚至使用 starteware lwip httpserve 示例尝试了另一个选项来设置不带 SYSBIOS 的 TCP 服务器套接字。 问题是、我无法找到如何将 LWIP 配置为与 ti cpsw 接口一起工作的服务器套接字。 根据其他论坛条目、CPSW Starteware 示例不是由 LWIP 社区有意实现的、而是与 LWIP 配合使用。 您是否有关于如何在不使用 EDMA3资源管理器等开销的情况下将裸机编程的 SPI DMA 驱动程序集成到 SYSBIOS RTOS 系统中的提示? 集成基于 starteware 的驱动程序时执行失败的一个示例是尝试访问 EDMA 配置的寄存器。

代码提取:

   /*   非空闲模式下的 DMA   */
   HWREG (0x49800010)= 0x00000028;
   HWREG (0x49900010)= 0x00000028;
   HWREG (0x49a00010)= 0x00000028;

系统设置:

GCC:GCC-ARM-NONE - eabi-6-2017-Q1-update
BIOS:BIOS_6_52_00_12
NDK:NDK_2_26_00_08
PDK:pdk_am335x_1_0_9
PSDK:PROCESSOR_SDK_RTOS_AM335x_4_02_00_09
XDC:xdctools_3_50_03_33_core
Sitara:Sitara_1_02_00_00
EDMA:EDMA3_LLD_2_12_05_30B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    David、

    您使用的是哪款 EVM? 它是 BeagleBone Black 吗?

    我建议使用位于 PDK 中以下路径的 PDK 示例开发您的应用。

    C:\ti\pdk_am335x_1_0_9\packages\MyExampleProjects\MyExampleProjects

    有一些基于 RTOS 的 NIMU (TCP/IP)示例以及 SPI 示例(我认为示例中有一个 DMA 标志选项)。 Starterware 和 LWIP 示例不再受支持、因此这将是您的最佳途径。 如果您需要有关生成 MyExampleProjects,目录的帮助,请参阅此视频 https://training.ti.com/processor-sdk-device-drivers-setup-test 及其在 http://processors.wiki.ti.com/index.php/Rebuilding_The_PDK 上的文档 

    您可能还需要查看位于 C:\ti\test_install\processor_sdk_rtos_AM335x_4_02_00_09\demos\rtos_template_app 的 RTOS 示例模板

    有关模板的说明,请参阅该位置的 readme.txt。

    Lali

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

    您好!

    我已经使用了这些 PDK 示例、但 SPI 的性能相当差、因为实现的驱动程序会在每次事务后始终打开和关闭通信。 我甚至已经使用了 DMA 和 FIFO。 为了消除所有开销、我使用 Starterware 实现了 SPI 应用、这非常好。 我的问题是它的集成。 我知道您向我发送的有关 PDK 的所有链接、但该系统不符合我的性能需求。 顺便说一下、在我将 NDK 从2.25.11更新到2.26.0.08之后、TCP/UDP 套接字服务器示例不再起作用。 我可以执行代码、我觉得软件打开了 TCP 服务器套接字、但系统不再对我的计算机的 IP ping 做出反应。 自从更新后、NDK 的接收中断似乎不再起作用。 有什么想法吗?

    1.我确实使用 BeagleBone Black。

    2018年2月16日更新:关于 PDK RTOS NDK 示例->我重新配置了工程以再次使用版本2.25.11,但系统仍然无法正常工作。 除此之外,我还可以看到,当我 ping 时,寄存器 CPSW_STATes->broadcast_RX_frames 正在增加。 我似乎系统正在接收数据、但 PRU 不再工作。 我是否需要以某种方式重置 PRU 或其他操作?

    2018年2月19日更新:我刚刚尝试了另一个 BeagleBone 板、可以看到以太网正在重新工作。 当我使用"Nimu_BASICEXAMPLE_bbbAM335x_armExampleProject"进行测试时。 我是否可以改写 PRU 固件或 PRU 是否未在该 PDK 示例中使用? 还是必须是硬件问题?



    此致、

    David

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

    2.26.0.08是 PRSDK 4.2中的默认 NDK 构建版本、这不应是您之前测试中 TCP/UDP 套接字服务器示例失败的根本原因。 NIMU_BASICEXAMPLE_bbbAM335x_armExampleproject 是基于 CPSW 的以太网基本示例。 该示例中未使用 PRU。

    您可能还想尝试 PDK 中的 Nimu_FtpExample_bbbAM335x_armExampleproject 来缩小两个 BeagleBone 板上的 TCP 服务器套接字问题。

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

    您好、Garret、

    现在、即使是这样认为的缺陷、Beagle Bone Black 也能再次发挥作用。 我无法解释它现在工作的原因、我没有更改软件。 也许这与我使用的定制 Cape 有关系、但目前这对我没有关系。 我有另一个问题、因为以太网对于我的应用来说似乎太慢了。 对于使用 PRU 的 TCP/UDP 服务器套接字、是否有任何 BeagleBone 示例? 我只找到"ICSS_EMAC_BasicExample_icev2AM335x_wSoCFile_armTestproject"、但我不知道它是否是实现套接字服务器的最佳基础。 是否有提示? )

    update_1:我发现 UDP 服务器套接字的问题不是传输速度。 它只是在短时间(10到2分钟、具体取决于数据包吞吐量)后不再工作。 我在 CPSW 寄存器中看不到任何问题、但在发送数据包后停止工作、即使 ping BeagleBone 也不起作用。

    update_2:我刚刚看到我遇到 ENOBUFS 错误、这意味着我的 PBM 缓冲区已满。 我已经增加了它、但它只是增加了错误发生之前的时间。 我是否需要手动复位缓冲器、或者如何避免此错误? 还是因为我发送数据的速度太快? 如果我发送数据的速度太快、如何提升性能?

    update_3:我发现 ENOBUFS 错误始终在大约一分钟后发生、与我每秒发送的数据包数量无关。 因此、提高性能不会使我的系统正常工作。 这似乎是另一个问题。 有什么想法吗?

    此致、
    David

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

    您可以参阅 NIMU_ICSS_BasicExample_icev2AM335x_wSoCLib_armExampleProject、以使用 PRU 在 Beagle Bone Black 上实现套接字服务器。

    是否根据 NIMU_BASICEXAMPLE_bbbAM335x_armExampleproject 在 UDP 套接字项目上报告了 ENOBUFS 错误?

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

    您好、Garret、

    我将尝试将 NIMU_ICSS icev2示例移植到 BeagleBone
    2.在您提到的示例上发生 ENOBUFS 错误。 我使用 UDP 和 TCP 服务器套接字进行了试用。 大约一分钟后、这两种协议都会导致相同的问题。

    更新_1:

    关于1. 我无法让 BeagleBone 使用该 icev2示例。

    关于2. 从 BeagleBone 发送数据时、每隔30秒从计算机执行一次 ping 操作时、以太网不会崩溃。 一旦我停止 ping 系统、在30到40秒后会抛出 ENOBUFS 错误。 在仅传输数据时、缓冲器是否无法通过某种方式复位? 如果是、您有没有为我解决问题的方法? 我真的不想一直 ping 系统以使其保持运行:)

    update_2:执行 ping 操作时、我只能延长系统工作的时间。 我可以在 Wireshark 分析中看到、一旦 BeagleBone 板执行 ARP 请求并从我的计算机进行响应、我的系统就无法再传输数据、我就会得到 ENOBUFS 错误。 有什么想法吗?

    update_3:当我增加 ARP 超时(NDK 的全局结构:_ipcfg->RtKeepaliveTime)时,我可以看到我正在进行的连续数据传输与用于刷新 ARP 表的 Beagle Bone ARP 请求绝对相关。 我现在尝试在第一次完成 ARP 请求后禁用它。


    此致、
    David

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

    您能否尝试增加 pktNumFrameBuf、例如384以查看其行为是否不同? 帧缓冲区的默认数量为192。

    您可以在.cfg 文件中对其进行设置:global.pktNumFrameBufs=384

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

    我已经将其设置为384。 进一步增大该电压是否合理? 我将 ARP KeepAliveTime "_ipcfg.RtKeepaliveTime = 4294967290"更改为最大值、现在我的系统正在工作大约一小时30分钟。 之后、我再也无法对电路板执行 Ping 操作。 遗憾的是、我的调试器在连接这么长时间时有时会出现问题、因此我无法检查问题的根本原因。 我使用的是 XDC200、错误消息如下所示。 如果与分析相关、我的以太网数据吞吐量约为12Mbit/s 我看到 BeagleBone Black 能够实现100Mbit/s 的速度

    错误:
    CortxA8:停止目标 CPU 时出现故障:(错误-2064 @ 0x0)无法读取器件状态。 重置设备、然后重试此操作。 如果错误仍然存在、请确认配置、对电路板进行下电上电和/或尝试更可靠的 JTAG 设置(例如、较低的 TCLK)。 (仿真包7.0.100.1)
    CortxA8:错误:(错误-1170 @ 0x0)无法访问 DAP。 重置设备、然后重试此操作。 如果错误仍然存在、请确认配置、对电路板进行下电上电和/或尝试更可靠的 JTAG 设置(例如、较低的 TCLK)。 (仿真包7.0.100.1)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有关 arp 请求问题的更多想法?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    David、

    您是否可以在此处上传项目、以便我尝试重现 BBB 问题? EMAC 驱动程序是 AM335x 板的常见问题、我们在 ICEv2上没有发现问题。

    此致、
    Garrett