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.

[参考译文] 66AK2E05:以太网不工作;PSC 未初始化

Guru**** 2550410 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/600604/66ak2e05-ethernet-not-working-psc-not-initializing

器件型号:66AK2E05

我们正在尝试使以太网端口在我们的定制板上工作、并且无法使网络协处理器成功初始化。  我们按照 PSC 用户指南(SPRUGV4C)第2.3.3节中的顺序打开电源域和时钟模块,但 PTSTAT.GOSTAT[X]位永远不会清除:

并发电源域/模块状态转换的过程如下(X 表示电源域编号、Y 表示模块域编号):

1、等待 PTSTAT.GOSTAT[X]清零至0x0。 等待先前启动的任何转换完成、然后再启动新的转换。

2.将 PDCTL[X]设置为打开(0x1)转换的下一个。

3.将 MDCTL[Y].NEXT 设置为启用(0x3)。 请注意、只要相应的电源域处于开启状态、您就可以在此步骤中在多个 MDCTL 下一个字段中设置转换。

4.将 PTCMD.GO[X]置位0x1以启动状态转换。 PSC 将打开该特定域的逻辑/存储器、启动模块时钟、然后使模块复位无效。

5、等待 PTSTAT.GOSTAT[X]清零至0x0。 只有在 PTSTAT.GOSTAT[X]清零后、域才会安全地处于新状态。

 

我们在电路板和 K2E EVM 上运行了相同的序列。 K2E EVM 完成初始化(PTSTAT.GOSTAT[2]变为0)、但我们的没有完成。 这两个板之间唯一已知的相关差异是、EVM 使用 NETCPCLK 作为 NETCP PLL 的输入时钟、我们使用 CORECLK 以相同的频率。 我们对这种情况的发生是有损失的。 我们对什么可能是问题的想法停滞不前。 请就我们可以采取的步骤提出建议、以找出出错的地方!

 

收集的数据:

 

下面粘贴了电路板上配置尝试的注释会话。 故障点以粗体突出显示

 

***命令***

W -读取32位存储器位置

W -写入32位存储器位置

? -显示菜单

 

//读取与电源和时钟相关的寄存器以进行 NETCP 控制。

> w

32位十六进制地址:02620358 // NETCPPLLCTL0 - NETCP PLL 控制寄存器0

0x02620358:0x090804C0

> w

32位十六进制地址:0262035c // NETCPPLLCTL1 - NETCP PLL 控制寄存器1.

0x0262035C:0x00002040

> w

32位十六进制地址:02350128 // PTSTAT -转换状态

0x02350128:0x00000000

 

//打开 NETCP 电源并启用三个时钟

> W

32位十六进制地址:02350308 //设置 PDCTL2的位0 -加电

要写入的32位值:1.

0x02350308:0x00000001

> W

32位十六进制地址:02350a1c //将 MDCTL7的位4:0设置为3 -启用状态

要写入的32位值:103

0x02350A1C:0x00000103

> W

32位十六进制地址:02350a20 //将 MDCTL8的位4:0设置为3 -使能状态

要写入的32位值:1103

0x02350A20:0x00001103

> W

32位十六进制地址:02350a24 //将 MDCTL9的位4:0设置为3 -启用状态

要写入的32位值:103

0x02350A24:0x00000103

> W

32位十六进制地址:02350120 //设置位2以引起 NETCP 命令转换

要写入的32位值:4

0x02350120:0x00000004

> w

32位十六进制地址:02350128 // PTSTAT 应该读取0以完成命令;如果没有完成则读取0x4

0x02350128:0x00000004

 

//读取与电源和时钟相关的寄存器以进行 NETCP 控制。

> w

32位十六进制地址:235081c // MDSTAT7 - PA 时钟状态-位5:0应为0x3

0x0235081C:0x00000A18

> w

32位十六进制地址:2350820 // MDSTAT8 -以太网 SGMIIs 时钟状态-位5:0应为0x3

0x02350820:0x00000A18

> w

32位十六进制地址:2350824 // MDSTAT9 - SA 时钟状态-位5:0应为0x3

0x02350824:0x00000A18

> w

32位十六进制地址:2350208 // PDSTAT2 - NETCP 电源状态-位0应为1

0x02350208:0x00000301

 

