4、开发环境准备:安装Ubuntu、配置网络、安装串口驱动、SSH连接开发板
地平线旭日X3/X5开发板的部署工作,本质上是在一个完整的嵌入式Linux开发环境中完成的。无论是交叉编译模型、烧写镜像,还是调试运行中的AI应用,都离不开一个稳定、干净、可复现的主机开发环境。本章将围绕“从零搭建开发环境”这一目标,系统讲解四个关键环节:Ubuntu操作系统的安装与选型、网络配置的要点、串口驱动的安装与验证,以及通过SSH连接开发板的方法。这四个环节环环相扣,任何一个环节的疏漏都可能导致后续开发工作停滞。我们将从原理出发,结合实战操作和常见误区,帮助你建立一套高效、可靠的开发环境。
上图展示了开发环境搭建完成后的整体链路。开发主机通过USB转串口线连接开发板的调试串口(UART0),用于查看底层启动日志和进入U-Boot/系统控制台;同时通过以太网连接开发板的网口,用于SSH远程登录、文件传输和AI应用调试。两条通道互为补充:串口是“最后一道防线”,即使网络不通也能进行底层干预;SSH则是日常开发的主要入口。下面我们逐一拆解每个环节的具体操作。
4.1 安装Ubuntu:选型与分区策略
核心原理:地平线官方的交叉编译工具链、AI工具链(如OE包、HBDK)以及Docker镜像,均基于Ubuntu LTS版本进行验证。选择正确的Ubuntu版本和系统架构,是避免“环境依赖地狱”的第一步。旭日X3/X5的SDK主要支持x86_64架构的Ubuntu 20.04(Focal)和22.04(Jammy),且要求内核版本不低于5.4。虽然Ubuntu 24.04已经发布,但考虑到部分底层驱动和库的兼容性,目前仍建议优先使用20.04或22.04。
| 对比项 | Ubuntu 20.04 LTS | Ubuntu 22.04 LTS | 推荐选择 |
|---|---|---|---|
| 内核版本 | 5.4 | 5.15 | 两者均可 |
| Python默认版本 | 3.8 | 3.10 | 22.04更优 |
| GCC默认版本 | 9.4 | 11.4 | 22.04更优 |
| 地平线OE包兼容性 | 官方首选 | 官方支持 | 20.04最稳 |
| Docker支持 | 良好 | 良好 | 均可 |
操作流程:安装Ubuntu时,建议采用“最小安装”模式,避免预装大量无关软件。磁盘分区方面,推荐至少预留100GB空间,其中/根分区分配60GB,/home分配30GB,swap分配8GB(与内存大小一致)。如果使用固态硬盘,建议开启TRIM支持。安装完成后,立即执行系统更新:
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential git vim net-tools curl wget \
ssh openssh-server net-tools usbutils
4.2 配置网络:静态IP与代理设置
核心原理:开发主机与开发板之间的网络通信,需要保证两者处于同一网段。开发板默认使用DHCP自动获取IP,但为了稳定调试,建议将开发主机配置为静态IP,并在路由器上为开发板绑定固定IP(或通过MAC地址分配)。此外,国内开发者访问外网资源(如GitHub、Docker Hub)时,可能需要配置代理。
操作流程:在Ubuntu中,使用netplan配置网络是最标准的方式。编辑/etc/netplan/01-network-manager-all.yaml文件:
network:
version: 2
renderer: NetworkManager
ethernets:
eth0:
dhcp4: no
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [114.114.114.114, 8.8.8.8]
应用配置并验证:
sudo netplan apply
ip addr show eth0
ping -c 3 192.168.1.1
如果使用代理,可以在/etc/environment中添加:
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
export all_proxy="socks5://127.0.0.1:7890"
# 开启IP转发
sudo sysctl -w net.ipv4.ip_forward=1
# 配置NAT(假设eth0为外网口,eth1为连接开发板的网口)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
4.3 安装串口驱动:识别与验证
核心原理:旭日X3/X5开发板通常配备USB转串口调试接口,板载芯片多为CP2102或CH340。在Ubuntu系统中,这些芯片的驱动已经集成在内核中,但部分新版本芯片可能需要手动安装驱动。串口连接是开发板调试的“生命线”,尤其是在系统无法正常启动或网络不通时,只能通过串口进行故障排查。
操作流程:首先,使用USB线连接开发板的调试串口与开发主机。然后执行以下命令验证驱动是否加载:
# 查看USB设备列表
lsusb
# 查看内核日志,确认驱动加载
dmesg | grep -i "cp210x\|ch341\|ttyUSB"
# 查看串口设备节点
ls -l /dev/ttyUSB*
如果lsusb显示设备ID为10c4:ea60(CP210x)或1a86:7523(CH340),且/dev/ttyUSB0存在,说明驱动已正常加载。如果设备节点不存在,可以尝试手动加载模块:
sudo modprobe cp210x
sudo modprobe ch341
接下来,使用串口终端工具(如minicom、picocom或screen)连接开发板。推荐使用picocom,因为它支持波特率自动识别和快捷键操作:
sudo apt install -y picocom
sudo picocom -b 921600 /dev/ttyUSB0
| 检查项 | 命令 | 预期结果 |
|---|---|---|
| USB设备枚举 | lsusb | 显示10c4:ea60或1a86:7523 |
| 内核驱动加载 | dmesg | grep ttyUSB | 出现ttyUSB0注册信息 |
| 设备节点权限 | ls -l /dev/ttyUSB0 | crw-rw---- root dialout |
| 当前用户组 | groups $USER | 包含dialout组 |
如果当前用户不在dialout组中,需要添加并重新登录:
sudo usermod -aG dialout $USER
# 重新登录后生效
4.4 SSH连接开发板:从登录到文件传输
核心原理:SSH(Secure Shell)是开发板远程调试的主要通道。旭日X3/X5开发板默认开启了SSH服务,默认用户名为root或hobot,密码在出厂说明书中标注(通常为地平线或123456)。SSH不仅用于命令行操作,还支持SCP/SFTP文件传输和X11图形转发。
操作流程:首先,确保开发板已启动并获取到IP地址。可以通过串口登录开发板,执行ip addr show eth0查看IP。然后在开发主机上执行:
ssh root@192.168.1.101
首次连接会提示确认指纹,输入yes后输入密码即可登录。为了提升开发效率,建议配置SSH密钥免密登录:
# 在开发主机上生成密钥(如果已有可跳过)
ssh-keygen -t rsa -b 4096
# 将公钥复制到开发板
ssh-copy-id root@192.168.1.101
配置完成后,后续登录将不再需要密码。此外,可以通过SSH隧道进行端口转发,例如将开发板的BPU调试端口映射到本地:
ssh -L 8080:localhost:8080 root@192.168.1.101
常见误区与复盘:
- 误区一:SSH连接超时。原因多为开发板IP地址变化或防火墙拦截。解决方法是使用
ping测试连通性,并检查开发板防火墙状态(sudo ufw status)。 - 误区二:SSH登录后中文乱码。这是因为开发板默认locale为UTF-8,而终端模拟器编码不一致。在MobaXterm或VS Code中设置终端编码为UTF-8即可。
- 误区三:SCP传输大文件中断。建议使用
rsync替代scp,支持断点续传:rsync -avz --progress model.bin root@192.168.1.101:/root/。
最后,建议在开发主机上创建一个~/.ssh/config文件,为开发板配置别名,简化日常操作:
Host x3
HostName 192.168.1.101
User root
Port 22
IdentityFile ~/.ssh/id_rsa