第二章 开发环境搭建:Linux虚拟机安装、基础工具链安装、串口驱动配置、网络环境配置
好,咱们正式开始动手了。
做嵌入式开发,尤其是玩RISC-V这种比较新的架构,Windows直接上肯定不行。我个人的习惯是——搞一台Linux虚拟机,干净、可控、出了问题直接删了重来,不心疼。
2.1 Linux虚拟机的选择与安装
虚拟机软件我推荐两个:VMware Workstation 和 VirtualBox。前者性能好一点,后者免费开源。我自己一直用VMware,图个省心。
Linux发行版呢?我建议用 Ubuntu 20.04 LTS 或 22.04 LTS。为什么?因为全志D1的官方SDK和工具链,很多都是在Ubuntu上验证过的。你用别的发行版,可能会遇到一些奇奇怪怪的依赖问题。嗯,我在项目里就吃过这个亏——用Arch Linux折腾了一整天,最后还是换回了Ubuntu。
虚拟机配置建议(最低要求):
- CPU:2核以上
- 内存:4GB以上(我一般给8GB)
- 硬盘:40GB以上(建议动态分配)
- 网络:NAT模式(后面再改桥接)
安装过程我就不一步步截图了,网上教程一堆。说几个关键点:
- 安装时选「中文简体」?我个人不建议。终端里很多报错信息是英文的,中文环境下反而容易乱码。老老实实用英文安装。
- 分区选「清除整个磁盘并安装Ubuntu」——反正是虚拟机,无所谓。
- 用户名别用中文,后面编译会出问题。
2.2 基础工具链安装
装好系统后,第一件事就是装工具。你想想看,没有Git你怎么拉代码?没有Make你怎么编译?没有GCC你连个Hello World都跑不起来。
打开终端,一行搞定:
sudo apt update
sudo apt install -y git make gcc build-essential
这里有个小坑——build-essential这个包包含了GCC、G++、make等一堆基础工具。我刚开始学的时候不知道,一个一个装,装漏了还查半天。后来发现,直接装这一个包就齐活了。
小技巧:装完后可以用 gcc --version 和 make --version 验证一下。看到版本号输出,就说明装好了。
Git的配置也很简单:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
为什么要配这个?因为后面你要从全志的官方仓库拉SDK,有些仓库需要认证。我曾经因为没配邮箱,拉代码时被拒了三次才反应过来……
2.3 串口驱动配置
玩开发板,串口是逃不掉的。D1开发板一般通过USB转TTL模块连接电脑。在Linux下,这个模块通常被识别为 /dev/ttyUSB0 或 /dev/ttyACM0。
但有个问题——默认情况下,普通用户没有权限访问串口设备。你插上板子,用 ls /dev/ttyUSB* 能看到设备,但用 screen 或 minicom 连上去,会报 Permission denied。
解决办法:把当前用户加到 dialout 组里。
sudo usermod -a -G dialout $USER
然后注销重新登录,或者重启一下虚拟机。嗯,这一步很容易忘。我刚开始就忘了重启,折腾了半小时以为是驱动没装好……
串口工具我推荐 screen,轻量好用:
sudo apt install screen
screen /dev/ttyUSB0 115200
参数说明:/dev/ttyUSB0 是串口设备,115200 是波特率。D1的默认串口波特率就是115200,别搞错了。
注意:如果插上USB转TTL模块后,/dev/ttyUSB* 没有出现,可能是驱动问题。常见的CH340、CP2102芯片,Linux内核都自带驱动。如果不行,试试 dmesg | grep tty 看看内核日志。
2.4 网络环境配置
虚拟机上网,一般有两种模式:
| 模式 | 特点 | 适用场景 |
|---|---|---|
| NAT | 虚拟机共享主机IP,能上网,但外部无法访问虚拟机 | 日常开发、下载软件包 |
| 桥接 | 虚拟机独立IP,和主机在同一网段 | 需要开发板直接访问虚拟机(如NFS、TFTP) |
我个人建议:刚开始用NAT模式,省心。等后面需要和开发板通信了,再切到桥接。
在Ubuntu里,网络配置可以用 netplan(20.04以后默认)。配置文件在 /etc/netplan/ 目录下,一般是 01-network-manager-all.yaml。
举个例子,配置静态IP(桥接模式):
network:
version: 2
ethernets:
ens33:
dhcp4: no
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
改完后执行 sudo netplan apply 生效。注意:ens33 是你的网卡名,可能不一样,用 ip a 看一下。
避坑指南:我曾经在配置静态IP时,忘了写 gateway4,结果能ping通局域网,但上不了外网。查了半天才发现是网关没配。你想想看,这种低级错误,排查起来真的很浪费时间。
2.5 验证环境
装完这些,咱们简单验证一下:
- 打开终端,输入
git --version,看到版本号。 - 输入
gcc --version,看到版本号。 - 插上USB转TTL模块,输入
ls /dev/ttyUSB*,看到设备节点。 - 输入
ping 8.8.8.8,能通。
如果以上都OK,恭喜你,开发环境搭建完毕。接下来就可以拉SDK、编译固件了。
嗯,说实话,环境搭建这一步虽然枯燥,但基础打好了,后面会顺很多。我见过太多人,一上来就急着编译,结果工具链没装全、串口权限没配,卡在中间进退两难。所以,别急,一步一步来。