ZHCAEL2 October 2024 AM3351 , AM3352 , AM3354 , AM3356 , AM3357 , AM3358 , AM3359 , AM4372 , AM4376 , AM4377 , AM4378 , AM4379 , AM620-Q1 , AM623 , AM625 , AM625-Q1 , AM62A1-Q1 , AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1 , AM62P , AM6411 , AM6412 , AM6421 , AM6422 , AM6441 , AM6442
在 TI 基于 Arm? 的處理器上,有兩個在 Linux 引導期間初始化的驅動程序:MDIO 驅動程序以及 CPSW 和/或 PRU_ICSSG 驅動程序。MDIO 驅動程序用于與以太網 PHY 通信。CPSW 和/或 PRU_ICSSG 驅動程序可以設置以太網 MAC。為了檢查這些驅動程序是否已正確初始化,需要檢查 DUT 的引導日志。此時將出現(xiàn)以下初始化階段:
以下日志顯示了初始化過程中應該執(zhí)行的操作的示例。為每行打印的時間戳在不同的引導序列之間可能不同。
[ 1.060850] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
[ 1.095345] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[ 1.098179] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
[ 1.098198] davinci_mdio 8000f00.mdio: phy[1]: device 8000f00.mdio:01, driver TI DP83867
[ 1.098246] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA01103, cpsw version 0x6BA81103 Ports: 3 quirks:00000006
[ 1.098500] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.5
[ 1.098505] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
[ 1.099141] pps pps0: new PPS source ptp0
[ 1.099456] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
[ 1.120288] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19在此示例中,MDIO 驅動程序是 davinci_mdio,CPSW 驅動程序是 am65-cpsw-nuss。DUT 上有兩個 TI DP83867 PHY,預期的 PHY 地址將自舉至地址 0 和 1。MDIO 驅動程序在電路板 DTS 中指定的這些地址處檢測到這些 PHY,并將 PHY 連接到 DP83867 PHY 驅動程序。在啟動序列之前未連接以太網電纜,因此不會顯示鏈路 up 狀態(tài)消息。
以下日志顯示了 MDIO 驅動程序掃描總線以查找在 DUT 的 DTS 文件中定義的以太網 PHY。這是符合預期的正常初始化序列。此過程將確定 PHY 供應商,也將確定相應的 PHY 驅動程序。
[ 6.902614] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:01] driver [TI DP83867] (irq=POLL)
[ 6.902648] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii-rxid link mode
[ 6.938874] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
[ 6.938911] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode電路板 DTS 文件中定義的 PHY 然后由相應 DTS 定義中的 CPSW 端口引用。以下代碼是從 TI EVM 提取的一段編輯過的代碼,其中展示了 MDIO 和用于以太網端口的 PHY,以及在 Linux 引導期間如何在 Linux 控制臺中識別 MDIO 和 PHY。
A DTS PHY node example, shortened for discussion purposes
&cpsw3g_mdio {
cpsw3g_phy0: ethernet-phy@0 {
reg = <0>; <-- check PHY address, verify this is correct
......
};
};
This line shows the PHY defined in the DTS being identified
[ 6.938874] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)如果 MDIO 驅動程序無法與以太網 PHY 通信,則可能會發(fā)生多個錯誤,這些錯誤要么與 DTS 有關,要么由于硬件實施問題導致 PHY 狀態(tài)出現(xiàn)問題。
現(xiàn)在,以太網 PHY 已經被識別,接下來可以查詢這些 PHY 以查看是否與鏈路伙伴建立了鏈路。如果連接了以太網電纜并建立了鏈路,DUT 控制臺上會顯示以下日志。數(shù)據比特率和雙工模式在建立鏈路時商定。請注意,在此示例中,速度為 1Gbps、鏈路為全雙工、以太網接口隨時可用。
[ 11.042192] am65-cpsw-nuss 8000000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[ 11.042255] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes readyTI EVM 上的以太網速度和雙工模式在鏈路伙伴之間通過自動協(xié)商確定。上面的消息顯示了一個成功的初始化序列。
如果驅動程序初始化有問題,建議參考與電路板設計相關的 TI EVM,檢查電路板 DTS。以下代碼是用于定義 TI SK-AM62B-P1 EVM 的 CPSW 接口(以太網 MAC)的 DTS 文件示例,可用作參考。
以下 DTS 示例展示了在使用定制電路板 DTS 時需要驗證的一些檢查點。
Linux Source tree directory: arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi
...
&cpsw3g {
bootph-all;
pinctrl-names = "default";
pinctrl-0 = <&main_rgmii1_pins_default>; <-- verify pin mux is correct
};
&cpsw_port1 {
bootph-all;
phy-mode = "rgmii-rxid"; <-- verify interface mode is correct
phy-handle = <&cpsw3g_phy0>; <-- verify phy name is referenced correctly
};
...
&cpsw3g_mdio {
bootph-all;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&main_mdio1_pins_default>; <-- verify pin mux is correct
cpsw3g_phy0: ethernet-phy@0 {
bootph-all;
reg = <0>;
ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; <-- rx clock delay
ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
ti,min-output-impedance;
};
};章節(jié)摘要:
以下是表明初始化過程成功的條件: