海思AI芯片(Hi3559/Hi3516)开发(一):开发环境搭建——从零配置网络与文件共享 1. 开发环境搭建前的准备工作第一次拿到海思Hi3559或Hi3516开发板时很多开发者会感到无从下手。我刚开始接触这块板子时也踩过不少坑最头疼的就是如何快速建立稳定的开发环境。与常见的树莓派等开发板不同海思芯片的开发环境配置有其特殊性需要特别注意网络和文件共享的设置。开发板通常有两种连接方式串口和网络。串口连接虽然简单但只能进行基础操作效率低下。真正的开发效率提升来自于稳定的网络连接和便捷的文件共享。我建议新手开发者按照这个顺序操作先通过串口完成基础网络配置再建立网络连接最后配置NFS文件共享。这样能避免很多后期调试的麻烦。在开始之前你需要准备以下硬件和软件海思Hi3559/Hi3516开发板以EMB-7540为例串口转USB线建议使用FT232芯片的稳定型号网线建议Cat5e及以上Ubuntu主机推荐18.04或20.04 LTS版本串口调试工具推荐使用MobaXterm或SecureCRT2. 基础串口连接与网络配置2.1 串口连接实操开发板通常会引出两个串口UART0用于系统调试COM3供用户程序使用。我习惯使用UART0进行初始配置因为这是最可靠的连接方式。连接时要注意三个关键参数波特率115200、8位数据位、无校验位。很多新手遇到的第一个坑就是波特率设置错误导致接收到的全是乱码。接线时有个小技巧先用万用表确认开发板串口的TX和RX引脚避免接反。我遇到过因为线序接反导致一整天调试无果的情况。连接成功后打开串口工具应该能看到类似这样的启动日志[ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Initializing cgroup subsys cpu ...2.2 网络接口配置通过串口登录后首先用ifconfig查看网络接口。海思开发板通常有eth0和eth1两个接口eth0是主要使用的网口。如果开发板没有获取到IP常见于新板子需要手动配置ifconfig eth0 192.168.1.100 netmask 255.255.255.0 route add default gw 192.168.1.1这里有个实际项目中的经验建议将开发板IP设置为与主机同网段的静态IP避免DHCP分配的IP发生变化影响开发。我曾经因为IP变动导致NFS挂载失效浪费了半天时间排查。测试网络连通性时不要只用ping命令。我建议用以下组合命令全面检测ping 192.168.1.1 -c 3 # 测试网关 ping 192.168.1.9 -c 3 # 测试主机 telnet 192.168.1.9 22 # 测试端口连通性3. 建立稳定的远程访问3.1 Telnet服务配置虽然SSH更安全但很多海思开发板默认只开放Telnet服务。开启Telnet服务的方法如下# 开发板上操作 vi /etc/inetd.conf # 确保telnet服务未被注释 /etc/init.d/inetd restart在主机端连接时我强烈建议使用支持会话保存的工具如MobaXterm。它不仅能记录操作历史还能方便地上传下载文件。连接成功后你会看到熟悉的Linux提示符[rootHi3516]#3.2 SSH服务进阶配置如果条件允许建议配置SSH服务提升安全性。先在开发板上安装opensshopkg update opkg install openssh-server然后修改SSH配置允许root登录vi /etc/ssh/sshd_config # 修改PermitRootLogin为yes /etc/init.d/sshd restart这里有个安全小技巧修改默认的22端口能减少被扫描的风险。我在实际项目中会将端口改为5位数的随机端口比如32456。4. NFS文件共享深度配置4.1 主机端NFS服务搭建在Ubuntu主机上安装NFS服务时很多人会漏装关键组件。完整的安装命令应该是sudo apt-get install -y nfs-kernel-server nfs-common rpcbind配置/etc/exports文件时我推荐使用以下参数组合这是经过多个项目验证的最稳定配置/home/yourname/nfs 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash,insecure)参数说明insecure允许非特权端口访问no_root_squash保持root权限sync同步写入避免数据丢失重启服务时要注意顺序否则可能导致挂载失败sudo service rpcbind restart sudo service nfs-kernel-server restart4.2 开发板挂载优化在开发板上挂载NFS时建议添加以下参数提升稳定性mount -t nfs -o nolock,tcp,rsize32768,wsize32768,timeo14,intr 192.168.1.9:/home/yourname/nfs /mnt/nfs参数解析rsize/wsize32768提高传输效率timeo14优化超时设置intr允许中断挂载操作我在项目中发现不加tcp参数在WiFi环境下极易断开连接。另外建议在/etc/fstab中添加自动挂载配置192.168.1.9:/home/yourname/nfs /mnt/nfs nfs nolock,tcp,rsize32768,wsize32768,timeo14,intr 0 05. 常见问题排查指南5.1 网络连接故障当遇到网络不通时建议按照以下步骤排查检查物理连接网口指示灯是否亮起用ifconfig确认IP配置正确使用arp -a查看ARP表是否学习到主机MAC地址用tcpdump抓包分析tcpdump -i eth0 -nn host 192.168.1.95.2 NFS挂载失败NFS问题通常出现在权限和版本兼容性上。首先确认主机防火墙是否放行了NFS端口建议暂时关闭测试showmount -e是否能显示共享目录/var/log/syslog中的错误信息我遇到过一个典型问题Ubuntu 20.04默认使用NFSv4而老版本开发板只支持NFSv3。解决方法是在主机端/etc/nfs.conf中添加[nfsd] vers3y5.3 性能调优技巧对于大文件传输可以通过以下设置提升NFS性能# 主机端 echo 32768 /proc/sys/net/core/rmem_default echo 32768 /proc/sys/net/core/wmem_default # 开发板端 mount -o remount,rsize65536,wsize65536 /mnt/nfs在长期项目中我建议使用自动化脚本完成环境配置。比如这个初始化脚本#!/bin/bash # 设置IP ifconfig eth0 192.168.1.100 netmask 255.255.255.0 # 挂载NFS mkdir -p /mnt/nfs mount -t nfs -o nolock,tcp 192.168.1.9:/home/yourname/nfs /mnt/nfs # 设置环境变量 echo export PATH$PATH:/mnt/nfs/bin /etc/profile