一板网电子技术论坛

woshi_ziyu
发表于: 2022-9-2 20:49:44 | 显示全部楼层

本篇文章主要介绍了如何创建、构建和调试一个使用Visual Studio和VisualGDB实现在STM32设备上运行的Azure RTOS (ThreadX) 基本项目。


在开始之前,请安装VisualGDB 5.6R3或更高版本。


1.  启动Visual Studio,点击“File->New Project”并找到VisualGDB Embedded Project Wizard

01-newprj-3.png

2.  输入新创建项目的名称和位置,然后单击“Create”继续VisualGDB向导:

01-newprj.png

3.  在“Project Type”页面上选择默认设置。我们建议使用Advanced CMake项目子系统以获得最佳结果:

02-cmake.png

4.  在下一页选择ARM工具链并选择您要使用的元件型号:

03-device.png

5.  在示例选择页面上,选择“LEDBlink (AzureRTOS)”示例。它使用与基于FreeRTOS的示例相同的结构,创建2个独立线程,每个线程控制一个LED。您可以配置LED端口/引脚以匹配您的电路板引脚排列,或者直接使用默认值:

04-sample.png

6.  在向导的最后一页,选择适用于您的电路板的调试设置,然后单击“Finish”以创建项目:

05-debug.png

7.  创建项目后,找到main源文件。请注意它如何为每个线程(LED_Thread1和LED_Thread2)包含一个函数。您可以使用Code Explorer方便地查看特定源文件的大纲,或者查看整个项目中的符号:

06-threads.png

8.  按F5构建项目并开始调试。如果您在向导中配置了正确的LED端口/引脚,您将看到LED闪烁。如果没有,您可以通过在Live Watch中找到g_TickCount变量来确认程序正在运行:

07-ticks.png

9.  暂停Live Watch中的图表视图并检查g_TickCount增加的速率。它应该接近每秒1000个滴答声:

08-delta.png

10.  如果观察到的定时器频率不同,请调整tx_initialize_low_level.S文件中的SYSTEM_CLOCK变量以匹配您的电路板的时钟频率:

freq.png

11.  使用Debug->Break All命令强制程序停止(或者,只需在其中一个线程函数中设置断点)。 VisualGDB将使用我们的开源ThreadX插件(需要自定义版本或更高版本)自动识别和显示ThreadX线程:

09-stop.png

12.  您可以在“线程”窗口中选择任何线程,并使用“Call Stack”窗口查看在执行切换到另一个线程之前它到底在做什么。在这个例子中,两个线程都在通过调用tx_thread_sleep()等待:

10-stack.png

13.  您可以使用VisualGDB代码资源管理器中的Globals视图快速探索代码(和AzureRTOS)不同部分之间的关​​系,并找到相关的函数、变量或类型。例如。尝试在代码资源管理器主窗口中搜索TX_THREAD,然后展开详细信息以显示参考。VisualGDB将显示所有具有此类型参数(或字段)的函数和结构:

refs.png

代码资源管理器还可以快速浏览调用树、继承树或查找分配/删除特定类型的函数。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 37 | 回复: 55



手机版|

GMT+8, 2022-10-7 08:25 , Processed in 0.024357 second(s), 7 queries , Gzip On, MemCache On. Powered by Discuz! X3.4

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表