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.

[参考译文] TMDSEVM6657:C6657 DSP#39;s EMAC 不工作、除非它处于 EMAC 引导模式

Guru**** 2553450 points
Other Parts Discussed in Thread: TMS320C6657

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/717191/tmdsevm6657-c6657-dsp-s-emac-not-working-unless-it-s-in-emac-boot-mode

器件型号:TMDSEVM6657
主题中讨论的其他器件:TMS320C6657

如果 C6657从 EMAC 引导、则我的软件可以重新配置 EMAC、以便通过 IP/Ethernet 与外部世界进行通信。  

但是、如果 DSP 从非 EMAC 模式(例如 NOR 闪存或非引导模式)引导、则软件无法重新配置 EMAC。 实际上、SW 甚至无法访问从0x02c08000开始的 EMAC 寄存器存储器位置。 SW 甚至无法读取各种版本 ID 寄存器。  

由于我在 EVM 电路板上工作、该电路板上有一个可控制启动序列的 FPGA、因此很自然地假设 FPGA 是问题所在(例如将 EMAC 保持在复位状态等)。 但是、没有这样的东西、并且无论外部 FPGA 做什么、它都不应限制 DSP SW 访问内部片上存储器位置(EMAC 寄存器所在的位置)。  

C6657处理器是否具有"隐藏"的未披露功能(或缺陷):仅当从 EMAC 引导处理器时才能访问 EMAC? 这听起来是不合逻辑的,但这似乎是我在处理这些问题的令人沮丧的日子里能够得出的唯一结论。 相信我、我尝试了各种可能的解决方案。 全部无效。  

如果有人能就此问题发出一些指示灯、我将不胜感激:除非 EMAC 处于 EMAC 引导模式、否则无法访问 EMAC。 所有其他外设工作正常、但无法访问 EMAC!

Dai 仁寿

