資料介紹
Table of Contents
ADIN1300/ADIN1200 PHY Linux Driver
Supported Devices
Supported Boards
Description
The ADIN1200 is a low power single port 10/100 Mb Ethernet transceiver with low latency specifications primarily designed for industrial Ethernet applications.
The ADIN1300 is a low power single port Gigabit Ethernet transceiver with industry leading latency specifications primarily designed for industrial Ethernet applications.
This design integrates an Energy Efficient Ethernet PHY core plus all the associated common analog circuitry, input and output clock buffering, the management interface and subsystem registers as well as the MAC interface and control logic to manage the reset and clock control and pin configuration.
The 2 PHYs are similar from an interfacing perspective, meaning that the HW & SW interfaces are identical. The main difference is that the ADIN1300 supports gigabit speeds.
The PHY can be interfaced with the following: MII, RGMII, RGMII with internal delays (on RX, TX or both), RMII.
Source Code
Status
Source | Mainlined? |
---|---|
drivers/net/phy/adin.c | Yes |
Files
Function | File |
---|---|
driver | drivers/net/phy/adin.c |
compatibility layer for ADI kernel | drivers/net/phy/adin-compat.h |
Documentation | adi,adin.yaml |
Example platform device initialization
The ADIN PHY driver instantiates via Linux's phylib framework, which is typically enabled on most systems.
Depending on the MAC driver that is used and the operating mode (MII, RGMII, RMII), a device-tree entry for the PHY may or may-not be needed. The PHY can be configured via HW pins (see datasheet), or via SW.
Optional properties (for MAC):
- phy-mode: this is a standard Linux property for ethernet devices to select an operating mode for the PHY, it is typically configured in the MAC configuration, and the MAC uses it to configure the mode of the PHY. For the ADIN PHY, accepted values are: mii, rgmii, rgmii-id, rgmii-txid, rgmii-rxid, rmii
Optional properties (for PHY):
- adi,rx-internal-delay-ps: RGMII RX Clock Delay used only when PHY operates in RGMII mode with internal delay (phy-mode is 'rgmii-id' or 'rgmii-rxid') in pico-seconds. Accepted values: 1600, 1800, 2000, 2200, 2400, Default: 2000.
- adi,tx-internal-delay-ps: RGMII TX Clock Delay used only when PHY operates in RGMII mode with internal delay (phy-mode is 'rgmii-id' or 'rgmii-txid') in pico-seconds. Accepted values: 1600, 1800, 2000, 2200, 2400, Default: 2000.
- adi,fifo-depth-bits: When operating in RMII mode, this option configures the FIFO depth. Accepted values: 4, 8, 12, 16, 20, 24, Default: 8
Example: ethernet-mac0 { #address-cells = <1>; #size-cells = <0>; phy-mode = "rgmii-id"; ethernet-phy@0 { reg = <0>; adi,rx-internal-delay-ps = <1800>; adi,tx-internal-delay-ps = <2200>; }; }; ethernet-mac1 { #address-cells = <1>; #size-cells = <0>; phy-mode = "rmii"; ethernet-phy@1 { reg = <1>; adi,fifo-depth-bits = <16>; }; };
Enabling Linux driver support
Configure kernel with “make menuconfig” (alternatively use “make xconfig” or “make qconfig”)
- Hit the search button (typically the slash “/” key)
- Type ADIN_PHY, then hit Enter; if nothing shows up, the driver is not available in your kernel tree, please use the ADI linux tree
- Press 1 (the key), then hit Enter
- You should see the location + dependencies for enabling the driver
Linux Kernel Configuration Symbol: ADIN_PHY [=y] Type : tristate Prompt: Analog Devices Industrial Ethernet PHYs Location: -> Device Drivers -> Network device support (NETDEVICES [=y])│ (1) -> PHY Device support and infrastructure (PHYLIB [=y]) Defined at drivers/net/phy/Kconfig:208 Depends on: NETDEVICES [=y] && PHYLIB [=y]
Driver testing
Short version is: a cable is plugged into the ethernet port (to which the PHY is associated) and traffic starts to happen, as in a normal Linux OS environment.
But on the slightly more advanced side, see the sections below.
If NetworkManager isn't running, it sometimes works to obtain a DHCP lease via dhclient eth0 [or eth1 or eth2, depending which MAC is attached to the ADIN PHY].
ifconfig
This tool will display the general status of the available network interfaces. If they’ve obtained an IP address, RX packets/errors/dropped/etc, TX packets/errors/dropped/etc, MAC address, etc.
Typically, if both TX & RX values are incremented, it means that it is working. Also note that there are error counters; if only the TX/RX counters increment, something may be wrong in the configuration between MAC & PHY, or sometimes at the physical configuration (i.e. clocks not working, pins not connected properly, etc).
root@analog:~# ifconfig eth0 Link encap:Ethernet HWaddr d6:41:50:ed:3b:65 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:609895 errors:5 dropped:0 overruns:0 frame:0 TX packets:286926 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (647.6 MB) TX bytes:0 (38.7 MB) Interrupt:23 eth1 Link encap:Ethernet HWaddr 00:0a:35:03:73:d9 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:24 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:480 (480.0 B) TX bytes:480 (480.0 B)
ethtool
This tool queries the MAC & PHY via the MAC driver. The MAC driver should also allows access to the PHY registers.
ethtool can be used to show & override link settings and other parameters for the MAC & PHY.
Links for the tool:
- Official page with source code: https://mirrors.edge.kernel.org/pub/software/network/ethtool/
- Manual page: http://man7.org/linux/man-pages/man8/ethtool.8.html
Example: Seeing MAC & PHY info
root@analog:~# ethtool eth0 Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full ==== Example: Seeing MAC & PHY info ==== 1000baseT/Half 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Link partner advertised pause frame use: Symmetric Link partner advertised auto-negotiation: Yes Link partner advertised FEC modes: Not reported Speed: 100Mb/s Duplex: Full Port: MII PHYAD: 0 Transceiver: internal Auto-negotiation: on Link detected: yes
Example: changing link speeds
ethtool -s eth0 speed 10 duplex full autoneg off ethtool -s eth0 speed 100 duplex full autoneg off ethtool -s eth0 autoneg on
Example: MDI/MDIX/Auto-MDIX configuration
The PHY supports configuration of the MDI/MDI-X auto-switch for twisted pairs. This can also be configured via ethtool.
ethtool -s eth0 mdix auto # auto-mdix (there is no way to set preference; # default MDI is preferred) ethtool -s eth0 mdix off # MDI mode manual ethtool -s eth0 mdix on # MDIX mode manual
Example: PHY statistics
root@analog:~# ethtool --phy-statistics eth0 PHY statistics: total_frames_checked_count: 1870 length_error_frames_count: 342 alignment_error_frames_count: 0 symbol_error_count: 0 oversized_frames_count: 0 undersized_frames_count: 0 odd_nibble_frames_count: 0 odd_preamble_packet_count: 0 dribble_bits_frames_count: 0 false_carrier_events_count: 0
phytool
This tool is not very official, but it is very powerful for PHYs. It’s currently hosted here: https://github.com/wkz/phytool
Format of the command is:
phytool read eth0/0/phytool write eth0/0/ <16-bit-hex-value>
Example for reading the PHY ID:
root@analog:~# phytool read eth0/0/0x2 0x0283 root@analog:~# phytool read eth0/0/0x3 0xbc30
Accessing PHY-core registers
All registers from 0x00 to 0x1f (which are defined by the IEEE standard) can be accessed with just
phytool read eth0/0/phytool write eth0/0/
Reading an MMD reg
Since only Clause 22 is available accessing MMD regs needs to be done via registers 0x10 & 0x11.
All registers above register address 0x1f are MMD registers.
Example reading FcFrmCntL reg (lower half of the total_frames_checked_count value):
root@analog:~# phytool write eth0/0/0x10 0x940B root@analog:~# phytool read eth0/0/0x11 0x01c5
Writing an MMD reg
Example resetting the PHY:
root@analog:~# phytool write eth0/0/0x10 0xFF0C root@analog:~# phytool write eth0/0/0x11 0x1
adintool.sh - convenience phytool wrapper
Link: https://github.com/analogdevicesinc/wiki-scripts/blob/master/linux/adintool.sh
When downloading, make sure the script is made executable.
Usage
Usage: adintool.sh[args] setup - setup phytool and ethtool required for demo WARNING: will override system tools dump_regs - show all reg values WARNING: some registers will be cleared on read phy_read_mmd - read value from a MMD register phy_write_mmd - write value to MMD register cable_diagnostics - run cable diagnostics on cable WARNING: puts device into special mode. device won't send data during this mode
First setup
Needs be run the first time. Make sure that there is internet connectivity and then install basic things:
./adintool.sh setup
dump_regs
The most useful command is to dump registers. This will read all registers that are specified in the datasheet and show their current value.
Should be used with caution as some registers get cleared on read, and can interfere with some internal operation of the Linux driver (for EEE for example).
Example:
./adintool.sh dump_regs eth0 [could be eth1]
cable_diagnostics
This runs a sequence of register changes to put the PHY into diagnostics mode, which interrupts normal operation.
Then a diagnostics will be run on the cable and the results of the registers will be read back.
./adintool.sh cable_diagnostics eth0
Throughput testing - iperf
This is a more system-general test but it also validates the PHY.
On one of the endpoints with the ADIN1300, run:
iperf -s
and on another system
iperf -c
Then reverse the commands on the hosts. iperf only works in one direction.
Data integrity testing
One one side, generate a file with random data (say 1GB)
dd if=/dev/urandom of=test.data bs=1M count=1000 sha256sum test.data
Then transfer the data to the other side with scp,ftp,etc:
scp test.data root@
On the other host check the hash
sha256sum test.data== should be identical with the first hash
Ethernet pointers
- netdev mailing list: netdev [at] vger [dot] kernel [dot] org
- ADIN1300硅異常
- UG-1635:評(píng)估ADIN1300堅(jiān)固、工業(yè)、低延遲和低功耗10 Mbps、100 Mbps和1 Gbps以太網(wǎng)PHY
- ADIN1200:堅(jiān)固、工業(yè)、低功耗、10 Mbps和100 Mbps以太網(wǎng)PHY數(shù)據(jù)表
- ADIN1200/ADIN1300評(píng)估板軟件
- ADIN1200 IBIS型號(hào)
- ADIN1300 IBIS型號(hào)
- AN-2043:配置ADIN1200以太網(wǎng)PHY
- AN-2047:配置ADIN1300以太網(wǎng)PHY
- 帶電容耦合器的ADIN1300和ADIN1200用戶指南
- ADIN300和ADIN1200 wiki Page
- ADIN1200/ADIN1300 Evaluation Board Software
- ADIN1200 IBIS Model
- ADIN1300 IBIS Model
- AN-2043: Configuring the ADIN1200 Ethernet PHY
- AN-2047: Configuring the ADIN1300 Ethernet PHY
- ac1200雙頻無(wú)線路由器怎么設(shè)置 4557次閱讀
- 西門子S7-1200與編碼器的連接、編程實(shí)例 4877次閱讀
- 西門子1200CPU與MEV3000變頻器進(jìn)行DP通訊設(shè)置 1437次閱讀
- 西門子1200PLC帶伺服8軸案例 3675次閱讀
- 如何使用Checkmk監(jiān)控Linux服務(wù)器? 1015次閱讀
- S7-1200通過(guò)PROFINET組態(tài)HMI連接 3793次閱讀
- S7-1200如何實(shí)現(xiàn)配方的寫入和讀取功能 4241次閱讀
- ADI公司推出多款可靠PHY 1552次閱讀
- 基于pSOS和TM1300媒體處理器實(shí)現(xiàn)多媒體通信系統(tǒng)的應(yīng)用方案 2083次閱讀
- 干貨:如何管理Linux系統(tǒng)上Firefox瀏覽器的任務(wù)管理器 2789次閱讀
- 淺談Linux美國(guó)服務(wù)器常見(jiàn)操作系統(tǒng) 2452次閱讀
- S7-1200和S7-1200進(jìn)行S7通信的詳細(xì)資料說(shuō)明 2.8w次閱讀
- Linux搭建Web服務(wù) 5785次閱讀
- 在異構(gòu)處理器上跑Linux方法介紹 1428次閱讀
- 基于TM1300的嵌入式網(wǎng)絡(luò)視頻編碼器的設(shè)計(jì) 1458次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費(fèi)下載
- 0.00 MB | 1491次下載 | 免費(fèi)
- 2單片機(jī)典型實(shí)例介紹
- 18.19 MB | 95次下載 | 1 積分
- 3S7-200PLC編程實(shí)例詳細(xì)資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識(shí)別和講解說(shuō)明
- 4.28 MB | 18次下載 | 4 積分
- 5開(kāi)關(guān)電源原理及各功能電路詳解
- 0.38 MB | 11次下載 | 免費(fèi)
- 6100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 7基于單片機(jī)和 SG3525的程控開(kāi)關(guān)電源設(shè)計(jì)
- 0.23 MB | 4次下載 | 免費(fèi)
- 8基于AT89C2051/4051單片機(jī)編程器的實(shí)驗(yàn)
- 0.11 MB | 4次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費(fèi)
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費(fèi)
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費(fèi)
- 5555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33562次下載 | 免費(fèi)
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費(fèi)
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費(fèi)
- 8開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21539次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537793次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191183次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183277次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138039次下載 | 免費(fèi)
評(píng)論
查看更多