Link Layer & Hardware¶
MAC và PHY¶
SoC [ CPU | MAC ] --MII/RMII/RGMII--> [ PHY ] --MDI (magnetics)--> RJ45
^
'---- MDIO (quản lý PHY: thanh ghi, link status)
- MAC nằm trong SoC: DMA, FIFO, bộ lọc địa chỉ, timestamp.
- PHY là chip ngoài (hoặc tích hợp): mã hóa tín hiệu, auto-negotiation, phát hiện link.
- MDIO là bus 2 dây (MDC/MDIO) để MAC đọc/ghi thanh ghi PHY.
Giao diện MAC - PHY¶
| Giao diện | Tốc độ | Số tín hiệu data | Ghi chú |
|---|---|---|---|
| MII | 10/100M | 4 bit mỗi chiều | Cũ |
| RMII | 10/100M | 2 bit mỗi chiều | Ít chân hơn, cần clock 50 MHz |
| RGMII | 10/100/1000M | 4 bit mỗi chiều, DDR | Phổ biến nhất; cần xử lý clock delay |
| SGMII | 10/100/1000M | 1 cặp SerDes | Ít chân, cần SerDes |
RGMII delay
Lỗi bring-up thường gặp: link lên nhưng mất gói hoặc lỗi CRC vì sai delay 2 ns của clock. Delay có thể do PHY, MAC hoặc trace PCB cung cấp; chọn đúng phy-mode trong Device Tree (rgmii, rgmii-id, rgmii-rxid, rgmii-txid) và không bật delay hai lần.
Device Tree¶
ð0 {
phy-mode = "rgmii-id";
phy-handle = <&phy0>;
status = "okay";
mdio {
#address-cells = <1>;
#size-cells = <0>;
phy0: ethernet-phy@1 {
reg = <1>; /* địa chỉ PHY trên MDIO */
reset-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
reset-assert-us = <10000>;
};
};
};
Kernel dùng framework phylib (hoặc phylink cho SFP và SerDes) để quản lý PHY, báo link up/down cho MAC.
ethtool¶
ethtool eth0 # tốc độ, duplex, link detected
ethtool -s eth0 speed 100 duplex full autoneg off
ethtool -S eth0 # thống kê của driver (lỗi CRC, drop)
ethtool -i eth0 # driver, firmware
ethtool -k eth0 # offload (checksum, TSO, GRO)
ethtool -T eth0 # khả năng hardware timestamp (PTP)
ethtool --cable-test eth0 # TDR, nếu PHY hỗ trợ
Kiểm tra nhanh khi không lên link: ethtool eth0 | grep -i link, xem dmesg | grep -i phy, sau đó đọc thanh ghi PHY qua mii-tool hoặc phytool.
Switch (DSA)¶
Khi board có chip switch nối vào một cổng MAC của SoC, Linux mô hình hóa bằng DSA (Distributed Switch Architecture): mỗi cổng switch xuất hiện như một net_device riêng (lan1, lan2, ...), còn cổng nối SoC là conduit. Có thể gom các cổng vào bridge và được offload xuống phần cứng switch.
Xem thêm¶
- Hardware timestamp và PTP: Linux PTP.
- Layout PCB cho đường tín hiệu tốc độ cao: PCB Design.