1、环境介绍
硬件:飞凌OK527
软件:原厂t527-tina5.0-aiot-v1.4 sdk(buildroot,Linux 5.15)
2、T527 PCIe 资源
T527 集成一个 PCIe 2.1 x1 Root Complex 控制器,支持 Gen1/Gen2 速率、带 4 路 DMA 与 MSI 中断,并支持 AER 和 ASPM 等高级特性,但与 USB3.1 共享 Combo PHY,不能同时使用。
3、原理图查看

小结如下:
WAKEN Pin:PH12
PERSTN Pin:PH11
4、内核配置
t527 的 pcie 只支持 rc 模式:
CONFIG_AW_PCIE_RC=y
CONFIG_AW_INNO_COMBOPHY=y
5、设备树配置
&combophy {
resets = <&ccu RST_BUS_PCIE_USB3>;
phy_use_sel = <0>; /* 0:PCIE; 1:USB3; 2:PCIE_USB3_U2 */
status = "okay";
};
&pcie {
reset-gpios = <&pio PH 11 GPIO_ACTIVE_HIGH>;
wake-gpios = <&pio PH 12 GPIO_ACTIVE_HIGH>;
pcie1v8-supply = <®_bldo3>;
pcie3v3-supply = <®_dcdc4>;
status = "okay";
};
6、测试
pcie 控制器 log:
root@T527-buildroot:/ # dmesg | grep pcie
[ 5.560629] sunxi-pcie 4800000.pcie: host bridge /soc@3000000/pcie@4800000 ranges:
[ 5.569153] sunxi-pcie 4800000.pcie: err 0x0020000000..0x0020ffffff -> 0x0020000000
[ 5.578249] sunxi-pcie 4800000.pcie: IO 0x0021000000..0x0021ffffff -> 0x0021000000
[ 5.587338] sunxi-pcie 4800000.pcie: MEM 0x0022000000..0x002fffffff -> 0x0022000000
[ 5.801923] sunxi:pcie-rc-4800000.pcie:[INFO]: pcie link up success
[ 5.829057] sunxi:pcie-rc-4800000.pcie:[ERR]: Speed change timeout
[ 5.835994] sunxi:pcie-rc-4800000.pcie:[INFO]: PCIe speed of Gen1
[ 5.843009] sunxi-pcie 4800000.pcie: PCI host bridge to bus 0000:00
[ 6.044214] sunxi:pcie-4800000.pcie:[INFO]: driver version: 1.1.2
root@T527-buildroot:/ # lspci
00:00.0 Class 0604: 16c3:abcd
以下使用一个pcie转网口模块(RTL8111H)进行测试,内核需要打开CONFIG_R8169:
root@T527-buildroot:/ # lspci
01:00.0 Class 0200: 10ec:8168
00:00.0 Class 0604: 16c3:abcd
root@T527-buildroot:/ # ifconfig -a
docker0 Link encap:Ethernet HWaddr 02:42:A3:53:D0:D5
inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0
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:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
enp1s0 Link encap:Ethernet HWaddr 00:E0:4C:B3:27:46
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)
eth0 Link encap:Ethernet HWaddr 7A:5A:01:64:7F:4A
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:172
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:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:140 (140.0 B) TX bytes:140 (140.0 B)
sit0 Link encap:IPv6-in-IPv4
NOARP MTU:1480 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)
root@T527-buildroot:/ # ifconfig enp1s0 up
root@T527-buildroot:/ # udhcpc -i enp1s0
udhcpc: started, v1.35.0
udhcpc: broadcasting discover
udhcpc: broadcasting select for 192.168.2.103, server 192.168.2.1
udhcpc: lease of 192.168.2.103 obtained from 192.168.2.1, lease time 7200
deleting routers
adding dns 192.168.9.1
adding dns 192.168.2.1
root@T527-buildroot:/ # ifconfig
docker0 Link encap:Ethernet HWaddr 02:42:A3:53:D0:D5
inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0
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:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
enp1s0 Link encap:Ethernet HWaddr 00:E0:4C:B3:27:46
inet addr:192.168.2.103 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::2e0:4cff:feb3:2746/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3821 (3.7 KiB) TX bytes:1452 (1.4 KiB)
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:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:140 (140.0 B) TX bytes:140 (140.0 B)
root@T527-buildroot:/ # ping www.baidu.com
PING www.baidu.com (183.2.172.17): 56 data bytes
64 bytes from 183.2.172.17: seq=0 ttl=53 time=7.687 ms
64 bytes from 183.2.172.17: seq=1 ttl=53 time=9.102 ms
7、参考文章
《Linux_PCIe_开发指南.pdf》
8、总结
略。
1547

被折叠的 条评论
为什么被折叠?



