页次: 1
自己做了个 D1s + LAN8720 的测试板,25MHz 时钟源来自 PG11(EPHY-25M),RMII 接口用到的数据线及复位脚全都是 PG 口。软件上用的是 Tina2.0 SDK,设备树和内核已按照手册配置好,其他占用了 PG 口的外设都删掉了,用 SD 卡启动系统。先不插网线,使用 ifconfig eth0 up 启动网卡,测量发现 CLKIN 的 25MHz 和 TXCK 的 50MHz 两个频率都可以正常输出,估计硬件设计没问题。
此时的日志:
root@TinaLinux:/# ifconfig eth0 up
libphy: 4500000.eth: probed
sunxi-gmac 4500000.eth eth0: eth0: Type(7) PHY ID 0007c0f1 at 0 IRQ poll (4500000.eth-0:00)
看起来一切正常。插入网线,网口的绿灯亮了,黄灯闪了几下,不到 1 秒就都熄灭,然后寄了。
此时的日志:
root@TinaLinux:/# Generic PHY 4500000.eth-0:00: Master/Slave resolution failed, maybe conflicting manual settings?
------------[ cut here ]------------
WARNING: CPU: 0 PID: 13 at drivers/net/phy/phy.c:716 phy_error+0xe/0x42
Modules linked in:
CPU: 0 PID: 13 Comm: kworker/0:1 Tainted: G W 5.4.61 #30
Workqueue: events_power_efficient phy_state_machine
sepc: ffffffe00028ade6 ra : ffffffe00028b676 sp : ffffffe00394fd90
gp : ffffffe00068c264 tp : ffffffe003930ac0 t0 : ffffffe0006994c8
t1 : 0000000000000001 t2 : 0000000000000000 s0 : ffffffe00394fdb0
s1 : ffffffe002f99000 a0 : ffffffe002f99000 a1 : 000000000000000a
a2 : 00000000000000e2 a3 : ffffffe000638c40 a4 : 0000000000000000
a5 : ffffffe003930ac0 a6 : 0000000000000001 a7 : 0000000000000001
s2 : ffffffe002f99000 s3 : ffffffffffffffbd s4 : 0000000000000000
s5 : 0000000000000000 s6 : 0000000000000005 s7 : ffffffe002f994f0
s8 : 0000000000000001 s9 : 0000000000000402 s10: 0000000000000000
s11: 0000000000000000 t3 : ffffffffffffffff t4 : 0000000000000000
t5 : 0000000000000008 t6 : ffffffe0006960b8
sstatus: 0000000200000120 sbadaddr: 0000000000000000 scause: 0000000000000003
---[ end trace 450cc8d4d24bd3a0 ]---
网上查了好久,国外 I.MX6 的用户碰到过这个问题,说是打了厂家补丁解决的。请问大佬们,全志上这个问题该怎么解决呢?
是这样的,D1s的MQ补丁包里控制台是串口0,我需要改为串口1,在查了帖子和资料后,我做了如下修改:
device/config/chips/d1/configs/mangopi_mq_rgb800x480_gt9xx/env.cfg
- earlyprintk=sunxi-uart,0x02500000
- console=ttyS0,115200
+ earlyprintk=sun02i-uart,0x02500400
+ console=ttyS1,115200
device/config/chips/d1/configs/mangopi_mq_rgb800x480_gt9xx/sys_config.fex
- uart_debug_port = 0
- uart_debug_tx = port:PE02<6><1><default><default>
- uart_debug_rx = port:PE03<6><1><default><default>
+ uart_debug_port = 1
+ uart_debug_tx = port:PG06<2><1><default><default>
+ uart_debug_rx = port:PG07<2><1><default><default>
device/config/chips/d1/configs/mangopi_mq_rgb800x480_gt9xx/linux5.4/board.dts
- uart1_pins_b: uart1_pins
- uart_index = <0x1>;
+ uart1_pins_b: uart1_pins@1 // 这里让串口1格式和其他串口都一致
+ uart_index = <0x0>; // 不让btlpm占用串口1
lichee/linux-5.4/arch/riscv/boot/dts/sunxi/board.dts
- uart1_pins_b: uart1_pins
- uart_index = <0x1>;
+ uart1_pins_b: uart1_pins@1 // 原因和上面一样
+ uart_index = <0x0>; // 原因和上面一样
lichee/linux-5.4/arch/riscv/boot/dts/sunxi/sun20iw1p1.dtsi
- status = "disabled";
- bootargs = "console=ttyS0,115200n8 ...
- stdout-path = "serial0:115200n8";
+ status = "okay"; // 串口1使能
+ bootargs = "console=ttyS1,115200n8 ... // chosen 部分
+ stdout-path = "serial1:115200n8"; // chosen 部分
lichee/brandy-2.0/u-boot-2018/include/configs/sunxi-common.h
+ #undef CONFIG_CONS_INDEX
+ #define CONFIG_CONS_INDEX 2
修改的地方有:env.cfg里配置控制台为ttyS1、sys_config.fex里初始化调试串口为串口1、board.dts里不让外设占用串口1、sun20iw1p1.dtsi里是能串口1并配置内核启动参数里的控制台为串口1、sunxi-common.h里强制定义CONFIG_CONS_INDEX为2(即串口1)。
目前的现象:串口线接串口1,SD启动,已经可以看到完整的打印信息。本以为正确了,结果当我输入任意字符时(包括回车)终端都会原封不动的返回来,并不能进入系统! 当我刷入xboot固件时,发现串口1可以正常输入命令并交互,说明串口1及其外围硬件是没问题的。请问是哪里修改的不到位吗?
页次: 1