在这篇文章中,我们将逐步完成一个示例设置,该设置以模拟 Arm Cortex-M3 微控制器为例,展示了如何使用 QEMU 在 Visual Studio Code (VSCode) 编辑器中调试 FreeRTOS 应用程序。此示例不需要实际硬件,需要笔记本电脑或台式机作为开发环境。
首先,什么是 QEMU,我们为什么要使用它进行调试?QEMU 是一个计算机仿真器,允许你虚拟化硬件类型,支持跨不同的CPU架构进行虚拟化。这对于嵌入式开发非常有用,因为你可以针对可能无法立即访问的硬件目标板运行应用程序。这可能是因为(1)你仍在为嵌入式产品设计选择芯片的过程中,(2)你的电路板在其他地方,如实验室,(3)你希望在没有物理硬件的情况下运行自动化测试,或(4)真正的硬件供不应求。如果你遇到到这些限制中的任何一个,并且软件开发必须继续进行,那么 QEMU 可以提供帮助。
QEMU支持许多不同的硬件平台,从x86到ARM再到RISC-V。FreeRTOS 也支持许多不同的硬件平台。因此,值得指出的是,我们将在下面介绍的示例不仅限于 FreeRTOS 和 Arm Cortex-M3硬件平台。如果你有 Arm Cortex-M3 以外的目标板或者其他OS,你可以调整一下,使用基本相同的方法。
我们如何开始?为了启动和运行该示例,有许多先决条件和依赖项。我在下面分 7 个步骤列出了这个过程,你可以遵循这些步骤。顺序并不那么重要,除了第7步应该保持最后一步。开发计算机上可能已经安装了部分或全部这些工具,如果是这种情况,请仔细检查它们是否是最新的,并存在于你的工作路径中。
Step
步骤
1)下载和安装VSCode:
2)下载和安装QEMU:
3)下载和安装 Arm GNU Toolchain:
4)下载和安装 CMake:
5)针对 Windows,环境 下载和安装 Git
(包括 Bash terminal):Git应该已经安装MacOS 和 Linux 系统里面。
6)确保系统上安装了“make”。根据你的平台,有不同的方法可以做到这一点。
在Windows上,你可以使用 Chocolatey在命令提示符下使用下面命令安装 “make”:> choco install make。
在MacOS上,您可以使用以下命令在终端应用程序中使用Homebrew安装“make” $ brew install make。
在 Linux 上,您可以使用以下命令从终端使用包管理器安装“make”:$ sudo apt install build-essential。
7)添加 QEMU, Arm GNU Compiler, CMake, 和 'make' 安装路径到你的路径环境参数中。操作系统不同,完成方法不一样,确信使用了正确的方式。
安装必备工具后,继续克隆我们将使用的源代码。从命令行中,导航到要在其中使用演示代码克隆 FreeRTOS 存储库的文件夹(FreeRTOS repository with the demo code:
https://github.com/FreeRTOS/FreeRTOS),例如 $ cd $HOME/project。然后,继续从 GitHub 克隆 FreeRTOS 存储库,如下所示:$ git clone https://github.com/FreeRTOS/FreeRTOS.git --recurse-submodules
克隆存储库完成后,启动 VSCode。在 VSCode 中,在菜单中选择“File > Open Folder'”。导航到你刚刚克隆的 FreeRTOS 存储库,然后选择此子文件夹
'.../FreeRTOS/FreeRTOS/Demo/CORTEX_MPS2_QEMU_IAR_GCC'
VScode 加载演示文件夹后,在编辑器中打开“.vscode/launch.json”。找到 miDebuggerPath 参数并将值更改为你使用的电脑上“arm-none-eabi-gdb”所在的路径。
现在打开“main.c”并确保mainCREATE_SIMPLE_BLINKY_DEMO_ONLY设置为 1,代码构建后将生成简单的闪灯演示。
接下来,在VSCode中按左侧面板中的“Run and Debug”按钮。从顶部的下拉菜单中选择“Launch QEMU RTOSDemo”,然后按“play”按钮。这将生成代码、运行程序并联动了调试器。
从那里,你可以从按钮栏中“Continue”,“Step Over”,“Step Into”,“Step Out”和“Stop”,你还可以通过右键单击行号旁边,在代码中添加断点。
按“Continue”按钮将执行代码,将在终端中产生如下输出:
QEMU RTOSdemo started
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from software timer
这就是你在VSCode中使用QEMU调试FreeRTOS的一个范例,你可以使用此示例来尝试和探索一切的可能性,来调试一下吧!
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !