0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用VS Code调试 RT-Thread qemu-vexpress-a9 BSP工程

lPCU_elecfans 来源:未知 作者:李倩 2018-09-21 10:16 次阅读

本应用笔记描述了在 Windows 平台使用 VS Code 调试 RT-Thread qemu-vexpress-a9 BSP 工程。

本文的目的和结构

本文的目的和背景

VS Code(全称 Visual Studio Code)是一个轻量且强大的代码编辑器,支持 Windows,OS X 和 Linux。内置 JavaScript、TypeScript 和 Node.js 支持,而且拥有丰富的插件生态系统,可通过安装插件来支持 C++C#Python、PHP 等其他语言。

本文主要介绍在 Windows 平台使用 VS Code 调试 qemu-vexpress-a9 BSP 工程。

本文的结构

本文主要介绍 VS Code 调试准备工作以及如何调试工程。

准备工作

下载 RT-Thread 源码,推荐下载3.1.0及以上版本。

下载 RT-Thread Env 工具,推荐下载1.0.0及以上版本。

https://www.rt-thread.org/document/site/rtthread-development-guide/rtthread-tool-manual/env/env-user-manual/

下载 VS Code

https://code.visualstudio.com/Download

以上网址请复制至浏览器打开

运行和调试 RT-Thread

步骤一 安装调试插件

在 VS Code Extensions 里下载并安装支持 C/C++ 的调试插件:

安装好后确认插件为以下状态,如果不是则点击重新加载:

步骤二 打开 VS Code 项目工程

在 Env 控制台进入 qemu-vexpress-a9 BSP 根目录,然后输入命令code .打开 VS Code。

VS Code 打开后会自动打开 qemu-vexpress-a9 BSP 文件夹,如下图所示。

步骤三 编译 RT-Thread

点击 VS Code “查看 -> 终端” 打开 VS Code 内部终端,在终端里输入命令scons即可编译工程,终端会打印出编译信息

编译完成后输入.qemu.bat命令就可以运行工程。终端会输出 RT-Thread 启动 logo 信息,QEMU 也运行了起来。

注意事项:

1、调试 BSP 工程前需要先编译工程生成 rtthread.elf 文件。

2、可以使用scons --target=vsc -s命令更新 VS Code 需要用到的 C/C++ 头文件搜索路径信息。不是每次都需要更新,只有在使用了 menuconfig 重新配置了 RT-Thread 或更改了 rtconfig.h 头文件时才需要。

步骤四 修改 qemu-dbg.bat 文件

开始调试前需要编辑qemu-vexpress-a9目录下的qemu-dbg.bat文件,在 qemu-system-arm 前加入 start :

@echo offif exist sd.bin goto run qemu-img create -f raw sd.bin 64M :run start qemu-system-arm -M vexpress-a9 -kernel rtthread.elf -serial stdio -sd sd.bin -S -s

步骤五 调试工程

如下图所示,在 VS Code 里点击调试菜单(小虫子图标),调试平台选择 Windows,然后按 F5 就可以开启 QEMU 调试模式,断点停留在 main 函数。VS Code 调试选项如下图所示:

QEMU 也运行了起来,如下图所示。

在 VS Code 里可以使用 GDB 命令,需要在最前面加上-exec。 例如-exec info registers命令可以查看寄存器的内容:

其他一些主要命令介绍如下所示:

查看内存地址内容:x/ ,各个参数说明如下所示:

n 是一个正整数,表示需要显示的内存单元的个数,也就是说从当前地址向后显示几个内存单元的内容,一个内存单元的大小由后面的 u 定义

f 表示显示的格式,参见下面。如果地址所指的是字符串,那么格式可以是 s。其他格式如下表所示:

u 表示从当前地址往后请求的字节数,如果不指定的话,GDB 默认是 4 个 bytes。u 参数可以用下面的字符来代替,b 表示单字节,h 表示双字节,w 表示四字 节,g 表示八字节。当我们指定了字节长度后,GDB 会从指内存定的内存地址开始,读写指定字节,并把其当作一个值取出来。

addr 表示一个内存地址。

注意事项:严格区分 n 和 u 的关系,n 表示单元个数,u 表示每个单元的大小。

示例:x/3uh 0x54320表示从内存地址 0x54320 读取内容,h 表示以双字节为一个单位,3 表示输出三个单位,u 表示按十六进制显示。

查看当前程序栈的内容: x/10x $sp--> 打印 stack 的前 10 个元素查看当前程序栈的信息: info frame----list general info about the frame查看当前程序栈的参数: info args---lists arguments to the function查看当前程序栈的局部变量: info locals---list variables stored in the frame查看当前寄存器的值:info registers(不包括浮点寄存器) info all-registers(包括浮点寄存器)查看当前栈帧中的异常处理器:info catch(exception handlers)

Tips:输入命令时可以只输入每个命令的第一个字母。例如:info registers可以只输入i r。

注意事项

如果在 VS Code 目录中额外添加了文件夹,会导致调试不能够启动。

每次开始调试都需要使用 Env 工具在 BSP 根目录使用code .命令打开 VS Code 才能正常调试工程。

参考

Env 工具使用手册

