你好
我是恩智浦 Layerscape 硬件的新手,正在使用 LS1048ardb 平台。我想提一下 DPMAC2 以太网设备(我认为这是基本以太网的普遍用法 “eth0”),但是通过阅读恩智浦论坛的各种帖子,我需要一个与 SERDES 相匹配的 DPL 文件。如果没有 DPL 文件,我就会得到预期的 uboot 错误:
"fsl-mc:DPL 未部署,DPAA2 以太网不工作"
我在恩智浦论坛上找到了几个生成 "空 "DPL 文件的帖子,使用该 dtb 后,我得到了这个错误:
"fsl-mc:部署数据路径布局 ...警告:固件返回错误 (GSR: 0x3f)"
在恩智浦技术支持论坛的一些回复中(针对 ls1088ardb),我通过提供 SERDES 值,恩智浦工程师可以生成一个适当的 DPL 文件。
以下是我从 mii/mdio 和 SERDES 值中收集到的一些信息,希望对您有所帮助:
= > mii 设备 MI
I 设备:'FSL_MDIO0' '' FSL_MDIO1 '
当前设备:' FSL_MDIO0 '= > mii 信息 PHY 0x01:OUI = 0x80028,型号 = 0x23,Rev
= 0x01,1000BaseT,FDX
=> mdio 列表
FSL_MDIO0:
1 - TI DP83867<--> DPMAC2@sgmii
FSL_MDIO1:
看似相关的Uboot启动数据:
使用 SERDES1 协议:18 (0x12)
使用 SERDES2 协议:13 (0xd)
网:DPMAC2@sgmii [PRIME]
fsl-mc:启动管理复杂...成功
fsl-mc:管理综合体已启动(版本:10.12.0,启动状态:0x1)启用 1000BT 全双工/半双工广告
若能得到任何帮助,我将不胜感激。
你好,LFGP、
我想感谢您在解决这个问题时提供的建议。我发现了问题;我们使用的是 TI83867 phy,我需要将 “ ti,fifo-depth = < DP83867_PHYCR_FIFO _DEPTH_4_B_NIB >;” 添加到我的 ph y 设备树节点。我现在有以太网了,但还有一个后续问题。
一切就绪后,我看到了一个 "eth0",但同时也看到了一个 "mac2"(我想这与 FSL MC 的联网方式有关)。是否有一种简单的配置更改方法,可以让一切都变成 "eth0"?还是只有 "Mac2"?
我没有修改 DPC 文件的权限,所以如果我可以修改 DPL 文件或其他文件,那将会很有帮助。
感谢您的帮助。
你好,LFGP、
我决定试试我的 DPL 文件,同时将上游 6.14 Linux 内核切换到与 LSDK1812(几年前他们建立这个平台时使用的)相匹配的恩智浦 4.14 内核,这样我就能在 eth0 上调用 DPMAC2 了。
但我遇到了一个问题,FSL 管理综合体似乎将 eth0 连接到了 PHY 0,而不是 PHY 1(我相信我在 DTS 中的设置是正确的)。作为一项健全性检查(因为我对使用设备树还很陌生),我使用 PHY 1 的所有设置是否正确:
&emdio1 {
status ="okay" ;
mcp_debug_phy: emdio1_phy@1 {
兼容 ="ethernet-phy-ieee802.3-c22" ;
中断 =<0 2 0x4> ;
reg =<0x1> ;
phy-connection-type ="sgmii" ;
};
};
&dpmac2 {
phy-handle =<& mcp_debug_phy> ;
phy-connection-type ="sgmii" ;
};
但当我给 eth0 分配了一个 IP 地址后尝试 "ping "时,却没有出现任何错误或 rx/tx 计数增加(使用 ifconfig 进行检查)。当我使用 "ethtool eth0 "时,发现它显示连接到 PHYAD 0:
# ethtool eth0
eth0 的设置:
支持的端口:[ ]
支持的链接模式:未报告
支持暂停帧使用:无
支持自动协商:不支持
支持 FEC 模式:未报告
广告链接模式:未报告
广告暂停帧使用:无
广告支持自动协商:无
广告支持的 FEC 模式:未报告
速度:未知!
双工:
端口:双绞线
PHYAD:0
收发器:内部
自动协商:关闭
MDI-X:Unknown
Link detected: no
#
我没有更改 "fsl-ls1088a.dtsi "的默认设置、但如果希望使用 PHY 1,这样做对吗?
/* TODO: WRIOP (CCSR?) */
emdio1: mdio@0x8B96000 { /* WRIOP0: 0x8B8_0000, * E-MDIO1: 0x1_6000*/
compatible ="fsl,fman-memac-mdio";
reg =<0x0 0x8B96000 0x0 0x1000>;
device_type ="mdio";
little-endian; /* 强制驱动程序进入 LE 模式 */
/* 在 QDS 上不需要,但在 RDB 上需要 */
#address-cells =<1>;
#size-cells =<0> ;
};
DPL 中是否有什么需要调整的地方,以便连接正确的 PHY?
非常感谢你们的帮助。
亲爱的@brian-wood,希望这条信息能让你感觉良好。
我需要澄清一下你的自定义板。
你在定制板中使用 LS1048A 吗?或者你正在使用的 Layerscape 设备是什么?
您的设计是基于 LS1048ARDB 吗?恩智浦没有 LS1048ARDB。
另一方面,您可以在 DPAA 参考手册中找到 DPL 设置。
BR
LFGP
嗨,LFGP,
快速检查一下,这个 ls1048ardb 平台使用的是 2018.09 版本的 uboot 和 10.12.0 版本的 fsl_mc,我可以在这个平台上使用 6.14 Linux 内核吗?我想知道,我在使用 FSL 管理综合体调用 DPL 节点时遇到的恩智浦/FSL 内核驱动程序错误是否是由于 fsl_mc 支持的内容不匹配(并导致 mc_send_command() "不支持的操作 "失败)?
我已经阅读了前面提到的文档链接,但无法链接到eth0,因为我处于部分状态(由于在Linux内核启动期间启用 DPL 文件时出现 “不支持的操作” 失败)。启动后运行 “ls-listni、restool 等...” 时,我确实看到了同样的 “不支持的操作”,这使我觉得我的 fsl_mc、restool 和 Linux 内核 6.14 版本不匹配。
下面是更多的 uboot 信息,希望对您有所帮助:
U-Boot 2018.09 gpu_bl_01Feb2021 tf/cpsw-15234-bl-u-boot a996f0a3(2021 年 2 月 1 日-18:04:24 -0700)
SoC:LS1048A Rev1.0 (0x87032110)
时钟配置:CPU0 (A53): 1200 MHz CPU1 (A53): 120 0 MHz CPU2 (A53): 1200 MHz
CPU3 (A53): 1200 MHz
总线:500 MHz DDR:1600 MHz
RESET 配置字
(RCW):00000000: 30004014 00000030 00000000 000030 00000000
000010:00000000 0000 0000 0020000 0020000 00000000
000020:02e12980 00000080 00000000 0000000
00000030:00fff054 00000000 00000000 00000000
00000040:
00000000 00000000 0000000
00000040:00000000 00000000 00009:00000000 0000000 00000000
000070:33330002 00009555
I2C:就绪
动态随机存取存储器(DRAM):根据训练值初始化
DDR 控制器
内存初始化正常,检查 ERR_D ETECT 寄存器后在 DDRC 上没有错误
ERR_DETECT=0
3.9 GiB
DDR 3.9 GiB(DDR4,64 位,CL=12,ECC 开 启)
警告:请在 cpo_sample = 0x4b board >/
**boot_all_cores env var=true...
继续唤醒二级内核从 fbd4b000 开始
所有 (4) 个内核都已启动。
使用 SERDES1 协议:18 (0x12)
使用 SERDES2 协议:13 (0xd)
MMC: FSL_SDHC: 0
从闪存加载环境...OK
In: serial
Out: serial
Err: serial
Model:Boeing Dual MCP Green V0.2_1 (NXP Layerscape 1048a)
Net:DPMAC2@sgmii [PRIME]
Warning:DPMAC2@sgmii (eth0) using random MAC address - 16:af:d1:f3:8a:cf
crc32+
fsl-mc:启动管理复杂程序...成功
fsl-mc:管理综合体已启动(版本:10.12.0,启动状态:0x1)
启用 1000BT 全双工/半双工广告按任意键停止自动启动:0
亲爱的@brian-wood、
LS1088A 和 LS1048A 添加新 DPNI 的程序相同,请查看我上一篇文章中的链接。
感谢你的回复,我已经通读了恩智浦关于这款基于LS1048ardB的定制板的许多文档(我猜有四个GPP内核与LS1088ardB略有不同)。这是一个大约 5 年前开发的平台,我继承了它并将其用于简单的 dpmac2 以太网概念验证。
我添加了一些驱动程序调试代码,可以看到这些 dmesg(从最后一次成功的 fsl_mc 调用到 "不支持的操作 "故障),并认为可能是我的 DPL 文件中的某些设置不正确导致了故障(见所附 DPL dts):
[ 14.200954] FSL_MC_DPRC DPRC.1:BJW:(mc_send_command)FSL MC 响应:0,状态:命令成功完成 (0x0)
[ 14.211772] FSL_MC_DPRC DPRC.1:BJW:(dpni_set_pools)FSL MC 调用 mc_send_command()
[ 14.226219] fsl_mc_dprc dprc.1:BJW:(mc_send_command)FSL MC 响应:0,状态:不支持的操作 (0xb)
[ 14.236254] FSL_DPAA2_ETH DPNI.1:dpni_set_pools() 失败
[ 14.241672] fsl_dpaa2_eth dpni.1:BJW:(dpaa2_eth_bind_dpni)错误:-524
我的 DPL 文件是根据我从恩智浦文档(如https://docs.nxp.com/bundle/GUID-487B2E69-BB19-42CB-AC38-7EF18C0FE3AE/page/GUID-C254A494-0853-4C94-8...中看到和读到的示例编写的。
我不太确定我可能需要提供哪些信息来帮助根本原因出现 DPMAC2 @sgmii 以太网问题(我能够启动这个平台并使用以太网进行 uboot/tftp),但无法在 Linux 中启动并运行。因此,如果还需要其他信息,我很乐意提供。