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/66AK2H12:GEL 文件/PSC 初始化错误

Guru**** 2601915 points
Other Parts Discussed in Thread: 66AK2H12, 66AK2H14, 66AK2H06

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/647343/ccs-66ak2h12-gel-file-psc-initialization-error

器件型号:66AK2H12
主题中讨论的其他器件: TCI6638K2K66AK2H1466AK2H06

工具/软件:Code Composer Studio

您好!

CCS:7.2.0.00013

我有一个66AK2H12评估板。  我还有一个基于评估板参考设计的客户板。

评估板使用评估套件附带的子板连接到 CCS。  GEL 文件自称为 TCI6638K2K GEL 文件版本1.8。

对于客户电路板、我有一个560 POD、Blackhawk。  我已修改 GEL 文件以与此卡配合使用: SDRAM 配置稍有不同。

这两个卡都初始化并运行软件、我可以访问存储器、尽管存在一些差异。  

我看到、当客户电路板初始化时、GEL 文件会报告:

SET_PSC_STATE…… 超时错误#03 PD=2、MD=9!

SET_PSC_STATE…… 超时错误#03 PD=29、MD=50!

导致这种情况的原因是什么、会产生什么影响?  我注意到、我无法完成 min_emacTCPExample 的初始化和运行: 这在评估板上运行、但在客户板上、它在初始化中途挂起、等待与 SERDES 初始化相关的信号。  这是否与 PSC 初始化错误有关?

请注意、客户电路板确实运行 uboot、以太网已知可以正常工作。  但是、我们需要从 u-boot 和 Linux 过渡到 RTOS; u-boot 位于闪存中、这在该电路板上很容易证明。  但是、我们的客户需要 RTOS; 我们的目标是在电路板上运行此测试并验证 TI-RTOS 下的网络连接。

另一个观察结果/差异: EVAL 板出现 SECCTL[旁路]= 0x00000000、而客户板显示0x00800000。  报告的 PLL 初始化步骤看起来不同、但 PLL 寄存器中的最终结果看起来相同。  请告诉我、您是否需要有关此问题的更多详细信息以提供答案。

谢谢、

