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.

[参考译文] DP83867IS:问题:不同的"调试方法"应用了不同的初始化设置

Guru**** 2451970 points
Other Parts Discussed in Thread: DP83867IS

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1496862/dp83867is-problem-different-debugging-methods-applied-different-initialization-settings

器件型号:DP83867IS

工具/软件:

[我想问什么]
正在对在我们产品原型中实现的 PHY (DP83867IS)进行评估
我们设计并实现了 DP83867IS、通过访问其寄存器、以使用所需的初始化设置开始运行。
但是、在调试阶段、我们遇到了根据"调试方法"不同应用初始化设置的问题。
换句话说、问题在于不同的"调试方法"应用了不同的初始化设置。
告诉我们如何解决这个问题。

[后声]
我们通过 MDIO 通信使用千兆位以太网 MAC"Core TSE"(Microchip 的软件 IP)访问 DP83867IS 寄存器。

[情况]
-我们使用的编译器是来自 IAR 的 EWRISCV。 (但是、我们认为我们可以概括地讨论调试环境和方法。)
-为了确认我们实施的固件设计,当我们在编译器上运行"步骤执行"时,
 在该步骤执行中执行寄存器访问函数后、我们可以毫无问题地访问寄存器。
-另一方面,如果允许程序从入口点继续运行,没有断点,即不停止程序,  
该行为看起来就像未访问 PHY 寄存器一样
-具体而言,在对 DP83867IS 中的特定寄存器进行写入访问后,对同一寄存器的读回结果表明写入所需的值。
-当在测试程序中添加了一个过程,如果不能读回所需的值,该过程将不允许程序继续进行,
 这个过程陷入了一个无限的循环,并且上述事件被判定已经发生。
 
-我担心,当实现的程序实际上在实际产品中运行时,操作将继续进行,没有所需的 PHY 寄存器访问。
-认为,当固件和 PHY 在产品中实际运行时,应该没有"步骤执行"
您想告诉我、访问 PHY 寄存器的方式或初始化设置是否有问题?

*只是为了您的信息,如果写入过程重复,直到正确的值可以重复写入或回读,直到所需的值可以回读,
重复这些过程一定次数后、该过程将正确完成。

但是、由于我们不想在实际产品中包含这些迭代过程
而且,由于很难提供一个合理的基础,这样的迭代过程可以解决上面所示的问题,
E 将保留此信息作为参考信息。

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

    尊敬的 Asano-San:  

    您能否验证 PHY 已上电、并根据数据表中的以下建议访问寄存器?



    您是否还可以根据数据表中的以下建议来验证 MDIO/MDC 接口是否正在发送数据?



    如果这两个规范都在建议范围内、您能否添加延迟函数每个寄存器读取/写入访问并运行整个脚本、看看是否所有寄存器值都按预期进行初始化?

    请告诉我。  

    此致、
    j

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

    您好、J-San、

    这是浅野打字。
    感谢您每次的答复。

    如您所指出、我们将通过波形测量来检查上电和 MDIO 通信期间的时序。
    之后、根据结果、我们还尝试为每次读取/写入访问插入延迟函数。

    ###(附加问题1)###
    -其中是数据表中所述的"向每次访问添加延迟功能"对策、
      包括证据吗?
    -如果没有,请告诉我们的原因,以及?

    ###(附加问题2)###

    请告诉我您对 TI 网站的看法(如有)、
    我在该主题的顶部提到了以下现象?

     -如果写入过程重复,直到可以重复写入或读回正确的值
      直到可以读回所需的值、
      重复这些过程一定次数后、该过程将正确完成。
     -即使允许程序从入口点继续运行,没有断点,
      即在不停止程序的情况下发生上述现象。

    从这种现象的发生来看、
    我们怀疑这个问题不是延迟功能插入、
    但重复访问的数量是这个问题的本质。

    对于这个、是否只能通过重复访问来固定该设置?
    也可以通过单次访问进行设置?

    此致、
        Asano

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

    尊敬的 Asano-San:  

    ###(附加问题1)###
    -其中是数据表中所述的"向每次访问添加延迟功能"对策、
      包括证据?

    添加延迟功能是我个人的想法、而不是数据表中的想法。  

    当我们在编译器上运行"步骤执行"时、
     在该步骤执行中执行寄存器访问函数后、我们可以毫无问题地访问寄存器。
    -另一方面,如果允许程序从入口点继续运行,没有断点,即不停止程序,  
    行为显示为未访问 PHY 寄存器

    基于此、我认为 MDIO 可能会太快地发送写入命令、以至于 PHY 没有正确接收命令。 因此、我建议在程序中增加一些人为的延迟、以便程序在进入下一个命令之前等待一段时间。  


    如果有、请告诉我您的观点。
    我在该主题的顶部提到了以下现象?

     -如果写入过程重复,直到可以重复写入或读回正确的值
      直到可以读回所需的值、
      重复这些过程一定次数后、该过程将正确完成。
     -即使允许程序从入口点继续运行,没有断点,
      即在不停止程序的情况下发生上述现象。

    从这种现象的发生来看、
    我们怀疑这个问题不是延迟功能插入、
    但重复访问的数量是这个问题的本质。

    对于这个、是否只能通过重复访问来固定该设置?
    也可以通过单个访问权限进行设置?

    否、这不是预期行为、应通过单个访问进行设置。 您能否检查 MDIO 线路在1.5k 和2.2k Ω 之间是否有上拉电阻、并确保 MAC 不会 通过25 MHz 发送 MDC 信号。 此外、请确保 MDIO 写入命令遵循以下命令:  



    请告诉我这是如何实现的。  

    此致、
    j

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

    尊敬的 J-San:

    这是浅野打字。
    感谢您对改善问题的友好建议。

    回复以来、我们已经研究了周围电路块的输出波形
    发现控制 MDIO 访问的硬件(FPGA)设计(包括对 GMAC IP 的了解)设计错误、
    因此、无法管理 MDIO 通信完成检测(无法正确检测完成情况)

    因此、我们更正了设计、以便正确检测 MDIO 通信的完成情况、然后再继续执行下一条指令。
    这种情况已经解决(不插入延迟函数)。

    由此给您带来的不便、我们深表歉意。 此事现已结束。
       此致、