3、Adaptive平台开发环境搭建:Linux基础环境、QEMU仿真、Yocto构建Adaptive镜像
说实话,很多刚接触Adaptive平台的朋友,第一步就被环境搭建给卡住了。我当年第一次搭Yocto的时候,也是折腾了好几天才跑通。这一章,我就把那些坑和经验一起分享给你。
3.1 Linux基础环境准备
Adaptive平台开发,说白了离不开Linux。我个人习惯用Ubuntu 20.04 LTS,稳定,社区支持也好。你想想看,如果基础环境没弄好,后面编译个镜像动不动报错,那得多闹心。
3.1.1 系统要求
| 项目 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 4核 | 8核及以上 |
| 内存 | 8GB | 16GB+ |
| 磁盘 | 100GB | 200GB SSD |
| 网络 | 宽带 | 稳定宽带 |
嗯,这里要注意:磁盘空间千万别省。Yocto构建一次,下载的源码和中间产物轻松吃掉50GB以上。我在项目中遇到过同事因为磁盘满了,构建到一半失败,白白浪费半天时间。
3.1.2 安装基础依赖
先更新包管理器,然后安装必要的工具链:
sudo apt update
sudo apt install -y \
gawk wget git diffstat unzip texinfo \
gcc build-essential chrpath socat cpio \
python3 python3-pip python3-pexpect \
xz-utils debianutils iputils-ping \
libsdl1.2-dev xterm libncurses-dev \
libssl-dev libgmp-dev libmpfr-dev \
libmpc-dev zlib1g-dev
我建议你装完后再跑一遍 sudo apt build-essential,确保编译环境完整。曾经有一次我漏装了 chrpath,结果Yocto在打包阶段报了个莫名其妙的错,排查了好久。
3.1.3 配置Git和Repo
Adaptive平台源码管理用的是Git + Repo。配置一下你的Git信息:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global color.ui auto
然后安装Repo工具:
mkdir -p ~/.local/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.local/bin/repo
chmod a+x ~/.local/bin/repo
export PATH=$PATH:~/.local/bin
export PATH=$PATH:~/.local/bin 加到 ~/.bashrc 里,这样每次打开终端就不用重新设了。
3.2 QEMU仿真环境搭建
没有硬件开发板怎么办?用QEMU仿真。我在项目早期阶段,全靠QEMU跑Adaptive平台验证功能。说白了,QEMU就是你的虚拟开发板。
3.2.1 安装QEMU
sudo apt install -y qemu-system-arm qemu-system-aarch64
验证安装:
qemu-system-aarch64 --version
如果能看到版本号,说明装好了。我习惯用aarch64版本,因为Adaptive平台主要面向64位ARM架构。
3.2.2 准备内核和文件系统
你需要一个内核镜像和一个根文件系统。可以从Yocto构建产物里拿,也可以直接下载预编译的:
wget https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu-aarch64/Image
wget https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu-aarch64/grub-efi.tar.gz
3.2.3 启动QEMU仿真
启动命令如下:
qemu-system-aarch64 \
-machine virt \
-cpu cortex-a57 \
-smp 4 \
-m 2G \
-kernel Image \
-append "console=ttyAMA0 root=/dev/vda rw" \
-drive file=rootfs.ext4,format=raw,id=hd0 \
-device virtio-blk-device,drive=hd0 \
-netdev user,id=net0 \
-device virtio-net-device,netdev=net0 \
-nographic
启动后,你会看到一个Linux终端。这就是你的虚拟Adaptive平台运行环境。
3.3 Yocto构建Adaptive镜像
Yocto是构建嵌入式Linux系统的利器。Adaptive平台的AUTOSAR运行时,就是通过Yocto定制出来的。说实话,Yocto的学习曲线有点陡,但一旦掌握了,你会发现它真的很强大。
3.3.1 获取Adaptive平台Yocto层
先创建一个工作目录,然后用Repo同步代码:
mkdir adaptive-yocto
cd adaptive-yocto
repo init -u https://github.com/Adaptive-AUTOSAR/adaptive-platform-manifest.git -b master
repo sync
这个过程会下载所有必要的Yocto层和Adaptive平台源码。网速慢的话,可能要等半小时以上。我建议你找个网络好的时间段来做这件事。
3.3.2 配置构建环境
进入源码目录,初始化Yocto构建环境:
cd sources/poky
source oe-init-build-env ../../build
这会创建一个 build 目录,并自动切换到该目录。然后编辑 conf/local.conf:
# 目标机器
MACHINE ??= "qemuarm64"
# 并行编译线程数
BB_NUMBER_THREADS = "8"
PARALLEL_MAKE = "-j 8"
# 添加Adaptive平台层
BBLAYERS += " \
${BSPDIR}/sources/meta-adaptive \
${BSPDIR}/sources/meta-adaptive-autosar \
"
3.3.3 构建Adaptive镜像
执行构建命令:
bitbake adaptive-platform-image
第一次构建会下载大量源码包,编译工具链和所有组件。这个过程可能需要2-4小时,取决于你的机器性能。你可以去喝杯咖啡,或者看看文档。
构建完成后,镜像文件在 tmp/deploy/images/qemuarm64/ 目录下:
adaptive-platform-image-qemuarm64.ext4— 根文件系统镜像Image— 内核镜像modules.tgz— 内核模块
3.3.4 验证构建结果
用QEMU启动你刚构建的镜像:
runqemu qemuarm64 nographic
如果一切顺利,你会看到Adaptive平台启动,并进入一个包含AUTOSAR运行时的Linux系统。你可以检查一下关键服务是否运行:
ps -ef | grep adaptive
systemctl status adaptive-platform
adaptive-platform 服务状态是 active (running)。如果没启动,检查 /var/log/adaptive-platform.log 看错误信息。
3.4 常见问题与避坑指南
搭建环境的过程中,有几个坑我踩过,分享给你:
- 磁盘空间不足: 构建过程中临时文件会占用大量空间。我建议至少留80GB空闲。如果不够,可以设置
DL_DIR和SSTATE_DIR到其他分区。 - 网络超时: Yocto下载源码时经常因为网络问题失败。配置一个国内的镜像源会好很多。我在
local.conf里加了PREMIRRORS指向清华源。 - Python版本冲突: Yocto对Python版本有要求。Ubuntu 20.04自带的Python 3.8没问题。如果你用更新的系统,可能需要用
virtualenv隔离环境。
MACHINE 变量,结果构建出来的镜像是x86架构的,在QEMU上根本跑不起来。检查了半小时才发现。所以,每次构建前务必确认 MACHINE 设置正确。
好了,环境搭建就到这里。下一章我们会深入Adaptive平台的软件架构,看看这些组件是怎么协同工作的。