Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
QEMU
QEMU+WebClient
发布于 2021-01-20 17:28:19 浏览:2860
订阅该版
[tocm] ## QEMU 仿真介绍 嵌入式软件开发离不开开发板,在没有物理开发板的情况下,可以使用 QEMU 等类似的虚拟机来虚拟开发板。QEMU 是一个支持跨平台的虚拟机,它可以虚拟很多开发板。为了方便在没有开发板的情况下开发嵌入式应用,RT-Thread Studio 提供了 QEMU 虚拟仿真调试器。 本文主要介绍在 Windows 平台上使用 RT-Thread Studio QEMU 虚拟器进行仿真。 ### 创建工程 1. 点击 **File**, 新建 **RT-Thread** 工程: ![new_prj.png](https://oss-club.rt-thread.org/uploads/20210120/07fe120703d412f5d470f108ab6fa273.png) 2. 工程配置,如下图所示,在 **Adapter** 配置项选择 QEMU,并且配置适合的模拟器: ![create_prj.png](https://oss-club.rt-thread.org/uploads/20210120/8737ef54619c7c6e7f437d48ddea932e.png) 3. 点击 **Finish** 按钮,一个新的 QEMU 工程会在工作空间中创建完成。 ### 切换调试器到 QEMU 如果当前工程为老工程或者当前选择的调试器是 QEMU 以外的调试器,想使用 QEMU 进行调试,可点击下载按钮右边的下拉框,选择 QEMU : ![switch_to_qemu.png](https://oss-club.rt-thread.org/uploads/20210120/6f0657f85d4cc3ff737afde596062948.png) 若当前工程还未配置 QEMU ,那么在选择 QEMU 后,会弹出 `QEMU hasn't been configured` 的提示,点击【Yes】,会显示 QEMU 配置界面,具体详情将在下一节介绍。 ![qemu1.png](https://oss-club.rt-thread.org/uploads/20210120/e49ab49b65ac5feaad07a438cfc5ba39.png) ### QEMU 配置 点击【打开调试配置】跳转到 QEMU 配置界面,可以配置的参数如下: | Parameter | command | | :------------------------: | :--------: | | Emulator | -M | | Cpu Quantity | -smp | | SD Card Memory | -sd | | Don't open grapgic windows | -nographic | | Use TAP for network | -net | | Extra Commands | None | 填写完整后,点击确定,即可正常进行调试和运行,默认配置如下所示: ![dbg_cfg.png](https://oss-club.rt-thread.org/uploads/20210120/c997c5a4c00d76b88c129162718f3e03.png) ### 仿真调试 在编译正常的情况下,点击调式按钮,IDE 会自动启动 QEMU 并打开串口,并进入断点调试模式,在此模式中,可一步一步观察每次断点的输出情况,亦可在串口中执行自己的命令。 ![print.png](https://oss-club.rt-thread.org/uploads/20210120/1188699d7ad993d5133d9ad0e71848b9.png) ## QEMU 串口调试 RT-Thread 支持 FinSH,用户可以在命令行模式使用命令操作。在调试终端输入 `help` 或按 tab 键可以查看所有支持的命令。如下图所示,左边为命令,右边为命令描述。上一步介绍了如何启动 QEMU,这一步介绍如何在串口中调试 QEMU 用户程序。 ![shell.png](https://oss-club.rt-thread.org/uploads/20210120/5f973fa328c2d44f7d311647b07bac18.png) ### 查看当前线程 查看当前线程以及线程状态和堆栈大小等信息,输入命令 `list_thread`: ![list_thread.png](https://oss-club.rt-thread.org/uploads/20210120/f9e16f5953e417cf87813c9e3a291f29.png) ### 查看定时器的状态 查看定时器的状态输入命令 `list_timer`: ![list_timer.png](https://oss-club.rt-thread.org/uploads/20210120/f20c0b703982366b952531ba7c75f102.png) ### 添加用户命令 1. 用户可以使用 `MSH_CMD_EXPORT` 将命令导出到 msh: ```c static int hello_sample(int argc, char **argv) { if (argc == 1) { rt_kprintf("hello, world!\n"); } return RT_EOK; } MSH_CMD_EXPORT(hello_sample, hello world); ``` 2. 编译之后可以在终端输入自定义的命令 `hello_sample` : ![hello_world.png](https://oss-club.rt-thread.org/uploads/20210120/2b7f814ed382f657eb79ccc270ac47c1.png) ## QEMU 网络通信 上面介绍了 QEMU 的基础应用,这里介绍一下 QEMU 上的复杂外设使用流程。RT-Thread Studio QEMU 支持网络通信;通过使能 LWIP,可以使 QEMU 连接到网络。 ### 基础应用 1. 开启 ETH;点击 **RT-Thread Settings**, 选择 **Hardware**, 开启 ETH 功能: ![eth.png](https://oss-club.rt-thread.org/uploads/20210120/1c1c1af6c7fb36b9230a964841200205.png) 2. 开启 SAL;点击 **Components**, 选择 **Enable socket abstraction layer**: ![sal.png](https://oss-club.rt-thread.org/uploads/20210120/004c738ea2b9ec1d03a01428790c6937.png) 3. 保存配置;可以使用组合命令 `Ctrl+Shift+S`, 或者下面的按钮来保存配置: ![save.png](https://oss-club.rt-thread.org/uploads/20210120/ef523e2c9b68c22a59f33fd25527e6d1.png) 4. 调试;点击编译按钮,编译完成后启动调试;在终端输入 ifconfig 命令查询 QEMU 获取到的 IP 地址: ![ifconfig.png](https://oss-club.rt-thread.org/uploads/20210120/1175e6a743b5ca2762d6479ceda77856.png) ### 高级应用 上面介绍了 QEMU 以太网的基础应用,本节将会介绍如何在 QEMU 上运行以太网的高级应用。 #### IoT Packages 得益于 RT-Thread 丰富的软件包,Studio 用户可以快速的开发网络应用层,而不再关注于底层适配。如下,是在 QEMU 上使用 IoT 软件包的示例。 1. 打开 **RT-Thread Setting**,开启 **WebClient** 软件包,使能 **WebClient GET/POST sample**: ![web_client.png](https://oss-club.rt-thread.org/uploads/20210120/ebf16b157f1f67eb51a3d2022735d038.png) 2. 保存配置; 3. 编译,开启调试;终端输入命令 `web_get_test`, `web_post_test` 测试 qemu 网络功能: ![web_test.png](https://oss-club.rt-thread.org/uploads/20210120/3e25507f1a9d0e0537ad5f9bbdc7df19.png) #### 开启 TAP 默认的 QEMU 配置无法使用 ping 命令;开启 TAP 之后,QEMU 可以使用 ping 命令。 1. 安装 [TAP](https://tap-windows.updatestar.com/) 网卡, 一路默认安装即可: ![tap_install.png](https://oss-club.rt-thread.org/uploads/20210120/ea26227915666a7b908ba2c89de22515.png) 2. 配置 TAP 网卡;打开网络和共享中心更改适配器设置,将安装的虚拟网卡重命名为 tap,如下图所示: ![tap_rename.png](https://oss-club.rt-thread.org/uploads/20210120/7d36904ab5bb2603e3dfb38432c010d9.png) 3. 右键当前能上网的网络连接(本文使用以太网),打开属性 -> 共享,选择家庭网络连接为 tap,点击确定完成设置,如下图所示:(如果只有一个网卡的话,就不用下拉选择网卡了,只要勾选允许共享即可) ![tap_share.png](https://oss-club.rt-thread.org/uploads/20210120/479d36f8804664adc46394636100be0b.png) 4. 配置 QEMU,添加 TAP 配置,保存配置: ![TAP_NAME.png](https://oss-club.rt-thread.org/uploads/20210120/aa291a5a77364fce2d8bbf06d19ed093.png) 5. 编译,开启调试,进行 ping 测试: ![tap_ping.png](https://oss-club.rt-thread.org/uploads/20210120/492575566df94a62b8c9dc5199605370.png)
2
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
Papalymo
请勿打扰
文章
25
回答
85
被采纳
17
关注TA
发私信
相关文章
1
Linux下的Qemu mini2440虚拟机(32位和64位)
2
有qemu Linux的rt-thread开发环境建立吗?
3
qemu+mini2440+bootloader问题
4
QEMU gdbstub 在Win7下的bug
5
请教如何在windows下使用qemu测试rrt0.31中的例子
6
QEMU运行os问题
7
QEMU-mini2440 模拟环境上运行RT-thread这篇
8
在Ubuntu上执行qemu的configure命令checkzlib失败
9
求大舅:telnet-连接QEMU时,QEMU segmentation fault 结束
10
RealTouch打算出QEMU模拟器吗
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部