海思网络错误(烧录报tftp错误等)解决思路分享

📅 2026/7/8 3:45:04 👁️ 阅读次数 📝 编程学习
海思网络错误(烧录报tftp错误等)解决思路分享

下面内容分三部分,第一、二部分讲的是遇到的问题和我尝试过的解决思路,最后一部分讲的是整理后的可行的最终解决方法

1.问题现象一描述:镜像编译完成之后,烧录时候报错


尝试解决方法1:boot使用官网347镜像的,后面四个分区使用我们烧录的镜像,可以正常烧录,并且开机,说明是boot分区的问题
遇到新的问题:板子和电脑ping不通,双方都是自己ping自己可以ping通

尝试解决方法2:尝试把SDK1.0.1.0的补丁打进入,再重新编译烧录

然后修改~bsp/tools/pc/uboot_env/env_text/hi3519dv500/emmc_env.txt
添加如下内容

ipaddr=192.168.1.168 serverip=192.168.1.99 netmask=255.255.255.0 gatewayip=192.168.1.1

最后再重新编译镜像,但网口烧录还是报同样的错误

尝试解决方法3:更换glibc编译器,去官网仓库扒下来glibc编译器

运行脚本,然后再opt/linux/x86-arm目录下生成对应环境

最后生成glibc版本的镜像
然后网口烧录的时候还是报错,说明不是编译器问题

尝试解决方法4:使用串口烧录
烧录了3h,成功烧录
但是仍然板端和pc端无法互ping

2.问题现象二描述:网线插上之后找不到网络标识

临时解决方法:
首先给板子烧录官方的镜像,然后再烧录自己的镜像,最后开机后在板端执行下面命令,但是这个用的boot分区是官方镜像提供的,其余四个分区是我们自己烧录的,治标不治本:
ifconfig eth0 hw ether 00:c3:9f:df:6b:1e
ifconfig eth0 192.168.1.168 netmask 255.255.255.0 up
route add default gw 192.168.1.1
ifconfig eth0

3.最终解决–烧录报错以及双端无法ping通

解决方法:
(1)排除硬件连接问题
首先进入u-boot界面,手动设置env,配好mac、ip等相关信息,确保物理连接是通的

发现手动配置后,网络是可达的,证明物理连接是通的,不是网线等硬件问题,所以接下来就是把mac地址、双端ip地址等信息写在对应的分区中,例如boot_image.bin、env.bin、kernel
(2)修改相应分区网络设置

修改点1:Hi3519DV500_SDK_V1.0.1.0\smp\a55_linux\source\bsp\tools\pc\uboot_env\env_text\hi3519dv500\emmc_env.txt

对应解决错误:U-Boot 网络/启动环境,emmc_env.bin分区,把网络参数写入 env 文本后,重新生成 env 镜像,烧录后无需每次进 U-Boot 手动 setenv,解决- 网络升级、tftp下载、ping调试的错误

修改点2:Hi3519DV500_SDK_V1.0.1.0\smp\a55_linux\source\bsp\tools\pc\uboot_env\env_text\hi3519dv500\emmc_tee_env.txt

对应解决错误:emmc_env.bin分区,emmc_env.txt修改,emmc_tee_env.txt也要对应修改

修改点3:Hi3519DV500_SDK_V1.0.1.0\open_source\u-boot\u-boot-2022.07\include\configs\hi3519dv500.h
修改CONFIG_IPADDR=192.168.1.168
CONFIG_SERVERIP=192.168.1.99
CONFIG_EXTRA_ENV_SETTINGS: ethaddr/mdio_intf/phy_addr
CONFIG_GMAC_PHY0_INTERFACE_MODE 1
对应解决错误:emmc_tee_env.txt(flash环境变量) > U-Boot编译默认值hi3519dv500.h谁在运行时存在,就用谁

修改点4:Hi3519DV500_SDK_V1.0.1.0\open_source\linux\linux-5.10.y\arch\arm64\boot\dts\vendor\hi3519dv500.dtsi
修改mac-address = [02 00 35 19 d5 00];
对应解决错误:Linux 内核网卡驱动,在设备树里面直接给mac地址写死防止随机生成,这里这个mac是给内核用的

修改点5:Hi3519DV500_SDK_V1.0.1.0\open_source\linux\linux-5.10.y\arch\arm64\boot\dts\vendor\hi3519dv500-demb.dts
修改phy-mode = “rmii”;
对应解决错误:把rmgii-id修改成rmii,板端是百兆而不是千兆

修改点6:HiSi\Hi3519DV500_SDK_V1.0.1.0\open_source\linux\linux-5.10.y\arch\arm64\boot\dts\vendor\hi3519dv500-demb-tee.dts
修改phy-mode = “rmii”;
对应解决错误:

==修改点7:(没明白什么意思)==Hi3519DV500_SDK_V1.0.1.0\open_source\linux\linux-5.10.y\drivers\net\ethernet\vendor\gmac\gmac.c
修改res = platform_get_resource(… MEM_AXI_BUS_CFG_IOBASE);
if (res) { … } else { priv->axi_bus_cfg_base = NULL; }
对应解决错误:允许“没有 AXI 配置资源”的平台也能正常跑 GMAC

修改点8:Hi3519DV500_SDK_V1.0.1.0\smp\a55_linux\source\bsp\rootfs_scripts\rootfs_base\etc\init.d\S80network

Hi3519DV500_SDK_V1.0.1.0\smp\a55_linux\source\bsp\rootfs_scripts\rootfs\etc\init.d\S80network

Hi3519DV500_SDK_V1.0.1.0/smp/a55_linux/source/bsp/pub/rootfs_musl_arm64/etc/init.d/S80network

对应解决错误:提前拉起lo,确保 loopback 网络接口被明确激活,避免因接口未处于 UP 状态导致本地网络通信、服务绑定或系统组件异常

(3)测试
修改完之后重新编译烧录
上板测试,ifconfig可以找到网络并且可以ping通pc端

板端 ping pc端

pc端 ping 板端