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.

[参考译文] CCS/AWR1642BOOST:在 SRR 演示(TIDEP-0092)中修改 gSwUserBuffer 的大小

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/786483/ccs-awr1642boost-modify-the-size-of-gswuserbuffer-in-srr-demo-tidep-0092

器件型号:AWR1642BOOST
主题中讨论的其他器件:DCA1000EVM

工具/软件:Code Composer Studio

大家好、

我已经修改了 SRR 代码、并且能够在运行演示时通过 LVDS 和 DCA1000将一些数据输出到我的 PC

1.我的问题是 MSS_main.c 中的数组 gSwUserBuffer 的大小限制是多少?

我可以将数组的大小从 volatile uint16_t gSwUserBuffer[2048]更改为 volatile uint16_t gSwUserBuffer[4096]、这样可以得到所需的数据量

但是,当我将大小更改为 volatile uint16_t gSwUserBuffer[8192]时,我甚至无法运行演示,打开 GUI 将会出现一个错误,表示无法打开 COM 端口,而 COM 端口与阵列大小2048和4096正常

是否有任何方法可以将 阵列设置为 gSwUserBuffer[8192]?

第二个问题是如何计算 sizeof (gSwUserBuffer)?

在 MSS_main.c:sr_MSS_configureStreaming ()中, sessionCfg.u.swCfg.userBufferInfo[0].size = sizeof (gSwUserBuffer)/2;

while volatile uint16_t gSwUserBuffer[2048]  

在我的概念中、数组大小应为2048 * 2字节= 4096字节

但是 、当 sessionCfg.u.swCfg.userBufferInfo[0].size 设置为 sizeof (gSwUserBuffer)/2时、我将获得大小为每帧4096字节的数据、不应该是4096/2 = 2048字节?

我遇到了上述问题、因为我希望每帧发送32KB 的数据

 由于 gSwUserBuffer[2048]/2的大小为4096,因此 gSwUserBuffer[8192]的大小将为32KB,它将能够输出我需要的数据量

或者、我是否有任何方法可以尝试输出每个邮箱读取的32KB 数据?

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

    你(们)好

    您能否与我们分享您在 PC 上使用什么软件来捕获 LVDS 数据?

    谢谢你

    Cesar

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

    注意:我在下面的注释基于 OOB 演示、我假设 OOB 演示的 LVDS 部分是在 SRR 演示中进行的。 [我不正式支持 SRR 演示]

    1、2:CBUFF 单元决定最大大小、即0x3FFF CBUFF 单元。 1个 cbuff 单元= 2个字节。 因此、您可以传输的最大用户缓冲区大小(包括标头大小)为32766字节。 除以2是将字节(sizeof ())转换为 CBUFF 单元。 uint16_t x[8192]的大小将是16384字节或8192个 CBUFF 单元、低于限制、因此不会出现任何问题、我们没有自己尝试过这么大的大小、因此您必须花一些时间来调试为什么会看到 COM 端口出现故障。 COM 端口故障毫无意义、也许正在生成的大型缓冲区会由于存储器映射移位而暴露一些问题[这是此时的纯粹推测]。 您表示打算发送超过 CBUFF 限制的32KB = 32768字节[uint16_t x[16384])、因此如果您尝试发送、CBUFF 驱动程序将会显示错误[请参阅 cbuff 驱动程序中的代码 CBUF_validateBufferCfg]。 假设应用程序代码发生错误(即不忽略它)、您将看到应用程序报告的违规。

    如果您希望发送超过 CBUFF 限制、您可以 a)添加另一个用户缓冲区[驱动程序中支持的最大用户缓冲区数量为3个]、并在一个用户缓冲区中提供一半的缓冲区、在另一个缓冲区中提供一半的缓冲区[假设每一半都遵守限制]或 b) 您可以终止并重新创建软件会话(在每个帧中)、以部分发送大缓冲区。 我们自己没有尝试过任何这些、因此我们无法肯定您不会遇到任何问题、但您可以尝试一下。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Cesar、
    我将 DCA1000EVM 与 mmwavestudio 配合使用、并在 SRR 演示运行时运行 lua 脚本以捕获 LVDS 数据
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Piyush_"]

    您表示打算发送超过 CBUFF 限制的32KB = 32768字节[uint16_t x[16384])、因此如果您尝试发送、CBUFF 驱动程序将会显示错误[请参阅 cbuff 驱动程序中的代码 CBUF_validateBufferCfg]。 假设应用程序代码发生错误(即不忽略它)、您将看到应用程序报告的违规。

    [/报价]

    您好、Piyush、

    我现在了解了为什么缓冲区信息的大小是 sizeof (gSwUserBuffer)的一半的含义


    在使用 sessionCfg.u.swCfg.userBufferInfo[0].size = sizeof (gSwUserBuffer)/2确认 uint16_t gSwUserBuffer[0x3FFF]之后、它正常工作
    当 uint16_t gSwUserBuffer[0x4000]的 sessionCfg.u.swCfg.userBufferInfo[0].size = sizeof (gSwUserBuffer)/2时;无法找到我的 UART 的 COM 端口。


    那么、让我确认一下、我可以按照 MSS_main.c:SRR_MSS_configureStreaming ()传输的 CBUFF 数据单元的最大数量为0x3FFF * 3、等于0x3FFF * 3 * 2Bytes、但我必须使用 sessionCfg.u.swCfg.userBufferInfo[0],sessionCfg.u.swCfg.userBufferInfo[1]和 sessionCfg.u.swCfg.userBufferInfo[2]以及每个最大 CBUFF 数据单元0x3FFFF
    我对上述理解是否正确?

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

    您的理解是正确的。