0
点赞
收藏
分享

微信扫一扫

1251_FreeRTOS_QEMU例程中的QEMU命令参数分析


全部学习汇总: ​​GreyZhang/g_QEMU: QEMU is a good toolt for emulation and development. I need some basic knowledge and skills to support my hacking. (github.com)​​

本来是想简单看一下就过了,但是看了一下QEMU的简单介绍,十分强大。后续保不准我也会自己搞一套虚拟化环境,更加上这个还可以提供CAN bus的模拟环境,我觉得很有必要花点时间学习下了。

先看一下现在的FreeRTOS中的命令例子。

qemu-system-arm -machine mps2-an385 -cpu cortex-m3 -kernel [path-to]/RTOSDemo.out -nographic -serial stdio -semihosting -semihosting-config enable=on,target=native -s -S

以上是执行QEMU仿真运行程序的命令,其中-s -S的作用现在已经知道了,主要的作用是为了支持调试器的接入。接下来的命令参数的分析可以走一个简化的路线,忽略这两个参数的具体研究。

-machine

这个参数我大概看了一下,其实指定的并不是MCU,而是基于MCU的某一个板子。加一个help能够看到更多的支持信息。从查看的帮助信息中,能够看到很多熟悉的开发板。

1251_FreeRTOS_QEMU例程中的QEMU命令参数分析_stm32

这几个开发板的额名字大概还是挺过的,尤其是飞思卡尔,现在的NXP这两个。这里面也有FreeRTOS采用的这个板子,这是这次学习OS要用的环境,也就不画出来了。

1251_FreeRTOS_QEMU例程中的QEMU命令参数分析_单片机_02

这几个也都是听过的,而且我自己有树莓派2B以及i.MX6 Quad的开发板。

1251_FreeRTOS_QEMU例程中的QEMU命令参数分析_嵌入式硬件_03

不知道图中画出来的部分是否是正点原子的那个板子,如果是的话,这个板子我也是有的。看起来,没有早点了解QEMU,还是多花了不少钱的。毕竟,我现在囤积的大批的板子很多都是为了简单了解而买的。

-cpu

这个参数选择的应该是MCU的内核架构,这里的架构选择的是Cortex M3。

1251_FreeRTOS_QEMU例程中的QEMU命令参数分析_嵌入式硬件_04

而上面的这个图中是现在工具支持的所有的CPU。

-kernel

这个参数我没有找到明确的关于现在的这个例程中用法的说明,大部分时候这个是关于linux等操作系统内核的。不过,我在另一个板子的介绍信息中找到了一段描述应该就是这里的用法。

1251_FreeRTOS_QEMU例程中的QEMU命令参数分析_FreeRTOS_05

这里的用法是用于指明烧录固件的,正好也符合我现在使用的场景。

1251_FreeRTOS_QEMU例程中的QEMU命令参数分析_QEMU_06

在查找kernel的介绍的过程中,有一个意外的收获。那就是发现QEMU其实还是可以模拟CAN总线的,如果CAN总线也可以模拟出来的话,那么做CAN协议的一些开发测试就有了更多的便利之处了。关于这部分的使用,后面还是得好好了解一下。

-nographic

这个是为了阻止图形化edQEMU主程序启动,去掉之后可以出现一个QEMU的窗口。我倒觉得这个去掉让窗口出来很好。这样就可以直接通过这个窗口退出,而不用在终端杀死进程。或许,在终端退出还有更好的方式,在找到之前暂且还是去掉吧。去掉之后,能够看到的一个窗口如下;

1251_FreeRTOS_QEMU例程中的QEMU命令参数分析_QEMU_07

在这个窗口上,按照提示输出help之后的确是看到了一些帮助信息。这种现实的效果让我联想到了gdb,我也条件反射一般输入了一个q,没想到还真是QEMU的一个退出命令。再次尝试,输入quit也是退出的命令。

进一步,我回到了无窗口的模式。测试了一下,快速输入quit之后回车,其实也可以退出QEMU。输入q,回车快速跟上也是可以的,但是我发现两者其实都有一定的失败几率。而无窗口模式下,运行有一个启动过程。暂且没有找到什么明确的说明如何启动,但是我发现R或者rrr或者shif等若干按键甚至组合都可以让程序启动。

-serial stdio

这个没有去查找,但是从字面的意思上应该是让串口的信息路由大标准的输入输出上。

-semihosting -semihosting-config enable=on,target=native

1251_FreeRTOS_QEMU例程中的QEMU命令参数分析_FreeRTOS_08

1251_FreeRTOS_QEMU例程中的QEMU命令参数分析_单片机_09

通过上面的描述,这个应该是实现了半主机的功能。可以允许QEMU直接访问HOST的文件系统。关于这部分,我了解的不多。以前以为这样的功能就是为了能够提供printf这样的功能而设计的,现在看来似乎不是。因为我字节把这个参数去掉之后,printf的功能依然是有效的。

举报

相关推荐

0 条评论