不用开发板也能跑的RT-Thread

不用开发板也能跑的RT-Thread

简介

在物联网和嵌入式系统的开发中,RT-Thread操作系统凭借其小巧、高效和灵活的特点,受到了越来越多开发者的青睐。然而,对于很多刚刚接触RT-Thread的开发者来说,购买和使用开发板可能会成为一个门槛。本文将详细介绍如何在QEMU虚拟机的Vexpress-A9平台上运行RT-Thread,帮助开发者在没有实际硬件开发板的情况下,轻松体验和学习RT-Thread的强大功能。

1. 开发环境准备

**开发环境:**RT-Thrad源码 + env-windows工具 + VS Code

资源下载:Windows环境 使用VS Code开发RT-Thread

env-windwos使用教程: Env 用户手册 (rt-thread.org)

2. 编译

进入目标文件夹:rtthread/bsp/qemu-vexpress-a9

点击鼠标右键:点击ConEmu Here打开env

如果工具栏中没有出现ConEmu Here说明没有按照Env用户手册的指定步骤配置哈

在这里插入图片描述

打开env之后执行scons -j16命令进行编译

env-windows中已经帮我们配置好了工具链(默认arm-none-eabi-gcc)因此我们无需再额外下载其它的工具

路径:env-windows\tools\gnu_gcc\arm_gcc\mingw

scons 命令:执行当前文件夹下的SConscript脚本

-j16 参数:使用16个核心加速编译(不够16个核心的则用cpu已有的核心数进行编译)

出现如下的编译信息说明就是编译成功了

在这里插入图片描述

3. 运行

在env中执行命令qemu.bat

同样的env-windows中集成了qemu,因此我们可以直接在env命令行中直接使用qemu的命令

路径:env-windows\tools\qemu

我们的RT-Thread就成功运行起来啦!!!
在这里插入图片描述
可以尝试输入help查看能执行哪些命令
在这里插入图片描述

4. 调试

4.1 方式一(推荐)

更换调试器配置文件:qemu-vexpress-a9/.vscode/launch.json

将文件内容更换为:(也可能已经不用换了,如果大家发现文件内容不一样并且进不了调试就以这里配置信息的为准)

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug @ Windows",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}\\rtthread.elf",
            "args": [],
            "stopAtEntry": true,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": true,
            "miDebuggerServerAddress": "localhost:1234",
            "serverLaunchTimeout": 2000,
            "targetArchitecture": "ARM",
            "MIMode": "gdb",
            "miDebuggerPath": "arm-none-eabi-gdb.exe",
            "customLaunchSetupCommands": [],
            "launchCompleteCommand": "exec-run",
        },
    ]
}

更换完成后在env命令行中执行指令qemu-dbg.bat

执行后会出现如下界面:

在这里插入图片描述

然后我们进入到vscode中按下F5即可进入调试模式啦!

结果如下图:

在这里插入图片描述

4.2 方式二

这种方式呢比较古老,使用起来没那么方便,但是上述配置实在走不通的时候,我们至少能有个对策。

同样的,我们先在env命令行执行qemu-dbg.bat

然后另外在当前工作文件夹下再开启一个env命令行,执行arm-none-eabi-gdb rtthread.elf

我们就进入到了gdb的调试状态中

在这里插入图片描述

再执行target remote:1234

我们就可以进入到第一条指令的断点处了

在这里插入图片描述

不过我并不清楚为什么第一条指令的地址会在0x60000000处,我们多执行几条下一步指令就可以跳转到第一条指令啦

在这里插入图片描述

总结

好啦,这次的技术分享就介绍到这里,如果大家在学习过程中有疑问,或者对于这个教程的步骤说明有哪些建议或不满请积极在评论区指出,我也会积极对您进行回复并改正的。

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值