第二章 开发环境搭建:Linux虚拟机安装、基础工具链安装、串口驱动配置、网络环境配置

好,咱们正式开始动手了。

做嵌入式开发,尤其是玩RISC-V这种比较新的架构,Windows直接上肯定不行。我个人的习惯是——搞一台Linux虚拟机,干净、可控、出了问题直接删了重来,不心疼。

2.1 Linux虚拟机的选择与安装

虚拟机软件我推荐两个:VMware WorkstationVirtualBox。前者性能好一点,后者免费开源。我自己一直用VMware,图个省心。

Linux发行版呢?我建议用 Ubuntu 20.04 LTS22.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 --versionmake --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* 能看到设备,但用 screenminicom 连上去,会报 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 验证环境

装完这些,咱们简单验证一下:

  1. 打开终端,输入 git --version,看到版本号。
  2. 输入 gcc --version,看到版本号。
  3. 插上USB转TTL模块,输入 ls /dev/ttyUSB*,看到设备节点。
  4. 输入 ping 8.8.8.8,能通。

如果以上都OK,恭喜你,开发环境搭建完毕。接下来就可以拉SDK、编译固件了。

嗯,说实话,环境搭建这一步虽然枯燥,但基础打好了,后面会顺很多。我见过太多人,一上来就急着编译,结果工具链没装全、串口权限没配,卡在中间进退两难。所以,别急,一步一步来。