VSCode下 搭建 ARM Cortex-M 开发环境 -- Part 3 FreeRTOS Multi-threads Debug

  • Part 0 开发工具安装
  • Part 1 编译环境搭建
  • Part 2 调试环境搭建
  • Part 3 FreeRTOS Mulit-threads Debug

VSCode下 搭建 ARM Cortex-M 开发环境 -- Part 3 FreeRTOS Multi-threads Debug

前言

本章旨在记录如何在VSCode Debug环境下打开FreeRTOS Multi-threads Debug功能,包含以下内容:

  1. 修改OpenOCD config文件从而打开OpenOCD RTOS Support功能
  2. 定义uxTopUsedPriority变量
  3. 修改LinkScript避免uxTopUsedPriority变量被优化掉
  4. VSCode Debug时查看FreeRTOS下各个task状况

修改OpenOCD config文件从而打开OpenOCD RTOS Support功能

GDB本身是Support Multi-threads Debug的(例如info threads)。为了实现FreeRTOS下的Multi-threads debug,我们需要首先打开OpenOCD的RTOS Support功能:

  1. 在OpenOCD Config文件-rtos FreeRTOS Option
    该步要做的事情很简单:只需要在openocd config文件中增加“-rtos FreeRTOS”即可(如下代码)
set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME cortex_m -endian $_ENDIAN -dap $_CHIPNAME.dap

$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0 -rtos FreeRTOS

set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME stm32f2x 0 0 0 0 $_TARGETNAME

定义uxTopUsedPriority变量

  1. 在Kernel/FreeRTOS/portable/GCC/ARM_CM4F/port.c中定义uxTopUsedPriority变量
    该步要做的事情也很简单:只需要在Kernel/FreeRTOS/portable/GCC/ARM_CM4F/port.c中定义uxTopUsedPriority变量(如下代码)
    要注意的是:uxTopUsedPriority变量 一定需要用 __attribute__((used))修饰,从而避免uxTopUsedPriority变量在编译阶段就被优化掉了
/* Each task maintains its own interrupt status in the critical nesting
variable. */
static UBaseType_t uxCriticalNesting = 0xaaaaaaaa;
__attribute__((used)) const UBaseType_t uxTopUsedPriority = configMAX_PRIORITIES - 1;

修改LinkScript避免uxTopUsedPriority变量被优化掉

  1. 在顶层Makefile文件中增加--undefined=uxTopUsedPriority
    该步要做的事情也很简单:只需要在在顶层Makefile文件中增加--undefined=uxTopUsedPriority(如下代码)
    该步的作用是避免uxTopUsedPriority变量在Link阶段被优化掉
# LDFLAGS = --specs=nano.specs -lnosys -nostartfiles
# LDFLAGS += -Wl,-wrap=malloc -Wl,-wrap=calloc -Wl,-wrap=realloc -Wl,-wrap=free
# LDFLAGS += -Wl,-T./LinkerScripts/STM32F429ZI_FLASH.ld -Wl,--gc-sections
LDFLAGS += -nostartfiles --gc-sections
LDFLAGS += --undefined=uxTopUsedPriority

VSCode Debug时查看FreeRTOS下各个task状况

以上步骤完成后,我们再按照Part3的内容Debug时就会发现:暂停Target后,在VSCode Debug界面的调用堆栈下可以显示该Project中各个Tasks的callgraph可
需要注意的时,Multi-Thread debug下第一次按“开始调试”会连上后自动断开。遇到这个状况不用担心,只需要再按一次“开始调试”即可。(这个现象是VSCode已知bug:https://github.com/Microsoft/vscode-cpptools/issues/1075

Screenshot from 2019-08-17 10-32-31.png

本章总结

至此,我们在VSCode下debug Freertos multi-threads又更加方便了一点:可以在debug的时候同时查看各个task callgraph了^_^。
整个工程我已经Upload到Github, 欢迎大家下载!
https://github.com/TuringChenChao/STM32-VSCode

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,688评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,559评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,749评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,581评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,741评论 3 271
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,684评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,122评论 2 292
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,847评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,441评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,939评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,333评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,783评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,275评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,830评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,444评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,553评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,618评论 2 249

推荐阅读更多精彩内容