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
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 知识体系总览
下面这张图,把本章的核心逻辑串起来了。你一看就明白:
这张图把主机环境、工具链、串口、USB四个模块串起来了。你照着这个流程走,基本不会漏掉什么。我个人习惯每配好一个环节,就做个标记,免得回头忘了哪步没做。
好了,环境准备就这些。工具链装好、驱动配好,下一步就可以真正开始烧录U-Boot了。记住:环境搭得稳,后面少踩坑。
可可精品资料库