Ubuntu 16.04 利用qemu模拟ARM开发板

xiaoxiao2021-02-28  131

QEMU目前可以模拟vexpress Cortex A9四核处理器开发板。

环境配置:Ubuntu 16.04,Kernel 4.4.1

内容参考了:

http://blog.csdn.NET/linyt/article/details/42504975

http://www.cnblogs.com/pengdonglin137/p/5023342.html

(推荐)https://learningfromyoublog.wordpress.com/2016/04/05/131/

1. 下载kernel

有两种方式:git和wget,这里使用wget下载方式。从kernel.org直接下载很慢(几KB),因此可以借用国内的代理(可以达到1~2M): 从kernel下载: wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.1.tar.xz 使用代理: https://mirror.tuna.tsinghua.edu.cn/kernel/v4.x/linux-4.4.1.tar.xz

2. 安装arm交叉编译链

arm交叉编译链有很多种,有的书上装了arm-linux-gnueabi 和 arm-linux-gnueabihf两种,安装方法如下: sudo apt-get install gcc-arm-linux-gnueabi

3. 编译Linux内核

解压下载的kernel文件,进入解压后的文件夹,运行下面的指令编译。 [plain] view plain copy print ? export ARCH=arm  export CROSS_COMPILE=arm-linux-gnueabi-  make vexpress_defconfig  make zImage -j8  make modules -j8  make dtbs   export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabi- make vexpress_defconfig make zImage -j8 make modules -j8 make dtbs 随后就可以将生成的zImage和dtbs拷贝到单独的文件夹中,拷贝指令: [plain] view plain copy print ? mkdir extra_folder  cp arch/arm/boot/zImage extra_folder/  cp arch/arm/boot/dts/*ca9.dtb extra_folder/  cp .config  extra_folder/   mkdir extra_folder cp arch/arm/boot/zImage extra_folder/ cp arch/arm/boot/dts/*ca9.dtb extra_folder/ cp .config extra_folder/

4.安装qemu模拟器

sudo apt-get install qemu

5.制作根文件系统

根文件系统由基本的运行命令、库和字符设备构成。 基本的运行命令需要使用Busybox,这个库也需要进行交叉编译,因此可以运行下面的指令进行源代码下载。 [html] view plain copy print ? wget http://www.busybox.net/downloads/busybox-1.25.1.tar.bz2   wget http://www.busybox.net/downloads/busybox-1.25.1.tar.bz2 解压源代码,在源代码目录下运行: [plain] view plain copy print ? make defconfig  make CROSS_COMPILE=arm-linux-gnueabi-  make install CROSS_COMPILE=arm-linux-gnueabi-   make defconfig make CROSS_COMPILE=arm-linux-gnueabi- make install CROSS_COMPILE=arm-linux-gnueabi- 安装完成后,该目录下生成的_install,即是基本的运行指令。 然后就开始一步步建立根文件系统。 5.1 创建rootfs目录: [plain] view plain copy print ? sudo mkdir rootfs   sudo mkdir rootfs [plain] view plain copy print ? sudo mkdir rootfs/lib   sudo mkdir rootfs/lib 5.2 拷贝busybox命令 [plain] view plain copy print ? sudo cp _install/* -r rootfs/   sudo cp _install/* -r rootfs/ 5.3从工具链中拷贝运行库到lib下 [plain] view plain copy print ? sudo cp -P /usr/arm-linux-gnueabi/lib/* rootfs/lib/   sudo cp -P /usr/arm-linux-gnueabi/lib/* rootfs/lib/ 5.4 创建4个tty终端设备 c代表字符设备,4是主设备号,1~2~3~4是次设备号 [plain] view plain copy print ? sudo mkdir -p rootfs/dev   sudo mkdir -p rootfs/dev [plain] view plain copy print ? sudo mknod rootfs/dev/tty1 c 4 1  sudo mknod rootfs/dev/tty2 c 4 2  sudo mknod rootfs/dev/tty3 c 4 3  sudo mknod rootfs/dev/tty4 c 4 4   sudo mknod rootfs/dev/tty1 c 4 1 sudo mknod rootfs/dev/tty2 c 4 2 sudo mknod rootfs/dev/tty3 c 4 3 sudo mknod rootfs/dev/tty4 c 4 4

*注意:实际上还可以在这个镜像中插入其他的文件夹,可以参考https://learningfromyoublog.wordpress.com/2016/04/05/131/,写的很详细。

5.5生成镜像 [plain] view plain copy print ? dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=32   dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=32 5.6 格式化生成ext3文件系统 [plain] view plain copy print ? mkfs.ext3 a9rootfs.ext3   mkfs.ext3 a9rootfs.ext3 5.7将文件拷贝到镜像中 [plain] view plain copy print ? sudo mkdir tmpfs  sudo mount -t ext3 a9rootfs.ext3 tmpfs/ -o loop  sudo cp -r rootfs/*  tmpfs/  sudo umount tmpfs   sudo mkdir tmpfs sudo mount -t ext3 a9rootfs.ext3 tmpfs/ -o loop sudo cp -r rootfs/*  tmpfs/ sudo umount tmpfs

6. 启动qemu模拟系统

使用下面的指令启动,会在当前窗口中显示qemu虚拟出的终端。

[plain] view plain copy print ? qemu-system-arm -M vexpress-a9 -m 512M -dtb extra_folder/vexpress-v2p-ca9.dtb -kernel extra_folder/zImage -nographic -append "root=/dev/mmcblk0 rw console=ttyAMA0" -sd a9rootfs.ext3   qemu-system-arm -M vexpress-a9 -m 512M -dtb extra_folder/vexpress-v2p-ca9.dtb -kernel extra_folder/zImage -nographic -append "root=/dev/mmcblk0 rw console=ttyAMA0" -sd a9rootfs.ext3

使用下面的指令启动,会另开一个窗口显示虚拟终端。

[plain] view plain copy print ? qemu-system-arm -M vexpress-a9 -m 512M -dtb extra_folder/vexpress-v2p-ca9.dtb -kernel extra_folder/zImage -append "root=/dev/mmcblk0 rw" -sd a9rootfs.ext3   qemu-system-arm -M vexpress-a9 -m 512M -dtb extra_folder/vexpress-v2p-ca9.dtb -kernel extra_folder/zImage -append "root=/dev/mmcblk0 rw" -sd a9rootfs.ext3

转载请注明原文地址: https://www.6miu.com/read-32456.html

最新回复(0)