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)中添加 CBUFF 用户缓冲区信息(sessionCfg.u.swCfg.userBufferInfo[1])

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/787440/ccs-awr1642boost-adding-cbuff-user-buffer-info-sessioncfg-u-swcfg-userbufferinfo-1-in-srr-demo-tidep-0092

器件型号:AWR1642BOOST
主题中讨论的其他器件:TIDEP-0092

工具/软件:Code Composer Studio

大家好、

在 SRR 演示中、当打开 LVDS 输出函数时、我可以使用 mmWave Studio SW 通过 LVDS 和 DCA1000将数据传输到我的 PC、但我只能使用1个 CBUFF 用户边法获取的最大数据是3FFF * 2 = 32766Bytes

我了解到、我可以添加用户缓冲区(sessionCfg.u.swCfg.userBufferInfo[1]和[2])、以便从最后几篇文章中获取更多数据

但是、在尝试实现这一点时、我遇到了一些 问题、我不确定 我的哪一步是错误的、我只是添加了另一个 gSwUserBuffer、下面是我的代码的一部分:

volatile uint16_t gSwUserBuffer1[2048]  

volatile uint16_t gSwUserBuffer2[2048]  

sessionCfg.u.swCfg.userBufferInfo[0].size = sizeof (gSwUserBuffer1)/2;

sessionCfg.u.swCfg.userBufferInfo[0].address=(UINT32_t*)和 gSwUserBuffer1[0];

sessionCfg.u.swCfg.userBufferInfo[1].size = sizeof (gSwUserBuffer2)/2;

sessionCfg.u.swCfg.userBufferInfo[1].address= (UINT32_t*)和 gSwUserBuffer2[0];

在  SRR 演示运行时、我可以通过 LVDS 使用1 gSwUserBuffer 获取数据、但在添加另 一个 gSwUserBuffer 时、我无法将任何 LVDS 数据输出到我的 PC

我想我错过了一些步骤、但我不确定、希望您能帮助我解决这个问题

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

    您能否与论坛分享您用于 RADAR Studio 的 LUA 脚本?

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

    您好、Cesar、

    我正在使用 Jitendra  下面的主题链接中提供的脚本:

    https://e2e.ti.com/support/sensors/f/1023/t/759979

    我可以通过 LVDS 捕获数据、方法是在运行项目时运行脚本

    是否有任何我做的错误或错过的任何步骤、原因是在使用1 个以上的 sessionCfg.u.swCfg.userBufferInfo 时无法获得任何 LVDS 输出

    请帮我解决这个问题、非常感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "在 SRR 演示运行时、我可以通过 LVDS 使用1 gSwUserBuffer 获取数据、但当我添加了另一个 gSwUserBuffer 时、我无法将任何 LVDS 数据输出到我的 PC "

    这是否意味着在您引用的代码中、您有信息[0]、它以前是 HSI 头文件、但被 SwUserBuffer 取代、并且索引[1]未填充(大小和地址0)、它起作用了? 如果这起作用、那么也填充的附加信息[1]不起作用的原因也不是很好。 但是、在上述陈述中、如果您的意思是 HSI +1用户缓冲器的情况正常工作、那么当您更换 HSI 标头时、您将需要在 DCA 捕获中使用 RAW 模式。 此外、您还可以使用两个用户缓冲区保留 HSI 标头、因为 CBUFF 最多允许3个用户缓冲区、但如果要执行此操作、则必须更改#define MMWDEMO_LVDS_STREAM_SW_SESS_MAX_EDMA_CHANNEL 将代码中的内容从2更改成了3、并在 MmwDemo_LVDSStream_EDMAInit 函数中提供了其他 EDMA 资源、即添加了表[2]条目[目前仅为表[0]和表[1])以及其他可用的 EDMA 资源。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Piyush_"]

    此外、您还可以使用两个用户缓冲区保留 HSI 标头、因为 CBUFF 最多允许3个用户缓冲区、但如果您希望这样做、 然后、您必须在代码中将#defineMMWDEMO_LVDS_STREAM_SW_SESS_MAX_EDMA_CHANNEL 从2更改为3、并在 MmwDemo_LVDSStream_EDMAInit 函数中配置其他 EDMA 资源、即添加 Table[2]条目[当前仅限表[0]和表[1])以及其他可用的 EDMA 资源。

    [/报价]

    您好、Piyush、

    我要修改的代码是 SRR 演示(TIDEP-0092)、与 OOB 演示不同、没有 HSI 标头和硬件会话配置、也没有#define MMWDEMO_LVDS_STREG_SW_SESS_MAX_EDMA_CHANNEL 和 MmwDemo_LVDSStream_EDMAInit 函数。

    在 MSS_main.c:sr_MSS_configureStreaming ()中,软件会话配置的初始代码与下图类似,LVDS 输出工作正常。

    我已确认是否添加了另一个信息、但将大小和地址设置为0、 通过 LVDS 输出的信息[0]的数据仍然正常

    sessionCfg.u.swCfg.userBufferInfo[1].size = 0;

    sessionCfg.u.swCfg.userBufferInfo[1].address= 0;

    但是、当我向 Info[1]提供如下图片所示的大小和地址时、  

    我的 PC 不会有任何 LVDS 输出、甚至在 Info[1]的大小和地址设置为0时、Info[0]中也不会有可输出的数据

    希望您能帮助我了解如何使用 sessionCfg.u.swCfg.userBufferInfo[1]和[2]

    非常感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我查看了 SRR 演示代码(通常我不支持它、只是为了检查与 LVDS 相关的代码、我不支持运行它/为您重新创建问题的级别)、 我看到分配器 SRR_MSS_EDMAAllocateCBUFFChannel 只能分配一个(第一个)通道、因此它不能支持2 (或3)个缓冲区、因此与 OOB 演示相比、分配器得到了简化。 当你创建 CBUFF 会话时、它会调用你提供的分配器来为每个缓冲区获取较新的通道资源、但是当前的分配器不会跟踪(比如使用索引)进行了多少次尝试、这样它会不断返回相同的通道、这会使它变得混乱。 如果您将 SRR 分配器更改为在尝试超出第一个分配时返回错误(负返回值)[第二次和后续调用分配器、该分配器(第二次) 将发生与 info[1]对应的情况、然后 CBUFF 会话创建将返回错误、您将在帖子中看到最后一条 System_printf 消息。 正如我说过的、SRR 分配器针对它尝试流式输出的一个缓冲器进行了简化。

    如果您想支持第二个缓冲区、则需要更改分配器、您可以参考 OOB 演示的分配器以获取参考、并尝试模仿第二个缓冲区所需的内容、那么它应该起作用。