ubuntu24.04上使用qemu和buildroot模拟vexpress-ca9开发板构建嵌入式arm linux环境

发布于:2025-04-21 ⋅ 阅读:(16) ⋅ 点赞:(0)

1 准备工作

1.1 安装qemu

在ubuntu系统中使用以下命令安装qemu。

sudo apt install qemu-system-arm

安装完毕后,在终端输入: qemu- 后按TAB键,弹出下列命令证明安装成功。

1.2 安装arm交叉编译工具链

sudo apt install gcc-arm-linux-gnueabihf

安装之后,在终端输入arm-linux- gnueabihf- 后按TAB键,出现下列命令,表示安装成功。

1.3 下载linux kernel和buildroot

下载需要的linux kernel和build root源码,这里以linux-6.14.2.tar.xz和buildroot-2024.02.tar.gz为例。

wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.14.2.tar.xz
wget https://buildroot.org/downloads/buildroot-2024.02.tar.gz

进入下载目录,分别解压

tar -xvf linux-6.14.2.tar.xz
tar -xvf buildroot-2024.02.tar.gz

解压后如下:

2 配置和编译linux内核

2.1 配置内核

进入解压后的linux-6.14.2目录,对于 vexpress-ca9 开发板,执行如下默认配置。

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- vexpress_defconfig

为了后续能正确使用ttyAMA0,需要进入meunconfig进行如下配置。

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

注意,如果这里没有按照上图配置,后续使用qemu加载内核和根文件系统后,无法进入系统,会报下面的错误。

2.2 编译内核

执行编译命令,生成内核镜像zImage和设备树dtb文件。

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage dtbs -j8

编译完成后,zImage 文件会生成在 arch/arm/boot 目录下,设备树文件(如 vexpress-v2p-ca9.dtb)会生成在 arch/arm/boot/dts/arm 目录下。

3 使用buildroot制作根文件系统

3.1 配置buildroot

进入解压后的buildroot-2024.02目录,使用vexpress-ca9开发板默认配置。

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- qemu_arm_vexpress_defconfig

进入menuconfig,配置支持mdev。

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

3.2 编译buildroot

编译buildroot,生成根文件系统。

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8

编译完成后,根文件系统会生成在 output/images/rootfs.ext2

4 启动qemu模拟vexpress-ca9

sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel "/home/cat/work/drv/linux-6.14.2/arch/arm/boot/zImage" -dtb "/home/cat/work/drv/linux-6.14.2/arch/arm/boot/dts/arm/vexpress-v2p-ca9.dtb" -sd "/home/cat/work/drv/buildroot-2024.02/output/images/rootfs.ext2" -append "console=ttyAMA0,115200 root=/dev/mmcblk0 rw" -nographic
​

参数说明:

  • -M vexpress-a9:指定模拟的开发板为 VExpress - CA9。

  • -m 512M:分配 512MB 内存。

  • -kernel:指定内核镜像文件(zImage)。

  • -dtb:指定设备树文件(dtb)。

  • -sd:指定根文件系统(rootfs.ext2)。

  • -append:传递内核启动参数。

  • -nographic:以非图形化模式启动。

成功加载内核和根文件系统:

完毕。


网站公告

今日签到

点亮在社区的每一天
去签到