“100ask imx6ul qemu”的版本间的差异

来自百问网嵌入式Linux wiki
第104行: 第104行:
  
 
*参考资料
 
*参考资料
**
+
** <code>QEMU user manual</code>  https://qemu.weilnetz.de/doc/qemu-doc.html
 +
** <code>QEMU</code>https://wiki.archlinux.org/index.php/QEMU

2019年10月31日 (四) 16:10的版本

qemu简介

QEMU(Quick EMUlator的缩写)是执行硬件虚拟化的免费开源模拟器。
它通过动态二进制转换来模拟计算机的处理器,并为计算机提供一组不同的硬件和设备模型,从而使其能够运行各种来宾操作系统。
它还可以与KVM一起使用,以接近自然的速度运行虚拟机(通过利用诸如IntelVT-x之类的硬件扩展)。QEMU还可以对用户级进程进行仿真,从而允许针对一种架构编译的应用程序可以在另一种架构上运行。

快速使用

准备工作

  • 必须
    • 一台可以上网的windows电脑
    • 一个可以正常使用Ubuntu虚拟机系统
  • 可选
  • MobaXterm_Portable_v12.0.zip(可选)

获取镜像

点击如下链接下载

下载完成后上传到Ubuntu虚拟机中,并解压缩,解压缩后执行如下命令

运行qemu系统

打开终端,在解压后的当前目录下执行如下命令

qemu-system-arm -M mcimx6ul-evk    -m 512M -kernel zImage \
-dtb   -display sdl -serial mon:stdio \
-drive  file=rootfs.img,format=raw,id=mysdcard -device sd-card,drive=mysdcard \
-append "console=ttymxc0,115200 rootfstype=ext4 root=/dev/mmcblk1  rw rootwait init=/sbin/init  loglevel=8" \
-nic user

等待运行

参数讲解

qemu-system-arm -M mcimx6ul-evk 
-m 512M 
-kernel zImage
-dtb 
-display sdl
-serial mon:stdio
-drive  file=rootfs.img,format=raw,id=mysdcard -device sd-card,drive=mysdcard \
-append "console=ttymxc0,115200 rootfstype=ext4 root=/dev/mmcblk1  rw rootwait init=/sbin/init  loglevel=8" \
-nic user

操作示例

  • 获取IP地址
  • 挂载主机nfs目录
  • 测试lcd显示
  • 编写并测试led驱动
  • 编写并测试i2c驱动

高级玩法

获取源码

类别 国内coding仓库 国外github仓库
linux kernel https://git.dev.tencent.com/weidongshan/qemu_imx6ull_kernel.git https://github.com/100askTeam/qemu_imx6ull_kernel.git
qemu 源码
buildroot

编译运行源码

制作文件系统

$ dd if=/dev/zero of=rootfs.img bs=1M count=300
$ mkfs.ext4 rootfs.img   
$ mkdir ./tmp
$ sudo mount -o loop rootfs.img  ./tmp

拷贝源码到挂载的tmp目录下,等待拷贝完成

执行 sync 同步更新

$ umount ./tmp

kgdb调试内核源码

编译内核镜像

等待编译生成的 vmlinux 带符号表的文件,以及zImage 和设备树文件

运行qemu

qemu-system-arm -M mcimx6ul-evk    -m 512M -kernel zImage \
-dtb   -display sdl -serial mon:stdio \
-drive  file=rootfs.img,format=raw,id=mysdcard -device sd-card,drive=mysdcard \
-append "console=ttymxc0,115200 rootfstype=ext4 root=/dev/mmcblk1  rw rootwait init=/sbin/init  loglevel=8" \
-nic user -S -s

运行gdb程序调试

$ arm-linux-gnueabihf-gdb -tui vmlinux

连接到qemu模拟的系统

(gdb) target remote localhost:1234

其它相关

  • 交流群
  • 意见反馈