常见问题

Env 工具的相关问题请参考 Env 工具使用手册的常用资料链接小节。

提示找不到 ‘qemu-system-arm’。

解决方法:直接打开 VS Code 调试工程会有这个错误,请使用 Env 工具在 BSP 根目录使用code .命令打开 VS Code 。

VS Code 调试选项没有出现 Debug@windows选项。

解决方法:请更新RT-Thread源代码到3.1.0及以上版本。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WINDOWS
    +关注

    关注

    3

    文章

    3524

    浏览量

    88398
  • 编辑器
    +关注

    关注

    1

    文章

    800

    浏览量

    31108
  • 生态系统
    +关注

    关注

    0

    文章

    700

    浏览量

    20706

原文标题:【RTOS专栏】使用 VS Code + QEMU 调试 RT-Thread

文章出处:【微信号:elecfans,微信公众号:电子发烧友网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

    开发板的情况下体验RT-ThreadRT-Thread使用QEMU模拟了ARM vexpress A9开发板,并提供了相关的板级支持包(
    的头像 发表于 02-08 08:50 1.4w次阅读
    如何在windows和linux平台使用<b class='flag-5'>RT-Thread</b> <b class='flag-5'>QEMU</b> <b class='flag-5'>BSP</b>,并运行<b class='flag-5'>RT</b>-ThreadGUI示例

    如何在Ubuntu平台使用QEMU运行RT-Threadqemu-vexpress-a9BSP工程

    本文描述了如何在 Ubuntu 平台使用 QEMU 运行 RT-Thread qemu-vexpress-a9 BSP 工程
    发表于 03-30 07:40

    如何在Windows平台使用VSCode开发RT-Threadqemu-vexpress-a9BSP工程

    本文描述了在 Windows 平台使用 VS Code 开发 RT-Thread qemu-vexpress-a9 BSP
    发表于 03-30 07:59

    如何在Windows平台使用VSCode调试qemu-vexpress-a9BSP工程

    和 Node.js 支持,而且拥有丰富的插件生态系统,可通过安装插件来支持 C++、C#、Python、PHP 等其他语言。 本文主要介绍在 Windows 平台使用 VS Code 调试
    发表于 03-30 07:15

    怎么使用Eclipse开发RT-Thread

    在 Windows 平台使用 Eclipse 开发 RT-Thread qemu-vexpress-a9 BSP 工程的时候怎么使用 Eclipse 开发
    发表于 04-02 07:48

    在Windows上使用VS Code开发RT-Thread qemu-vexpress-a9 BSP工程

    了。本文描述了在 Windows 平台使用 VS Code 开发 RT-Thread qemu-vexpress-a9 BSP
    发表于 03-31 18:07

    官方下载rt-thread bspqemu-vexpress-a9 bsp出现tcp client编译不通过如何处理

    官方下载rt-thread bspqemu-vexpress-a9 bsp出现tcp client编译不通过情况。操作流程:menuconfig 配置tcp clientpkgs -
    发表于 05-05 10:02

    基于RT-Thread ubuntu 18.04系统VSCode调试qemu程序的介绍

    ;#039;groups':File "/home/tangjia/Jackistang/rt-thread/bsp/qemu-vexpress-a9
    发表于 06-22 11:31

    如何在Window及Ubuntu平台使用QEMU运行 RT-Thread qemu-vexpress-a9 BSP工程

    摘要本应用笔记描述了如何在 Window 及 Ubuntu 平台使用 QEMU 运行 RT-Thread qemu-vexpress-a9 BSP
    发表于 10-26 15:19

    在Windows平台使用VSCode调试 RT-Thread qemu-vexpress-a9 BSP工程

    摘要本应用笔记描述了在 Windows 平台使用 VS Code 调试 RT-Thread qemu-vexpress-a9
    发表于 10-26 15:25

    在Windows平台使用Eclipse调试RT-Thread qemu-vexpress-a9 BSP工程

    使用 Eclipse 调试 RT-Thread qemu-vexpress-a9 BSP 工程。本文的结构本文主要介绍了 Eclipse
    发表于 10-26 15:31

    请教大神qemu模拟cortex-A53运行rt-thread出错怎么解决呢?

    新手小白,参考官网文档运行 RT-Thread qemu-vexpress-a9 BSP 工程的方法自己配置了qemu-virt64-aar
    发表于 02-15 10:51

    scans编译qemu-vexpress-a9报错该如何解决这个问题?

    本人RT_Thread新手,想参考教程《在 Window 平台使用 QEMU 运行 RT-Thread》学习下RT,但是在scons编译qemu-v
    发表于 03-10 11:40

    ENV编译QEMU-vexpress-a9编译报错提示没找到 resource_id.h

    rt-thread-master\\\\bsp\\\\qemu-vexpress-a9 目录下进行sons编译,但报错了,提示没找到 resource_id.h,如图
    发表于 08-04 16:39

    rt-thread studio中创建smart工程,使用qemu-vexpress-a9进行编译失败了的原因?

    rt-thread studio中创建smart工程,使用qemu-vexpress-a9进行编译,失败 请问:是不是smart项目还不支持啊?
    发表于 09-07 16:54