下面粘贴了 K2E EVM 板上类似配置尝试的注释会话。 电路板上出现故障的同样一点以粗体突出显示、但它在 EVM 上通过。 请注意,EVM 的以太网端口无法启动,我们采取了一些步骤,在运行上述初始化序列之前关闭电源域和时钟模块,以将其重新打开:

 

U-Boot 2013.01 (2015年6月11日- 10:06:42)

 

I2C:  就绪

SPD 总和正常;在 SPD 中:33 CC;计算出00000033 CC

DDR3A 速度将配置为1600工作模式。

检测到 SO-DIMM [18KSF51272HZ-1G6K2]

DDR3速度1600

DRAM:4 GiB

 

将整个 DDR3内存重置为0...

DRAM:2GiB

NAND:512 MiB

网络:  K2E_EMAC0、K2E_EMAC1、K2E_EMAC2、K2E_EMAC3、K2E_EMAC4、 K2E_EMAC5、K2E_EMAC6、K2E_EMAC7

按任意键停止自动引导:3 2 0

 

K2E EVM # ping 147.24.130.42

使用 K2E_EMAC0器件

主机147.24.130.42处于活动状态

 

//读取 ID 寄存器以查看基地址是否正常。

K2E EVM # MD.l 0x2350000 1 // PID 寄存器0x4482 (高16位、低未知)

02350000:44827200  .R.D

 

//读取与电源和时钟相关的所有寄存器以进行 NETCP 控制。

K2E EVM # MD.l 0x2350120 // PTCMD  -命令转换

02350120:00000000  …

K2E EVM # MD.l 0x2350128 // PTSTAT -转换状态

02350128:00000000  …

K2E EVM # MD.l 0x2350208 // PDSTAT2 - NETCP 电源状态

02350208:00000301  …

K2E EVM # MD.l 0x2350308 // PDCTL2 - NETCP 电源命令

02350308:00000001  …

K2E EVM # MD.l 0x235081c // MDSTAT7 - PA 时钟状态

0235081c:00001f03  …

K2E EVM # MD.l 0x2350820 // MDSTAT8 -以太网 SGMII 时钟状态

02350820:00001f03  …

K2E EVM # MD.l 0x2350824 // MDSTAT9 - SA 时钟状态

02350824:00001f03  …

K2E EVM # MD.l 0x2350a1c // MDCTL7 - PA 时钟命令

02350a1c:00000103  …

K2E EVM # MD.l 0x2350a20 // MDCTL8 -以太网 SGMIIs 时钟命令

02350a20:00001103   

K2E EVM # MD.l 0x2350a24 // MDCTL9 - SA 时钟命令

02350a24:00000103  …

K2E EVM # MD.l 0x2620358 // NETCPPLLCTL0 - NETCP PLL 控制寄存器0

02620358:090804c0....   

K2E EVM # MD.l 0x262035c // NETCPPLLCTL1 - NETCP PLL 控制寄存器1.

0262035c:00002040  @

 

//关闭三个 NETCP 时钟,然后打开电源

K2E EVM # MD.l 0x2350128 // PTSTAT 应该读取为0才能启动

02350128:00000000  …

K2E EVM # mw.l 0x2350a1c 0x100 1 //清除 MDCTL7的位4:0 - SwRstDisable 状态

K2E EVM # mw.l 0x2350a24 0x100 1 //清除 MDCTL7的位4:0 - SwRstDisable 状态

K2E EVM # mw.l 0x2350a20 0x1100 1 //清除 MDCTL8的位4:0 - SwRstDisable 状态

K2E EVM # mw.l 0x2350308 0x0 1 //清除 PDCTL2的位0 -关闭电源

K2E EVM # mw.l 0x2350120 0x4 1 //设置位2以导致 NETCP 命令转换

K2E EVM # MD.l 0x2350128 // PTSTAT 应该读取为0以完成命令;如果没有完成则读取为0x4

02350128:00000000  …

 

//读取与电源和时钟相关的所有寄存器以进行 NETCP 控制。

K2E EVM # MD.l 0x2350120 // PTCMD  -命令转换

02350120:00000000  …

K2E EVM # MD.l 0x2350128 // PTSTAT -转换状态

02350128:00000000  …

