使用 qemu 模拟器搭建 arm 运行环境(一)

一.流程

(1)安装交叉编译工具链
(2)安装 qemu 模拟器
(3)编译 arm 架构 u-boot
(4)用 u-boot 测试 qemu 是否正常启动

二.原理

qemu 是一个在 linux 上广泛使用的可以模拟 ARM 的模拟器。在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力,比如常见的 ARM 平台,其一般的静态存储空间大概是 16 到 32MB,而 CPU 的主频大概在 100MHz 到500MHz 之间。这种情况下,在 ARM 平台上进行本机编译就不太可能了,这是因为一般的编译工具链(compilation tool chain)需要很大的存储空间,并需要很强的 CPU 运算能力。为了解决这个问题,交叉编译工具就应运而生了。通过交叉编译工具,我们就可以在 CPU 能力很强、存储空间足够的主机平台上(比如 PC 上)编译出针对其他平台的可执行程序。本实验在安装 qemu 模拟器之前安装了交叉编译工具链,满足了交叉编译的要求,然后又安装了相应的依赖库以满足 qemu 的正常运行。U-boot 用来引导启动内核的,本实验进行了编译 arm 架构 u-boot。

三.步骤

1. 安装交叉编译工具链下载必备库
(1)mkdir ~/qemu_linux:在主目录下新建文件夹 qemu_linux,~表示主目

(2)cd ~/qemu_linux:切换目录,进入文件夹 qemu_linux
(3)sudo apt-get install gcc-arm-linux-gnueabi:安装 arm 交叉编译
工具;apt-get 是自动从网上的软件仓库中搜索、安装、升级、卸载软件,
gcc-arm-linux-gnueabi 是一个 arm 的交叉编译链工具
(4)git clone git://git.qemu-project.org/qemu.git:下载源码

(5)cd qemu:进入目录 qemu
(6)git checkout remotes/origin/stable-2.4 -b stable-2.4:检出分

(7)sudo apt-get update 进行更新
(8) sudo apt-get install build-essential kernel-package
libncurses5-dev 和
sudo apt-get install libglib2.0-dev libfdt-dev libpixman-1-dev 都
是安装 qemu 需要的依赖库;
kernel-package 是 Debian 系统里生成 内核镜像文件 kernel-image 的一
些配置文件和工具
(9)接下来的 sudo apt-get install git-email 等命令都是安装其他可能
需要的依赖文件
2. 安装 qemu 模拟器
(1)mkdir build 在当前路径为 ~/qemu_linux 下创建新的文件 build
(2)cd build 进入 build 文件
(3)将配置生成的中间文件放到 build 中:
../qemu/configure --target-list=arm-softmmu --audio-drv-list=
configure 是用来检测安装平台的目标特征的。比如它会检测是不是有 CC
或 GCC,并不是需要 CC 或 GCC,它是个 shell 脚本。
make:make 是用来编译的,它从 Makefile 中读取指令,然后编译。
make install:make install 是用来安装的,它也从 Makefile 中读取指令,
安装到指定的位置。
sudo apt-get install qemu:直接安装
qemu-system-arm –M ?:查看 qemu 支持哪些板子,-M ?参数来获取该 qemu
版本支持的所有单板
3. 编译 u-boot
cd ~/qemu_linux
wget ftp://ftp.denx.de/pub/u-boot/u-boot-2016.09.tar.bz2
将 u-boot 下载到目录~/qemu_linux 里面
tar jxvf u-boot-2016.09.tar.bz2:解压
cd u-boot-2016.09
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- \
vexpress_ca9x4_defconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

指定 ARM 的交叉编译工具
结果如下所示:

4. qemu 中 u-boot 启动:
qemu-system-arm -M vexpress-a9 -kernel u-boot -nographic -m 128M
参数解释如下:-M vexpress-a9 模拟 vexpress-a9 单板;-kernel u-boot
表示告诉 qemu 单板运行内核镜像路径;-nographic 表示不使用图形化界面,
只使用串口 ;-m 128M 表示单板运行物理内存 128M

四.结果及分析

测试 qemu 和内核能否运行成功的结果如下:

信息显示:U-boot 为 2016.09 版本;系统内存 DRAM 为 128M;Falsh 内存为
128M
在下面输入 ls,print 等指令,结果如下:

表示 qemu 在 U-boot 中启动正常。

五.遇到的问题

在 make install 的时候遇到这个无法创建目录的情况:

提示权限不够,后来加了个 sudo 就好了。

猜你喜欢

转载自blog.csdn.net/skj1995/article/details/81168857