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.

[参考译文] TMS320C6678:##39;dataBuffer##39的内存地址;在超链接示例中、代码存在依赖关系问题。

Guru**** 2475415 points
Other Parts Discussed in Thread: MATHLIB, TMS320C6678

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1457852/tms320c6678-memory-address-of-databuffer-in-hyperlink-example-code-has-a-dependency-problem

器件型号:TMS320C6678
主题中讨论的其他器件:MATHLIB

工具与软件:

大家好、我有一个定制板、它具有两个通过超链接连接的 DSP (C6672和 c6678)。

我已使用 pdk_c667x_2_0_16中提供的示例代码成功测试超链接接口。

但当我在示例代码中尝试修改"dataBuffer"的存储器地址时、会出现我无法解释的情况:

如果我将"dataBuffer"放置在地址0xD00B_AA00上、则超链接正常工作。 (cpuTokenExchange)

但如果我将"dataBuffer"放置在地址0xD000_0000上、超链接会失败(单次写入失败)。

(除了 dataBuffer 的 data_section、我未修改超链接示例代码。)

您能解释一下原因吗?

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

    J. H、

    我要研究一下这个问题、看看谁回答这个问题是正确的。

    此空间可能超出了存储器支持的范围吗?

    在如何配置存储器范围的设置部分可以找到此信息。

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

    感谢您的观看。 我认为这是一个有关超链接地址转换(存储器映射)的简单问题。

    是的、我手动为支持存储器(DDR3)的超链接(0xD000_0000 ~ 0xDFFF_FFFF)设置存储器部分。

    然后、我使用#pragma DATA_SECTION 将"dataBuffer"放置到此存储器部分。

    如果我从"0xD00B_AA00"中设置存储器部分、则超链接正常工作。

    但将存储器设置为"0xD000_0000"、超链接失败。

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

    您好、您能告诉我们正在使用哪个 SDK 软件包(其中包含  pdk_c667x_2_0_16)、以便我们进行交叉检查吗?

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

    DSP1 (c6672)和 DSP2 (c6678)的通用设置

    -编译器版本:TI v8.3.5

    XDCtools 版本: 3.60.2.34_CORE

    c667x pdk 2.0.16.

    SYS/BIOS 6.83.0.18

    请注意、DSP2还使用

    c667x OpenMP 2.6.3.00

    DSPLIB C66x 3.4.0.4.

    - MATHLIB c66x 3.1.2.4.

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

    感谢您提供详细信息;但是、我们的原始问题尚未得到解答。 此处使用的是什么 SDK 软件包和版本?

    是此处列出的其中之一--> https://www.ti.com/product/TMS320C6678#software-development 。 如果是、您可以指定哪一个?

    我们问这个问题的原因-->由于这些设备/平台是旧的、我们需要检查您所引用的 SDK 并对您的查询进行注释。

    谢谢。

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

    哦、抱歉、我误解了。

    SDK 软件包和版本:processor_sdk_rtos_c667x_6_03_00_106。

    我认为此问题与超链接示例代码中的寄存器设置有关。 (TX - Rx 地址映射)

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

    我们可以看到 hyberbus 和 Hyperflash、但我们看不到 Hyperflash。 那么、您能告诉我们您所参考的示例吗?

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

    我使用的是超链接外设、而不是 Hyperbus 或 Hyperflash。

    我甚至不知道 Hyperbus 和 Hyperflash 是什么。 我认为 TMS320C6678 DSP 甚至不支持它。

    我已将 C:\ti\pdk_c667x_2_0_16\packages\ti\drv\hyplnk\example 中的以下文件复制到我的定制工程中。

    (hyplnkIsr.h、hyplnkLLDCfg.h、hyplnkLLDIFace.h、hyplnkPatCfg.h、hyplnkResource.h /

    hyplnkExample.c、hyplnkIsr.c、hyplnkLLDIFace.c、hyplnkResource.c)

    然后、我对这些行添加了注释、以便可以使用两个 DSP 测试"hyplnkExampleCPUTokenExchange"。

    -#define hyplnk_example_loopback

    -#include ".."/../InfraDMA/hyplnkInfraDMA.h

    -#include ".."/../EDMA/hyplnkEDMA.h

    我修改了"dataBuffer"的 DATA_SECTION、以便可以移动存储器分配"0xD000_0000"或"0xD00B_AA00"。

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

    如果我修改地址转换的参数、结果是相同的。

    例如、我更改了以下参数:

    TXAddrOvly.txIgnMask (10 -> 11)

    RXAddrSel.rxSegSel (6 -> 12)

    RXSegVal.rxLenVal (21 -> 27)

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

    感谢您为我们提供要查看的正确示例。 我们正在了解您在上面所说的内容。 但是、我们仍然有一些问题:

    -您的定制项目使用的.cfg 文件是什么?  

    -为什么您最初为 dataBuffer 选择0xD00B_AA00 ,为什么您将其更改为0xD000_0000 ?

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

    1.我还制作了一个定制的.cfg 文件。 为实现超链接、我添加了以下行:

    - var hlink = xdc.useModule('ti.drv.hyplnk.Settings');

    - Program.sectMap[".hyplnk_buffer"]="DDR3_HYPLNK";//"DDR3_HYPLNK"也在我的平台包中定义。 我修改了平台包、以移动 hyplnk_buffer 的内存分配。

    2.我第一次在没有任何修改的情况下测试了这个超链接示例代码并且运行的很好。 在这种情况下、之所以在0x8xxxB_aa00中分配"dataBuffer"、是因为原始示例代码具有#pragma DATA_SECTION (dataBuffer、'.bss:hyplnkData")。 然后我想为"dataBuffer"定义特定的存储器部分、以便 DSP1和 DSP2可以共享透明超链接远程存储器(即0xD000_0000、请注意每个 DSP1和 DSP2都有自己的独立 DDR3存储器)、但失败。 为了修复我尝试了为0xD00B_AA00分配的内存问题、该问题成功了。 我想理解为什么会发生这种情况,因为我可以告诉我应该缺少一些东西。

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

    感谢您的参与。 提供所有细节总是更好、这样我们就不必来回重复了。  最好是可以共享完整的.cfg 文件供我们审阅、并确保没有其他明显的更改会与 0xD000_0000的用法相冲突。

    谢谢!

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

    我希望我可以分享完整的.cfg flie 或完整的 CCS 项目及平台包、以便简化工作、但遗憾的是、由于我公司的安全策略、它受到限制。

    TI 专家在此类消息中留下深刻印象。

    1.您需要修改超链接示例代码(例如超链接远程寄存器设置)以启用0xD000_0000的使用。

    2. 通过对参考设计(例如 EVM 板)进行测试来重现结果、0xD000_0000也应正常工作、因此您需要查看.cfg 文件(或平台包或其他文件)。

    或者、如果您可以指定我应该在.cfg 文件中找到哪些设置、我可以共享它(因为共享原始代码受到限制。)

    但我更持怀疑态度的是、什么样的.cfg 设置可以访问0xD00B_AA00、而不是0xD000_0000。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我期待 TI 专家发表此类消息。

    只是想在这里设置预期。  这是一个非常旧的 SDK、因此我们只能支持 SDK 提供的示例代码。 如果您对代码进行了修改、但出现了问题、我们希望您向我们提供完整的信息、以便为您提供建议/支持。

    谢谢。