LinMao's Blog
学习科研记录与分享!

用qemu模拟器搭建arm运行环境

qemu 是一个在 linux 上广泛使用的可以模拟 ARM 的模拟器。在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力,比如常见的 ARM 平台,其一般的静态存储空间大概是 16 到 32MB,而 CPU 的主频大概在 100MHz 到500MHz 之间。这种情况下,在 ARM 平台上进行本机编译就不太可能了,这是因为一般的编译工具链(compilation tool chain)需要很大的存储空间,并需要很强的 CPU 运算能力。为了解决这个问题,交叉编译工具就应运而生了。通过交叉编译工具,我们就可以在 CPU 能力很强、存储空间足够的主机平台上(比如 PC 上)编译出针对其他平台的可执行程序。下面我们分别在ubuntu和windows上搭建arm运行环境。

ubuntu下搭建

host:ubuntu16.04

安装arm的交叉编译工具

打开终端输入安装命令:

安装完成后执行下面命令检查是否安装成功

出现下面输出表示安装成功

编译Linux内核

下载linux内核

编译linux内核

安装qemu模拟器

网上有直接很多现在qemu下载源码安装方法,但是测试发现其实直接用源安装也可以

安装相关依赖:

安装qemu

测试qemu和内核是否运行成功

上面是一条命令,其中:

/path_to_kernel_dir/是指内核编译目录

-M vexpress-a9是模拟vexpress-a9单板,可以使用-M ?餐胡来查询qemu支持的单板

-m 512M指单板运行的物理内存

-kernel /path_to_kernel_dir/arch/arm/boot/zImage指定qemu单板运行内核镜像

-nographic指不使用图形化界面,只使用串口

-append "console=ttyAMA0"内核启动参数,这里告诉内核vexpress单板运行,串口设备是那个tty。

内核启动参数中的console=参数应该填上哪个tty,因为不同单板串口驱动类型不尽相同,创建的tty设备名当然也是不相同的。那vexpress单板的tty设备名填什么,可以从生成的.config文件CONFIG_CONSOLE宏找到。

如果搭建其它单板,需要注意内核启动参数的console=参数值,同样地,可从生成的.config文件中找到。

当输出显示

表示内核成功加载,但是没有根文件系统,小面制作根文件系统

制作根文件系统

Linux发行版的根文件系统很复杂,而我们这里用到的根文件系统很简单,我们要制作的根文件系统 = busybox(包含基础的Linux命令)  + 运行库 + 几个字符设备。 根文件系统依赖于每个开发板支持的存储设备,可以放到Nor Flash上,也可以放到SD卡,甚至外部磁盘上。最关键的一点是你要清楚知道开发板有什么存储设备。

下载busybox

编译安装busybox

安装完成后,会在busybox目录下生成_install目录,该目录下的程序就是单板运行所需要的命令。

形成根目录结构

先在Ubuntu主机环境下,形成目录结构,里面存放的文件和目录与单板上运行所需要的目录结构完全一样,然后再打包成镜像(在开发板看来就是SD卡),这个临时的目录结构称为根目录

创建rootfs目录(根目录),根文件系统内的文件全部放到这里

拷贝busybox命令到根目录下

从工具链中拷贝运行库到lib目录下

创建4个tty端终设备

制作根文件系统镜像

生成512M大小的磁盘镜像

格式化成ext4文件系统

将文件拷贝到镜像中

测试

启动qemu模拟系统进行测试

完成上述所有步骤之后,就可以执行下面命令启动qemu来模拟vexpress开发板了:

执行命令内核启动打印完后,命令行出现命令提示符,说明基本安装完成,接下来执行在主机上交叉编译的代码

执行上面的问题发现arm系统中文件不能编辑,提示read-only file system,解决办法:

运行hello world

在用户目录创建hello.c源码vim hello.c

用交叉编译工具编译程序

将交叉编译后生成的文件加载到arm的根目录

再次启动qemu模拟系统测试程序

命令行中输入 ./hello
可以看到输出hello world!,说明gemu模拟的arm环境成功。

windows下搭建

Windows 10

qemu安装ARM64 debain linux

安装qemu

qemu官网下载windows版安装程序。

下载debian mirrors

iso镜像
http://mirrors.163.com/debian/dists/Debian9.8/main/installer-arm64/current/images/netboot/mini.iso
内核文件
http://mirrors.163.com/debian/dists/Debian9.8/main/installer-arm64/current/images/netboot/debian-installer/arm64/linux
ramfs映像文件
http://mirrors.163.com/debian/dists/Debian9.8/main/installer-arm64/current/images/netboot/debian-installer/arm64/initrd.gz

安装控制台ComEmu作为控制台

ComEmu官网下载安装程序。

创建硬盘映像

打开ComEmu控制台,注意要用管理员权限打开。

界面如下:

然后cd到qemu的安装目录,执行命令创建硬盘镜像:

安装虚拟机

执行下面命令开始安装虚拟机

注意上面下载的debain mirrors的路径,安装的所有步骤如下图所示:

安装过程中tab键来选择选择区域,字母键来进行选择,enter键确认然后进行下一步;根据提示进行选择,确实不清楚就按默认选择就可以。

安装完后进图命令好界面就就算安装完成。

Reference:

从零使用qemu模拟器搭建arm运行环境

Ubuntu下用QEMU搭建ARM Linux运行环境

Ubuntu下用QEMU搭建ARM Linux运行环境

赞(0) 打赏
转载请注明出处:LinMao's Blog(林茂的博客) » 用qemu模拟器搭建arm运行环境

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

LinMao's Blog(林茂的博客)

了解更多联系我们

觉得文章有用就打赏一下作者吧~

支付宝扫一扫打赏

微信扫一扫打赏