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.

[参考译文] AM2634:UART 阻止 SDK 10.1不能正常工作

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1486822/am2634-uart-blocking-sdk-10-1-not-working-propperly

器件型号:AM2634

工具与软件:

你(们)好

sdk10.1中的 UART 驱动程序无法与 XMODEM (来自驱动程序/引导加载程序)正常运行、它在 sdk9.2版本中正常运行。 UART 处于阻塞模式。

发生的情况是 XMODEM 经常丢失字节、所以它会进入重试、在大多数情况下、我无法通过它发送30万个固件。

是否有人遇到相同的问题? 有适合它的解决方案吗?

进行了交叉检查:将10.1 UART 驱动程序移到了 SDK9.2 (抽象层兼容)、并且错误与驱动程序一起移动、因此它与驱动程序相关- 我已经看到它在之前使用的 SDK 9.2.0.56中进行了大量修改。

此致、

Barna Csenteri.

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

    尊敬的 Barna:

    我已邀请我们的软件专家、深入了解 SDK 10.1和9.2中 UART 驱动程序之间的差异。 请期待明天回复。

    此致、

    Brennan

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

    你(们)好

    好的。 我正在等待反馈。

    我还想知道如何正确使用 UART:我需要的是一个具有给定大小(例如用于容纳128+报头 XMODEM 帧的150)的中间缓冲区、它通过中断来填充最大速度。 UART 外设 FIFO 是64字节、因此需要以足够快的速度获取该数据以避免接收时溢出、并且如果需要、可以使用速度较慢的进程读取数据。 由于 XMODEM 采用握手、因此1帧以更高的速度发送、但在握手完成之前没有其他帧。  

    我确实检查了旧版9.2.0.56驱动程序、且中断/阻塞版本没有执行此类中间缓冲器、确实直接使用了 UART 外设的 FIFO。  

      uart_v0.c/uart_READ
      如果(UART_CONFIG_MODE_INTERRUPT == PRMS->transferMode)
        UART_LLD_readIntr
        UART_readInterrupt
        UART_ReadData
        UART_getChar
         HW_RD_REG32 (baseAddr + UART_LCR);
         …

    我不确定10.1版本、因为 到目前为止我无法确保其正常工作、但这可能也是10.2驱动程序的问题- XMODEM 帧长于 UART FIFO 的64字节。

    然而、如果进行 XMODEM 接收的过程足够快、那么它的确可以使用9.2驱动器、而在10.2驱动器上则不会在任何地方丢失数据。

    此致、
    Barna Csenteri.