2、环境准备:Linux主机环境搭建、交叉编译工具链安装、串口驱动与USB驱动配置

做嵌入式开发,环境准备是第一步。这一步要是没弄好,后面烧录、调试全得卡壳。我见过不少新手,上来就急着烧U-Boot,结果驱动没装、工具链不对,折腾半天连设备都认不到。

说白了,环境搭建就是给你的开发板配好「翻译官」和「快递员」。翻译官是交叉编译工具链,快递员是串口和USB驱动。咱们一个一个来。

2.1 Linux主机环境搭建

我个人习惯用Ubuntu 20.04 LTS,稳定、社区活跃、遇到问题好搜。当然你用Debian、Fedora也行,但别用太老的版本——内核太旧,USB驱动容易出幺蛾子。

你需要确认几样东西:

  • 系统版本:建议Ubuntu 18.04以上,内核版本不低于4.15
  • 磁盘空间:至少留出20GB,交叉编译工具链和源码加起来不小
  • 网络环境:能正常访问GitHub、kernel.org等站点

嗯,这里要注意:如果你用的是虚拟机,记得给USB控制器分配足够的带宽。我在项目中遇到过,虚拟机里USB设备频繁掉线,最后发现是VMware的USB兼容模式没选对。

小技巧:装好系统后,先跑一遍 sudo apt update && sudo apt upgrade,把基础包更新到最新。别嫌麻烦,这一步能省掉后面很多依赖问题。

2.2 交叉编译工具链安装

交叉编译,说白了就是在你的x86电脑上编译出ARM架构能跑的代码。你想想看,开发板那点算力,编译个U-Boot得等到猴年马月?

常用的工具链有几种:

工具链 适用架构 安装方式
gcc-arm-none-eabi ARM Cortex-M/R sudo apt install gcc-arm-none-eabi
gcc-arm-linux-gnueabihf ARM Cortex-A (32位) sudo apt install gcc-arm-linux-gnueabihf
gcc-aarch64-linux-gnu ARM Cortex-A (64位) sudo apt install gcc-aarch64-linux-gnu

我建议你直接装Linaro提供的预编译工具链,省心。下载后解压到 /opt/toolchains/,然后配环境变量:

export PATH=$PATH:/opt/toolchains/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin

验证一下:

arm-linux-gnueabihf-gcc --version

看到版本号就对了。我曾经因为工具链版本太新,编译出来的U-Boot在旧版开发板上跑不起来——嗯,那叫一个折腾。所以建议选LTS版本,别追新。

2.3 串口驱动配置

串口是嵌入式调试的「生命线」。没有它,你连开发板启动时打印的信息都看不到。

现在大部分开发板用的是USB转串口芯片,常见的有:

  • CH340/CH341:国产芯片,便宜,驱动容易装
  • CP2102:Silicon Labs的,稳定
  • FT232:FTDI的,老牌,但假货多

插上USB转串口线,跑 lsusb 看看能不能识别到。比如CH340会显示:

Bus 001 Device 003: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

然后看设备节点:

ls /dev/ttyUSB*

如果看到 /dev/ttyUSB0,恭喜你,驱动已经自动加载了。没看到的话,手动加载:

sudo modprobe ch341
sudo modprobe cp210x
sudo modprobe ftdi_sio
注意:有些山寨FT232芯片会被Linux内核识别为假货,直接禁用。我遇到过这种情况,最后换了根原装线才解决。别贪便宜买几块钱的USB转串口线。

2.4 USB驱动配置

烧录U-Boot时,通常通过USB把镜像传到开发板。这里涉及两种常见模式:

  • USB DFU (Device Firmware Upgrade):很多STM32、i.MX系列支持
  • USB Mass Storage:把开发板模拟成U盘,直接拷文件

对于DFU模式,需要安装 dfu-util:

sudo apt install dfu-util

然后确认USB权限。默认情况下,普通用户没有权限访问USB设备。我建议把用户加入 plugdev 组:

sudo usermod -a -G plugdev $USER

再写个udev规则,让系统自动给DFU设备赋予权限:

# /etc/udev/rules.d/99-dfu.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="df11", MODE="0666"

重载udev规则:

sudo udevadm control --reload-rules
sudo udevadm trigger

插上开发板,跑 dfu-util -l,如果能列出设备,说明驱动配置好了。

核心要点:环境准备不是一次性的。每换一块开发板、每换一个工具链版本,都可能需要重新调整。我习惯把环境配置写成脚本,下次直接跑一遍,省得重复劳动。

2.5 知识体系总览

下面这张图,把本章的核心逻辑串起来了。你一看就明白:

环境准备核心流程 Linux主机环境 交叉编译工具链 串口驱动配置 USB驱动配置 gcc-arm-linux gcc-aarch64 CH340/CP2102 FT232 DFU/Mass Storage 验证:--version / lsusb / dfu-util -l 环境就绪,可以开始烧录 图2-1 环境准备知识体系

这张图把主机环境、工具链、串口、USB四个模块串起来了。你照着这个流程走,基本不会漏掉什么。我个人习惯每配好一个环节,就做个标记,免得回头忘了哪步没做。

好了,环境准备就这些。工具链装好、驱动配好,下一步就可以真正开始烧录U-Boot了。记住:环境搭得稳,后面少踩坑。

避坑指南:我曾经因为串口线接触不良,折腾了整整一个下午,以为是驱动没装对。后来换了根线,一次就通了。所以,硬件问题先排除,别一上来就怀疑软件。

可可精品资料库