Sage Instruments

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

    [引用]但是、如果 DSP 从非 EMAC 模式(例如 NOR 闪存或非引导模式)引导、则软件无法重新配置 EMAC。 实际上、SW 甚至无法访问从0x02c08000开始的 EMAC 寄存器存储器位置。 SW 甚至无法读取各种版本 ID 寄存器。 [/报价]

    您的应用程序似乎未正确执行 EMAC 初始化。 查看 Processor SDK RTOS EMAC 示例、了解应如何初始化以太网子系统。 您可以从此处下载 Processor SDK RTOS:
    www.ti.com/.../processor-sdk-c665x

    请查看以下 wiki 以了解相关文档:
    software-dl.ti.com/.../Device_Drivers.html
    processors.wiki.ti.com/.../Processor_SDK_RTOS_NDK

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

    Yordan:

    感谢您的回答。 让我提供有关我在 EVM 板上看到的问题的更多详细信息:  

    在我的软件可以执行任何 EMAC 初始化之前、我想检查软件是否正在寻址正确的寄存器(存储器位置)。 我让 SW 读取一些具有已知值的 ID 寄存器(例如 TXIDVER)。 令我非常惊讶的是、只有 EVM 板处于 EMAC 引导模式(引导模式[2:0]= 0b010)时、ID 值才是正确的。 当它被置于任何其他引导模式中时、软件无法正确读取 ID 寄存器、就好像有东西阻止内存或数据访问分配给 EMAC 的内存块一样(所有其他外设工作正常)。  

    因此、我们不讨论我的 EMAC 初始化是正确还是正确。 问题是我的软件甚至无法访问存储器映射寄存器的 EMAC 块。 没有访问权限、我们如何初始化? 软件甚至无法执行基本的软复位操作。  

    如果这不是 DSP 的设计功能(我很难相信)、那么以下情况似乎是可能的:EMAC 模块未计时、未通电、未"启用"或被 FPGA 扣为人质。 但我真的无法通过硬件探测和文档搜索找到任何证据。  

    如果有人能给我更多线索、我会非常感激。 这不是一个复杂的软件问题。 在我看来、这是一个问题:"哦、你忘记打开了"。  

    谢谢、


    Dai 仁寿

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在我的软件可以执行任何 EMAC 初始化之前、我想检查软件是否正在寻址正确的寄存器(存储器位置)。 我让 SW 读取一些具有已知值的 ID 寄存器(例如 TXIDVER)。 令我非常惊讶的是、只有 EVM 板处于 EMAC 引导模式(引导模式[2:0]= 0b010)时、ID 值才是正确的。 当它被置于任何其他引导模式中时、软件无法正确读取 ID 寄存器、就好像有东西阻止内存或数据访问分配给 EMAC 的内存块一样(所有其他外设工作正常)。

    因此、我们不讨论我的 EMAC 初始化是正确还是正确。 问题是我的软件甚至无法访问存储器映射寄存器的 EMAC 块。 没有访问权限、我们如何初始化? 软件甚至无法执行基本的软复位操作。

    如果这不是 DSP 的设计功能(我很难相信)、那么以下情况似乎是可能的:EMAC 模块未计时、未通电、未"启用"或被 FPGA 扣为人质。 但我真的无法通过硬件探测和文档搜索找到任何证据。

    如果有人能给我更多线索、我会非常感激。 这不是一个复杂的软件问题。 在我看来、这是一个问题:"哦、你忘记打开了"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    [引用]问题是我的软件甚至无法访问存储器映射寄存器的 EMAC 块。 没有访问权限、我们如何初始化? [/报价]

    根据我的经验、当您尚未将功能时钟启用到特定外设(它是其初始化的一部分)时、就会发生此问题。

    验证为网络子系统生成时钟的 PLL 是否配置正确。 您可以检查 GEL 文件以查看如何启用 TMS320C6657器件内的时钟。 请参阅随附 的 GEL 文件 e2e.ti.com/.../8130.evmc6657l.gel

    您可以做的另一件事是将电路板连接到 CCS、加载 GEL 文件并查看您是否可以访问 EMAC。 如果是、则在 SoC 初始化中会缺少该内容(正如我说过的、IMO、主要故障是缺少时钟)。  

    此致、
    Yordan

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

    非常感谢你的帮助。 问题现已解决。

    我们都正确地怀疑、原因只是 EMAC 模块从非 EMAC-SGMII 模式引导时未获取时钟。 DSP 处理器数据表(SPRS814C)的"第6.4.2节时钟域"中"简要"提到了每个模块的时钟门控。 LPSC (本地电源/睡眠控制器)必须用于显式启用(或禁用)每个模块的时钟。

    我希望 TI 的 EMAC 部分强调了这一点、因为大多数其他外设默认情况下都可以正常工作。 当您尝试仅从从头开始掌握新芯片而不使用预封装的软件时、需要学习的一课。

    再次感谢您的帮助、我非常感谢您的帮助。

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

    感谢您在解决之前的 EMAC 时钟启用问题方面的帮助。 我现在对共享 MSM SRAM 有另一个问题。 请帮助。 谢谢。

    在 C6657处理器的两个核心 PACS 之间使用 MSM 共享 SRAM 时遇到困难。 具体而言、我将讨论0x0c000000地址上的共享 SRAM。 下面是我注意到的:

    Core0可以成功写入 MSM SRAM 中的某个位置、core1可以正确读取内容。

    但是、当 core1将数据写回 MSM SRAM 中的某个位置时、core0无法看到该内容。 Core1声称它已经将一些数据写入一个位置、并且从它的角度来看、它可以正确回读写入的内容。 但 core0无法看到该内容。 Core0仍会在该位置看到旧的过时数据、就像 core1根本没有写入数据一样。

    我的理解是、两个内核使用共享的 MSM SRAM 进行通信和协调、因此每个内核都可以写入和读取、每个内核都可以读取另一个内核写入的内容。 我弄错了吗? 感谢您在这方面的快速帮助。

    谢谢、

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

    您能否打开另一个存在此问题的线程、因为它与以太网子系统完全无关?

    此致、
    Yordan