K2E EVM # MD.l 0x2350208 // PDSTAT2 - NETCP 电源状态-位0应为0

02350208:00000200....   

K2E EVM # MD.l 0x2350308 // PDCTL2 - NETCP 电源命令

02350308:00000000  …

K2E EVM # MD.l 0x235081c // MDSTAT7 - PA 时钟状态-位5:0应为0

0235081c:00000a00....   

K2E EVM # MD.l 0x2350820 // MDSTAT8 -以太网 SGMIIs 时钟状态-位5:0应为0

02350820:00000a00....   

K2E EVM # MD.l 0x2350824 // MDSTAT9 - SA 时钟状态-位5:0应为0

02350824:00000a00  …

K2E EVM # MD.l 0x2350a1c // MDCTL7 - PA 时钟命令

02350a1c:00000100  …

K2E EVM # MD.l 0x2350a20 // MDCTL8 -以太网 SGMIIs 时钟命令

02350a20:00001100  …

K2E EVM # MD.l 0x2350a24 // MDCTL9 - SA 时钟命令

02350a24:00000100  …

K2E EVM # MD.l 0x2620358 // NETCPPLLCTL0 - NETCP PLL 控制寄存器0

02620358:090804c0....   

K2E EVM # MD.l 0x262035c // NETCPPLLCTL1 - NETCP PLL 控制寄存器1.

0262035c:00002040  @

 

//打开 NETCP 电源并启用三个时钟

K2E EVM # MD.l 0x2350128 // PTSTAT 应该读取为0才能启动

02350128:00000000  …

K2E EVM # mw.l 0x2350308 0x1 //设置 PDCTL2的位0 -上电

K2E EVM # mw.l 0x2350a1c 0x103 //将 MDCTL7的位4:0设置为3 -启用状态

K2E EVM # mw.l 0x2350a20 0x1103 //将 MDCTL8的位4:0设置为3 -启用状态

K2E EVM # mw.l 0x2350a24 0x103 //将 MDCTL9的位4:0设置为3 -启用状态

K2E EVM # mw.l 0x2350120 0x4 //设置位2以引起 NETCP 命令转换

K2E EVM # MD.l 0x2350128 // PTSTAT 应该读取为0以完成命令;如果没有完成则读取为0x4

02350128:00000000  …

 

//读取与电源和时钟相关的所有寄存器以进行 NETCP 控制。

//此时,希望寄存器返回到原来的状态

//最初。

K2E EVM # MD.l 0x2350120 // PTCMD  -命令转换

02350120:00000000  …

K2E EVM # MD.l 0x2350128 // PTSTAT -转换状态

02350128:00000000  …

K2E EVM # MD.l 0x2350208 // PDSTAT2 - NETCP 电源状态-位0应为1

02350208:00000301  …

K2E EVM # MD.l 0x2350308 // PDCTL2 - NETCP 电源命令

02350308:00000001  …

K2E EVM # MD.l 0x235081c // MDSTAT7 - PA 时钟状态-位5:0应为0x3

0235081c:00001f03  …

K2E EVM # MD.l 0x2350820 // MDSTAT8 -以太网 SGMIIs 时钟状态-位5:0应为0x3

02350820:00001f03  …

K2E EVM # MD.l 0x2350824 // MDSTAT9 - SA 时钟状态-位5:0应为0x3

02350824:00001f03  …

K2E EVM # MD.l 0x2350a1c // MDCTL7 - PA 时钟命令

02350a1c:00000103  …

K2E EVM # MD.l 0x2350a20 // MDCTL8 -以太网 SGMIIs 时钟命令

02350a20:00001103   

K2E EVM # MD.l 0x2350a24 // MDCTL9 - SA 时钟命令

02350a24:00000103  …

K2E EVM # MD.l 0x2620358 // NETCPPLLCTL0 - NETCP PLL 控制寄存器0

02620358:090804c0....    

K2E EVM # MD.l 0x262035c // NETCPPLLCTL1 - NETCP PLL 控制寄存器1.