Tim

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

    [引用]这在评估板上运行、但在客户板上、它在初始化过程中中途挂起、等待与 SERDES 初始化相关的信号。 这是否与 PSC 初始化错误有关?[/quot]

    是的、这可能是 PSC 初始化错误。 您能否在示例中添加一些调试打印? 也可以在 CCS 中使用 step into 选项调试代码、这样您就可以准确地看到代码的挂起位置(在哪个函数中)。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、Yordan。 当 GEL 文件运行时、出现 PSC 初始化错误;GEL 文件 PSC 初始化与 TI 为评估板分发的文件相同。 GEL 文件已被修改以适应不同的 SDRAM;这发生在 PSC 初始化之后、并且工作正常。 GEL 文件中的 PSC 错误消息(在原始帖子中提到)指示什么?

    我忽略了另一个细节:在使用评估板并加载程序时、程序会运行到入口点(main)并停止。 当使用客户板和 Blackhawk Pod 并加载程序时、执行过程不会停止。 相反、我停止处理器并看到它在0x0000_0128处挂起、这是0x0000_0128的分支。 我可以通过将 PC 更改为刚加载的文件的入口点并继续运行应用程序。 引导加载程序在此地址停止这一事实是否表明先前出现了一些错误或设置不正确? 也许这是一个急剧的事件。

    代码示例 BTW 也是 TI 示例。 当在评估板上运行时、与客户板相对、这可以正常运行(无需更改甚至重建)。 我们知道以太网可以工作、端口0可以在客户电路板上工作、因为 uBoot 运行正常。 (按照处理器的要求、当设置了引导模式以便处理器从 NAND 闪存引导时、uBoot 会运行。 当引导模式为 NAND 闪存时、任何 GEL 文件都绕过大部分或全部初始化、包括 PSC 初始化)。

    谢谢、

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

    [引用] GEL 文件中的 PSC 错误消息(在原始帖子中提到)指示什么?
    错误发生在 SET_PSC_STATE ()函数中:
    //等待 GSTAT 清零
    SET_Timeout (GTIMEOUT);
    while (get_Timeout()&&(PSC_PTSTAT &(0x1 <<PD)!= 0);

    //检查等待时是否出现超时错误
    如果(!get_Timeout())

    GEL_TextOut ("Set_PSC_State... 超时错误#01 PD=%d、MD=%d!\n"、2、、、PD、id);
    RET=1;

    等待 Go STAT 清零时。
    是否尝试将全局超时(GTIMEOUT)增加一个位?

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

    我昨天尝试了这种方法。 正常超时为2000;我将此值加倍。 GEL 文件初始化期间报告的状态存在差异。

    我可能会尝试更改两个无法初始化的项目的顺序。

    谢谢、

    Tim
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在为域9、29设置 PSC 的调用前后引入了 GEL 文件中的延迟。 对于计数到200K 的循环、延迟为 GEL。 这没有影响;我仍然得到2个误差。

    然后、连接后、我从下拉菜单中重新运行 SET_PSC_All_ON 脚本。 同样的错误消息也失败了。 因此、重新运行脚本无效。

    更改顺序(提前移动失败的两个时间)、添加延迟、增加超时时间:所有这些都不起作用。

    Yordan、这些 PSC 状态显然意味着或暗示着什么;您是否可以提供有关 PSC 初始化失败原因的任何信息? PD2、md9的状态为4;pd29、md50的状态为8。

    谢谢、

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

    让我来看看这个。

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

    PSC 用户指南在某种程度上对这方面的信息不明确。 根据 GEL 文件、电源域的可能状态为:
    状态-(I)要设置的新状态值
    0 =复位
    1 = SYNC 复位
    2 =禁用
    3 =使能
    根据器件数据表中的表10-6 66AK2H x 电源域(第1部分、共2部分)、导致问题的电源域似乎是:
    PD2 -->网络协处理器
    以下是 GEL 文件:
    //电源域上的模块2.
    #define LPSC_PA (7)
    #define LPSC_SGMII (8)
    #define LPSC_SA (9) 如果 md = 9、则 SA 似乎是导致问题的原因


    pd29 --> 10GbE,这很奇怪,因为这似乎只适用于66AK2H14。
    以下是 GEL 文件:
    //电源域上的模块29.
    #define LPSC_XGE (50) 从 MD = 50开始、10GbE 似乎是导致问题的原因

    尝试删除:
    SET_PSC_STATE (PD2、LPSC_SA、PSC_ENABLE);

    SET_PSC_STATE (PD29、LPSC_XGE、PSC_ENABLE);
    从 GEL 文件中的 hotmenu SET_PSC_All_ON()函数中查看这是否有帮助。

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

    是否有一个器件 ID 寄存器我可以查询、以便我可以确认 Keystone II 的器件型号、版本? 这两张卡都将散热片贴在部件上。

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

    否、我无法在文档中找到任何内容。 正如我说过的、GEL 文件本身的开头会披露这一点:
    //电源域0上的模块
    //始终打开

    //电源域上的模块1.
    #define LPSC_DEBUG (5)
    #define LPSC_TETB (6)

    //电源域上的模块2.
    #define LPSC_PA (7)
    #define LPSC_SGMII (8)
    #define LPSC_SA (9)

    //电源域上的模块3.
    #define LPSC_PCIe (10)

    //电源域上的模块4.
    #define LPSC_SRIO (11)

    //电源域上的模块5.
    #define LPSC 超链接_0 (12)

    等等...

    您还可以查看66AK2H12数据表中的第10.3节电源睡眠控制器(PSC)。

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

    谢谢。 我在 H14上运行、而不是在12上运行、所以我在做初始项时对其进行了错误描述。

    这里的目标是让以太网示例在此板上运行、因此注释出 PSC 支持10Gb 以太网、虽然它可能会阻止 GEL 文件的投诉、但不允许以太网运行。

    此外、由于 uboot 运行并可以访问网络、我在 uboot 运行后查看了 PSC 模块状态寄存器、并在 GEL 文件运行后将它们与模块状态寄存器进行比较。 我尝试理解/解决一些差异。

    我注意到、即使我注释了初始化 PSC_DEBUG 模块的 GEL 文件行、当 GEL 文件运行时、此模块的状态为0x31f03。 这可能是因为我正在使用 POD (并且必须使用它)转储这些寄存器、而当我运行 uboot 时、我只需使用 md.l 命令转储寄存器。

    当我运行以太网测试时,它永远不会超过 CSL_SerdesWaitForSigDet(),显然是在等待不会发生的事情。 我可以停止并单步执行此操作;它正在等待初始化完成、但从未发生过。 我想/希望来自 GEL 文件初始化的 PSC 投诉是问题的根源。

    哪些其他项目可能会导致 SerDes 无法响应?

    此致、

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

    [引用 user="Tim Cooper1]'我看到、当客户电路板初始化时、GEL 文件会报告:

    SET_PSC_STATE…… 超时错误#03 PD=2、MD=9!

    SET_PSC_STATE…… 超时错误#03 PD=29、MD=50!

    这是什么原因、以及会产生什么影响?[/quot]查看   66AK2H14、66AK2H12、66AK2H06数据表  SPRS866G 的电源域和时钟域部分:

    a) PD=2、MD=9是 安全加速器。  安全加速器根据订购的器件型号启用/禁用。 为 安全加速器启用 PSC 超时错误可能意味着 未在设备中启用安全加速器。 从文档中、我看不到要读取 的任何器件寄存器、是否启用或禁用了安全加速器。 器件标识应指示 安全加速器是启用还是禁用。

    b) PD=29、MD=50是 10GbE、仅 在66AK2H14中。 为 10GbE 启用 PSC 时出现超时错误、可能意味着设备不是 66AK2H14。 从文档中、我看不到任何用于确定器件是否为 66AK2H14、66AK2H12、66AK2H06的器件寄存器。  66AK2H06/12/14 器  件勘误表 SPRZ402E 为66AK2H06/12/14器件列出了相同的 JTAGID 寄存器值。

    客户电路板是否需要使用 安全加速器和 /或10GbE?

    根据您的说明、不确定您的应用程序是使用 10GbE 还是1GbE。

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

    感谢您提供的信息、Chester。

    客户电路板成功运行 uboot、并在 uboot 下建立网络连接。 我们知道以太网接口在客户电路板上工作。  在 uboot 下、电路板会初始化、设置以太网、并对 ping 进行 ping /响应。

    虽然我看不到 SOC 顶部的标记、但处理器卡包含88E1111-B1 PHI。 我看到此部件是10/100/1000收发器(那么、1Gb?)。  这与评估板原理图上使用的器件相同。  BTW、评估板的 BOM 显示了 TMS320TCI6638。  但是、评估卡的 BOM 和原理图是旧的、我无法看到器件顶部以确认器件型号。

    此时不需要 SA。  当前的目标是让 TI 以太网演示在卡上运行; 如果它在评估板上使用了 SA (有效)、则我们希望它在客户的板上使用。

    还请注意、用于 ARM 的 GEL 文件启用所有 PSC、即使是那些在 TI 文献中标记为"保留"的 PSC。  

    谢谢!

    Tim

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

    [报价用户="Tim Cooper1]SA 目前不需要。  当前的目标是使 TI 以太网演示在卡上运行;  如果它使用评估板上的 SA (有效)、则我们希望它在客户的电路板上使用。[/quot]假设您是指 NIMU_emacExample_EVMK2HC66BiosExampleProject 或 NIMU_emacExample_EVMK2H_armBiosExample 示例、它们使用1GbE 以太网子系统、而不使用安全加速器。

    [引用 user="Tim Cooper1]]运行以太网测试时,它永远不会超过 CSL_SerdesWaitForSigDet(),显然是在等待不会发生的事情。 我可以停止并单步执行此操作;它正在等待初始化完成、但从未发生过。 我想/希望来自 GEL 文件初始化的 PSC 投诉是问题的根源。 CSL_SerdesWaitForSigGet ()函数正在读取   KeyStone II 架构串行器/解串器(SerDes)用户指南中定义的 PLL_CTRL - PLL 控制寄存器(地址0x0232bff4)。  CSL_SerdesWaitForSigDet()正在等待 为通道设置信号检测信号。

      ti-processor-sdk-rtos-k2hk -evm-04.01.00.06\pdk_k2hk 4_0_7\packages/ti\transport\ndk\Nimu\src\v2\Nimu_EVM1中的 CSL_SgmiDefSerdesSetup ()函数尝试启用 SGMII SERDES 通道0、并 将其连接到以太网端口1端和 EVM1端。

    您能否确认:

    a) 客户电路板上安装了多少个88E1111以太网 PHY、以及连接到 Keystone II SOC 的 SGMII 端口?

    b)当程序在 CSL_SerdesWaitForSigDet()中停止时,lane 参数是什么?

    如果客户电路板上没有两 个88E1111以太网 PHY 连接到 Keystone II SOC SGMII0和 SCGMII1端口,则 需要更改 CSL_SgmiDefSerdesSetup()函数以仅启用连接 到88E1111以太网物理层的 SGMII 通道。

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

    谢谢、Chester。  这似乎是一条有效的途径。

    A)客户电路板上有一个物理层。

    B) 2.  我看到它被1和2调用。  1个返回、2个被反复调用

    我将连接的通道从2更改为1、并按照建议进行重建。  当我构建测试程序时、会出现一个致命的问题:在 socketndk.h 中重新定义 timeval; 不确定这是为什么现在被裁剪的。  已注释、因为它看起来是冗余的; 已重建; 现在测试已启动、我可以 ping 客户的电路板。  谢谢!

    Tim

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

    [引用 user="Tim Cooper1]]构建测试程序时、出现了致命问题:在 socketndk.h 中重新定义了 timeval; 不确定为什么现在将其裁剪掉。我认为错误是由于 TI-RTOS 和 GNU ARM v6.3.1编译器包含文件之间的定义冲突所致。

     来自 ti-processor-sdk-rtos-k2hk-evm-04.01.00.06\pdk_k2hK_4_0_7的 Nimu_eth.c 源文件与 GNU arm v4.4.3编译器成功编译、但在尝试使用 GNU arm v6.3.1编译器时"错误:重新定义'struct timeval'"

     Processor SDK RTOS 发行说明 将 4.9-2015q3列为 GNU ARM 编译器的受支持版本。