前言
-
开发板型号: 【正点原子】 的 RK3568 开发板
-
使用 虚拟机 ubuntu 20.04 收到单独 编译 RK3568 u-boot
-
【问题】u-boot 千兆网络无法ping 通?Linux 下千兆网络正常,说明:开发板硬件正常
-
u-boot 下网络如果通了,后面直接烧写更新 u-boot 本身 或者 Linux 系统镜像、根文件系统等,可以直接在 u-boot 模式使用网络功能,如 tftp 进行烧写,甚至使用 nfs 共享进行启动Linux
为何无法 ping 通 PC
-
u-boot 下网络设备识别正常了,这里有个前提:如果完整烧写 官方的 镜像,包括 resource.img 等,u-boot 网络就可以正常ping 通,如果自己修改了 emmc 分区,并且只烧写 u-boot,发现无法 ping 通。
-
u-boot 可能并且提示 resource.img 镜像找不到,那么看一下 rockchip u-boot 的代码,确认这个 resource.img 的作用。
-
大体看了一下,得到一个初步的结论: 这个
resource.img
镜像,在 u-boot 阶段需要使用,里面保存了设备树 dtb 等,并且【Linux 的 设备树 dtb】 -
这就是说明: u-boot 的 设备树其实没有使用,或者启动时被
resource.img
镜像 【替换了】
更新 u-boot 设备树
-
这里直接把 Linux 设备树相关的文件替换 u-boot 下的设备树源文件,由于比较多,需要替换一些 rk3568 相关的dtsi、dt-bindings 头文件,最终编译 u-boot 通过后,就可以了
-
【需要关闭 u-boot 下】的使用 resource.img 镜像的配置,否则还是无法使用 u-boot 本身的 设备树 dtb。
-
设置一下gcc 交叉编译工具链的环境变量,先全新编译一遍
./make.sh atk_dlrk3568
,然后 进入make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- atk_dlrk3568_defconfig
进行图形配置
- 取消勾选
[ ] Enable support for rockchip resource image
,保存后重新编译 u-boot,./make.sh
烧写与运行
- 烧写后,发现 u-boot 网络可以 ping 通了。问题解决
=> setenv ipaddr 192.168.10.8
=> setenv netmask 255.255.255.0
=> setenv gatewayip 192.168.10.1
=> setenv serverip 192.168.10.10
小结
-
u-boot 默认使用 Linux 设备树 dtb,并且需要放在 resource.img 分区,如果自己分区,需要关闭 【rockchip】u-boot 的 resource 镜像配置,使用 u-boot 的设备树
-
u-boot 默认的设备树 gmac 无法ping 通,需要更新到 Linux 内核的设备树,可能是 时钟、晶振、配置或者复位、电源引起的,后面抽时间定位一下区别