匿名
未登录
登录
百问网嵌入式Linux wiki
搜索
查看“100ask imx6ul qemu”的源代码
来自百问网嵌入式Linux wiki
名字空间
页面
讨论
更多
更多
页面选项
Read
查看源代码
历史
←
100ask imx6ul qemu
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
该页面已被保护以防止编辑和其他操作。
您可以查看与复制此页面的源代码。
<span style=" font-size:1.1rem;color:#ff0000; "> imx6ul-qemu交流群 QQ群号:542662930</span> =百问网QEMU路线图= {{Redtext|'''增加设备管理器'''}} *我们的目的是给每个外设添加GUI显示,<br> *估计有{{Redtext|'''近百个外设'''}},<br> *怎么管理这近百个GUI?<br> *使用一个<code>设备管理器</code>,<br> *在里面可以打开、关闭某个设备的GUI。<br> *完成时间:2019.11.10之前<br> {{Redtext|'''公开源码'''}} *完成<code>设备管理器</code>的功能后,<br> *我们改造的QEMU源码将全部公开 *公开时间:2019.11.10<br> {{Redtext|'''编写文档'''}}<br> :编写这几个文档: <br> #QEMU架构 #QEMU中如何模拟设备 #QEMU中的GUI操作 #QEMU如何处理鼠标键盘事件 #如何编写IMX6ULL裸机程序操作模拟的硬件 #如何编写IMX6ULL Linux驱动程序操作模拟的硬件 <br> 这几个文档可以让你深入理解QEMU,掌握模拟外设的原理<br> 如果你编程能力可以,那就能模拟出一些简单设备:单线的传感器、I2C/SPI设备、定时器、LCD、触摸屏等<br> {{Redtext|'''发布有偿项目'''}}<br> *对于每个外设,都会涉及两方面: QEMU中对它的模拟,你写的裸机/驱动/app对它的操作。<br> *我们会发布{{Redtext|'''近百个'''}}外设的项目, 比如有红外传感器、ADC、DAC等等<br> *你可以选择你擅长的,完成某个即可获得酬劳<br> *你可以找人合作,比如你擅长写裸机,别人擅长写QEMU的GUI,你们一起合作就可以实现对某个外设的模拟。<br> =qemu简介= QEMU(Quick EMUlator的缩写)是一个免费开源模拟器。<br> 可以模拟x86,也可以模拟各种ARM板子<br> 百问网对QEMU做了很多改进,支持更多硬件,支持更多GUI现实,支持更方便的调试<br> *100ask-qemu特点 #模拟网卡 #模拟LCD显示功能 #模拟增加led灯 #模拟at24cxx i2c存储芯片,直接可以通过用户态操作看到效果 #增加逻辑分析仪显示功能 #后续会逐渐增加更多的模拟硬件模块 ::6.1 温湿度传感器 ::6.2 红外 ::6.3 超声波模块 ::6.4 ADC,DAC模块 ::6.5 I2C接口的传感器 ::6.6 SPI接口的OLED ::6.7 你想加啥,跟我们说 [[File:100ask_imx6ul_qemu_002.png|500px]] [[File:100ask_imx6ul_qemu_003.png|500px]] [[File:100ask_imx6ul_qemu_004.png|500px]] =快速使用= ==准备工作== *'''必须''' **一台可以上网的windows电脑 **一个可以正常使用Ubuntu虚拟机系统 *'''可选(注意,如果想要有更快效果,ubuntu下可以安装KVM)''' **安装kvm加速qemu运行,在终端下执行如下命令 $ sudo apt update $ sudo apt install qemu qemu-kvm libvirt-bin bridge-utils virt-manager ==获取镜像== {{Redtext|点击如下链接下载<br>}} [[download_ubuntu-18.04_imx6ul_qemu | ubuntu-18.04开发环境下qemu imx6ul系统镜像下载页面]]<br> [[download_ubuntu-16.04_imx6ul_qemu | ubuntu-16.04开发环境下qemu imx6ul系统镜像下载页面]]<br> 下载完成后上传到Ubuntu虚拟机中,执行如下命令进行解压缩操作。<br> <span style=" font-size:1.0rem; ">'''ubuntu-16.04解压操作步骤'''<br></span> $ tar -xvf weidongshan-ubuntu-16.04_imx6ul_qemu_system-release.tgz 然后进入<code>ubuntu-16.04_imx6ul_qemu_system</code>目录执行具体使用 <span style=" font-size:1.0rem; ">'''ubuntu-18.04解压操作步骤'''<br></span> $ tar -xvf weidongshan-ubuntu-18.04_imx6ul_qemu_system-release.tgz 然后进入<code>ubuntu-18.04_imx6ul_qemu_system</code>目录执行具体使用 ==运行qemu系统== {{Redtext | 运行qemu系统前需先按照上一步下载镜像文件 }}<br> 打开终端,在解压后的当前目录下执行如下命令 1.首次运行需要安装SDL环境以及解压文件系统镜像:<br> :使用脚本自动解压安装 $ ./install_sdl.sh // 提示输入用户密码,等待安装完成 '''{{Redtext | 注意qemu系统默认登录用户名为root 无密码 }}<br>''' 2.运行带GUI的imx6ul模拟器<br> :2.1 模拟百问网imx6ul-qemu开发板: $ ./qemu-imx6ul-gui.sh :2.2 模拟野火imx6ul-pro开发板: $ ./qemu-imx6ul-gui.sh fire :2.3 模拟正点原子imx6ul-alpha开发板: $ ./qemu-imx6ul-gui.sh atk 3.运行不带GUI的imx6ul模拟器<br> $ ./qemu-imx6ul-nogui.sh 4.如何退出qemu模拟器<br> :在终端下按住<code>Ctrl</code>和<code>a</code>键的同时按<code>c</code>即进入 '''qemu monitor'''模式, 再输入 <code>q</code>命令即可退出QEMU 5.如何退出qemu的GUI窗口 Ctrl + Alt + G ===参数讲解=== <code> -M mcimx6ul-evk </code>指定需要模拟的单板型号。<br> <code>-m 512M </code>指定模拟使用的内存大小。<br> <code>-kernel zImage</code>指定使用的内核镜像文件。<br> <code>-dtb </code>指定使用的设备树文件。<br> <code>-display sdl</code>指定使用那种显示输出。<br> <code>-serial mon:stdio</code>指定串口信息输出。<br> <code>-drive file=rootfs.img,format=raw,id=mysdcard -device sd-card,drive=mysdcard \</code><br> <code>-append "console=ttymxc0,115200 rootfstype=ext4 root=/dev/mmcblk1 rw rootwait init=/sbin/init loglevel=8" \</code><br> <code>-nic user</code>指定使用NAT共享主机网络方式上网。<br> ==操作示例== '''获取IP地址'''<br> :QEMU运行时,Ubuntu是Host即宿主机,QEMU给它分配的IP是10.0.2.2 :QEMU模拟的imx6ull板子是Guest即客户机,它会自动获取IP,也可以自己设置 :Guest可以通过10.0.2.2访问Host,Host不能访问Guest :Guest中可以使用ifconfig命令查看IP,如果没有IP,可以如下设置: ifconfig eth0 10.0.2.15 '''挂载主机nfs目录''' :QEMU模拟的imx6ull开发板,可以去访问10.0.2.2,比如使用NFS挂载: mount -t nfs -o nolock,vers=3 10.0.2.2:/home/book/nfs_rootfs /mnt '''测试lcd显示''' *画同心圆 myfb-test /dev/fb0 *测试LCD fb-test *显示文字 show_font '''编写并测试led驱动''' *安装编译好的led模块驱动 insmod 100ask_led.ko *打开并关闭led显示 ledtest /dev/100ask_led0 on ledtest /dev/100ask_led0 off '''测试i2c驱动''' :不需要写I2C驱动,可以通过用户态使用内核里自带的I2C接口访问外设:<br> :假设I2C存储芯片AT24C02接在IMX6UL的I2C0总线上,AT24C02的地址是0x50,<br> :可以执行下面的命令写AT24C02的0地址,读其0地址:<br> i2c_usr_test /dev/i2c-0 0x50 w 0 0x12 i2c_usr_test /dev/i2c-0 0x50 r 0 =高级玩法= ==获取源码== {{Redtext| 大家有发现问题或者有好的建议,欢迎在github相关仓库提 '''Issues''' }} {| class="wikitable" style="text-align: left; background-color: rgba(255,255,255,0.2)" |- ! 类别 !! 国外github仓库 !! 国内coding仓库 |- |linux kernel ||https://github.com/100askTeam/qemu_imx6ull_kernel.git || https://git.dev.tencent.com/weidongshan/qemu_imx6ull_kernel.git |- |qemu 源码 ||https://github.com/100askTeam/qemu.git || |- |buildroot || || |} ==编译运行源码== 编译imx6ul qemu内核源码 make 100ask_imx6ul_qemu_defconfig make zImage 得到arch/arm/boot/zImage make dtbs 得到arch/arm/boot/dts/100ask_imx6ul_qemu.dtb ==制作文件系统== <syntaxhighlight lang="bash"> $ dd if=/dev/zero of=rootfs.img bs=1M count=300 $ mkfs.ext4 rootfs.img $ mkdir ./tmp $ sudo mount -o loop rootfs.img ./tmp </syntaxhighlight> 拷贝源码到挂载的tmp目录下,等待拷贝完成 执行 sync 同步更新 <syntaxhighlight lang="bash"> $ umount ./tmp </syntaxhighlight> ==kgdb调试内核源码== ===编译内核镜像=== 等待编译生成的 vmlinux 带符号表的文件,以及zImage 和设备树文件 ===运行qemu=== <syntaxhighlight lang="bash"> qemu-system-arm -M mcimx6ul-evk -m 512M -kernel zImage \ -dtb 100ask_imx6ul_qemu.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 </syntaxhighlight> ===运行gdb程序调试=== $ arm-linux-gnueabihf-gdb -tui vmlinux 连接到qemu模拟的系统 (gdb) target remote localhost:1234 =其它相关= *参考资料 ** <code>QEMU user manual</code> https://qemu.weilnetz.de/doc/qemu-doc.html ** <code>QEMU</code>https://wiki.archlinux.org/index.php/QEMU {{TalkGroup}}
该页面使用的模板:
模板:Redtext
(
查看源代码
)
模板:TalkGroup
(
查看源代码
)
返回至
100ask imx6ul qemu
。
导航
导航
WIKI首页
官方店铺
资料下载
交流社区
所有页面
所有产品
MPU-Linux开发板
MCU-单片机开发板
Linux开发系列视频
单片机开发系列视频
所有模块配件
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志