0262035c:00002040  @

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

    我已通知工厂团队。 他们的反馈将在此处发布。

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

    您用于初始化以太网端口的软件是什么? U-boot 下的命令? 如果在非引导模式下使用 GEL、电路板是否正常工作?

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

    我们使用 u-boot 来初始化 EVM 板(U-Boot 2013.01 (2015年6月11日- 10:06:42))。  我不知道用于初始化以太网端口的 K2E EVM 的 GEL 文件。  如果存在这种情况、请向我发送一个信息链接、因为这可能有助于了解该过程。

    在我们的定制板上、我们使用 我们自己 的引导汇编源文件。

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

    要使用 GEL 方法、您需要将 EVM 板置于非引导模式。 GEL 位于 CCS V6或 V7 ccsv7\ccs_base\emulation\boards\evmk2e\gel 下、起始点为:global_Default_Setup_Silent()。

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

    我想尝试在 K2E EVM 和我们的定制板上运行不引导模式。 然后、我想在两个系统上运行一个最小初始化、以尝试为以太网启用 NETCP 电源和时钟模块。 我认为有 GEL 脚本可以让我实现这一目的。 我的问题是:
    1. Global_Default_Setup_Silent()是否仍然是要运行的正确脚本,我是否有任何原因不能在两个板上运行它?
    2.在 EVM 上处于"无引导模式"时、K2E 处理器上的引导模式引脚如何配置? 我查看了原理图、另一个 IC 似乎是根据开关设置选择一些引导模式引脚。 数据表中也没有显示"不启动"模式。 但是、我假设我需要以相同的方式配置定制板引导模式[]引脚。 请确认。

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

    1) Global_Default_Setup_Silent()是要运行的正确脚本。 当您连接 K2E A15或 DSP 内核时、它会自动运行。

    2) 2)有关如何设置为非引导模式、请参阅 processors.wiki.ti.com/.../EVMK2E_Hardware_Setup

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

    感谢您的快速响应。
    关于上一个帖子中的问题2、我已查看链接并确定器件处于"DSP 非引导"模式。 该链接处的页面指示 bootmode 的 HIGH_VALUE 为0x00000000、bootmode 的 LOW_VALUE 为0x00100001。 但是、芯片上用于引导模式的引脚抽头仅为16位。 可以认为、上述值是以某种方式解码的。 我想知道的是如何配置芯片上的16个引导模式引脚、以便我可以将电路板配置为"DSP 无引导"模式。 然后、我可以希望在两个板上运行相同的 GEL 脚本。 请确认。
    我查看了数据表、但没有看到对 DSP 无引导模式的引用。

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

    您好!

    请参阅下图如何设置为无引导小端模式:

    此致、Eric

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Eric、
    我认为我的最后一项质询有误解,因为这项答覆是不适用的。
    当处于"无引导模式"时、K2E 处理器上的16个引导模式引脚上显示了什么值? 该解决方案应采用16位值的形式。
    谢谢、
    Brad
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Brad、

    它是0x00000000 0x00100001、该引导模式[15:0]引脚映射到的 DEVSTAT[16:1]位
    DEVSTAT 寄存器。

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

    也许 Wiki 文档不准确、我只是通过将 SW1中的所有4个引脚翻转到 ON 位置来尝试了一个非引导模式的 K2E EVM。 以下是将 C66x 与板载 XDS200仿真器连接时的 GEL 输出:

    IcePick_D_0:警告:建议对 XDS2xx 调试探针进行固件更新。 对于 XDS200探针、使用 CCS 安装目录.../ccs_base/common/uscif/xds2xx 中的 xds2xx_conf 实用程序更新固件。 查看此处的 readme.txt 文件以了解相关说明。 对于其他 XDS2xx 型号、请按照制造商的说明更新固件。 (仿真包6.0.628.3)
    C66xx_0:GEL 输出:
    正在连接目标...
    C66xx_0:GEL 输出:TCI6636K2E GEL 文件版本为1.29999995
    C66xx_0:GEL 输出:检测到的 PLL 旁路被启用:SECCTL[旁路]= 0x00800000
    C66xx_0:GEL 输出:(2A) MAINPLLCTL1 = 0x00000040
    C66xx_0:GEL 输出:(2B) PLLCTL = 0x00000048
    C66xx_0:GEL 输出:(2C) PLLCTL = 0x00000048
    C66xx_0:GEL 输出:(2D)延迟...
    C66xx_0:GEL 输出:(2E) SECCTL = 0x00810000
    C66xx_0:GEL 输出:(2F) PLLCTL = 0x0000004A
    C66xx_0:GEL 输出:(2G)延迟...
    C66xx_0:GEL 输出:(2h) PLLCTL = 0x00000048
    C66xx_0:GEL 输出:(4) PLLM[PLLM]= 0x00000013
    C66xx_0:GEL 输出:MAINPLLCTL0 = 0x05000000
    C66xx_0:GEL 输出:(5) MAINPLLCTL0 = 0x09000000
    C66xx_0:GEL 输出:(5) MAINPLLCTL1 = 0x00000040
    C66xx_0:GEL 输出:(6) MAINPLLCTL0 = 0x09000000
    C66xx_0:GEL 输出:(7) SECCTL = 0x00890000
    C66xx_0:GEL 输出:(8A)延迟...
    C66xx_0:GEL 输出:PLL1_DIV3 = 0x00008002
    C66xx_0:GEL 输出:PLL1_DIV4 = 0x00008004
    C66xx_0:GEL 输出:PLL1_DIV7 = 0x00000000
    C66xx_0:GEL 输出:(8D/e)延迟...
    C66xx_0:GEL 输出:(10)延迟...
    C66xx_0:GEL 输出:(12)延迟...
    C66xx_0:GEL 输出:(13) SECCTL = 0x00090000
    C66xx_0:GEL 输出:(延迟...
    C66xx_0:GEL 输出:(延迟...
    C66xx_0:GEL 输出:(14) PLLCTL = 0x00000041
    C66xx_0:GEL 输出:PLL 已配置(CLKIN * PLLM/PLLD/PLLOD = PLLOUT):
    C66xx_0:GEL 输出:PLL 已配置(100.0 MHz * 20 / 1 / 2 = 1000.0 MHz)
    C66xx_0:GEL 输出:为所有 PSC 模块和 DSP 域加电...
    C66xx_0:GEL 输出:为所有 PSC 模块和 DSP 域加电... 完成。
    C66xx_0:GEL 输出:警告:SYSCLK 是 PA PLL 的输入。
    C66xx_0:GEL 输出:已完成 PA PLL 设置
    C66xx_0:GEL 输出:PAPLLCTL0 -之前:0x098804C0之后:0x090804C0
    C66xx_0:GEL 输出:PAPLLCTL1 -之前:0x0x00000040之后:0x00002040
    C66xx_0:GEL 输出:DDR 开始
    C66xx_0:GEL 输出:XMC 设置完成。
    C66xx_0:GEL 输出:DDR3 PLL (PLL2)设置...
    C66xx_0:GEL 输出:DDR3 PLL 设置完成、DDR3A 时钟现在以800MHz 运行。
    C66xx_0:GEL 输出:DDR3A 初始化完成
    C66xx_0:GEL 输出:DDR 完成
    C66xx_0:GEL 输出:设置 PHY 从1GB 开始
    C66xx_0:GEL 输出:读取 MDIO_VERSION_REG。
    C66xx_0:GEL 输出:MDIO_VERSION_REG:0x00070107
    C66xx_0:GEL 输出:staring Setup for PHY:0
    C66xx_0:GEL 输出:为 PHY 完成的 MISC 寄存器:0
    C66xx_0:GEL 输出:等待 PHY 上的铜链路:0
    C66xx_0:GEL 输出:staring Setup for PHY:1.
    C66xx_0:GEL 输出:为 PHY 完成的 MISC 寄存器:1.
    C66xx_0:GEL 输出:等待 PHY 上的铜链路:1.
    C66xx_0:GEL 输出:设置 PHY 完成1GB

    我查看了 DEVSTAT:0x2620020、它是0x1。 这意味着小端字节序。 所有其它字段为0。

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    0x00000000 0x00100001是64位值、而不是16位值。 这些十六进制序列中的每个数字代表4位。 必须以某种方式对这些值进行解码、以控制显示在芯片引导模式[]引脚上的16位值。 我认为我们在谈论这一问题时仍然有误解。
    我将尝试检查 DEVSTAT 寄存器以查看其内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请忽略我的上一个帖子。 它与您的重叠。 当我对 DEVSTAT 寄存器进行解码时、屏幕日志将给出答案。 感谢您运行该测试!
    此致、
    Brad