This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] EK-TM4C123GXL:使用 OpenOCD 查看 GDB 中的寄存器

Guru**** 2343840 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/604045/ek-tm4c123gxl-viewing-registers-in-gdb-with-openocd

器件型号:EK-TM4C123GXL

大家好、我一直在讨论 Ubuntu 16.04上的 GNU ARM 嵌入式工具链。  我能够从示例项目构建一个 bin、使用命令行 LM4Flash 实用程序将其闪存到我的 TM4C 开发板、我甚至能够使用 GDB/OpenOCD 调试代码步进。  

在 GDB 中、我可以使用典型的"i r"命令查看内核寄存器。  不过、我真正希望能够查看各种其他寄存器-例如系统控制 RCC2寄存器(0x400F.E070)-与查看内核寄存器的速度类似(和相似的输出格式)。

这似乎是我当前唯一的选择是查看存储器以查看寄存器内容...  希望有一种更快的方法来实现这一点、并想知道是否有其他人使用 GDB/OpenOCD 并且有更好的方法?    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉我不使用 OpenOCD。 由于这些只是存储器映射寄存器、因此这实际上是一个通用的 OpenOCD 问题。 您问过吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您(被承认)的"混乱"(ma.)是否让您远离畜群?   

    "混合方法"可能更好地使您能够"从两杯饮料"、而不是"仅限于"一杯?

    使用 Windows 盒以及您的"系统混乱"是否满足(两者)需求(M.A 和高效查看多个寄存器的能力)?

    Fir/I 开发的另一种方法是使用"可切换代码块"、通过 SPI 定期将"密钥/关键寄存器数据"输出到专用显示屏。  (类似于"SWO 函数")

    当您选择时、"让自己远离畜群"-也许保持他们的喊声和尾巴(如此处所建议)是两个世界中最好的。  (或杯)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Bob Crosby">抱歉、我不使用 OpenOCD。 由于这些只是存储器映射寄存器、因此这实际上是一个通用的 OpenOCD 问题。 您问过吗?

    好的、Bob。  同意这更像是 OpenOCD 问题。  我刚刚找到了他们的论坛、并将继续跟进。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 USER="CB1_MOBILE "]

    您(被承认)的"混乱"(ma.)是否让您远离畜群?   

    "混合方法"可能更好地使您能够"从两杯饮料"、而不是"仅限于"一杯?

    使用 Windows 盒以及您的"系统混乱"是否满足(两者)需求(M.A 和高效查看多个寄存器的能力)?

    Fir/I 开发的另一种方法是使用"可切换代码块"、通过 SPI 定期将"密钥/关键寄存器数据"输出到专用显示屏。  (类似于"SWO 函数")

    在您选择"让自己远离畜群"的同时、也许保持他们的喊声和尾巴(如本文所建议)可以提供两个世界中的最佳选择。  (或杯)

    [/报价]

    CB1_MOBILE -感谢您的回复。  总是欣赏你的评论和类比:) 是的, 我必须承认、GNU ARM 嵌入式工具链和 OpenOCD 调试器似乎并不是开发和调试的常规路径、但我无法帮助消除我的好奇心和兴趣、让我了解不同开发人员如何以各种方式开发用于此开发的嵌入式软件 电路板。

    我喜欢你的建议。  如果我理解正确、实际上我最近做了类似的事情、使用 UART0和终端程序(PuTTY)来显示实时记录信息。

    我很好奇、 您能不能在您对"可切换代码块"的引用中说明一下"可切换"是什么意思?  您是否只是指代码中的分支逻辑以根据运行时的不同条件显示不同的信息?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Terence:

    使用 GDB、您可以使用"x"命令查询(检查)寄存器;例如:"x/x 0x400FE070"将显示系统控制 RCC2寄存器的内容。 /x 是以十六进制格式化响应。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢您-当然尝试以(一些)幽默方式工作-否则"所有工作和无游戏..." (Adios 动机)

    您已通过您对"分支逻辑"的识别" bingo'ed "我的意图、该逻辑可根据我们当前的"最感兴趣的代码区域"对不同变量进行最高效的"分组"。   (例如、我们可能有一个 PWM 发生器触发 MCU 的 ADC -因此来自(两个)外设的密钥寄存器被组合在一起。)    另一个功能包括:计数、监控和显示"生命体征代码块中的(实际或相对)条目的数量"。    请注意-我们在代码运行时实现了此功能-不会停止!     您清楚、足够聪明且清楚-能够根据您的兴趣和应用程序创建此类实施方案。

    请允许我注意、我们的"高分辨率"(800x480) TFT 采用自己的(专用) Cortex M7 (运行速度高于此处的器件)、并包含一个功能强大的"图形加速器"。    这减轻了我们的"主要工作" MCU 的负担、更好地确保了我们的"测量系统/工作"不会削弱或发现我们的"工作正常" MCU。

    仍然-多个客户已"尝试"您的目标(变体)。    经常会看到他们的血腥和布鲁的尸体,尽管我们必须努力去远离已知、安全、磨损良好的(主要)小径……

    [编辑]在本帖子发布前2分钟到达-一个来自"另一个"-指示"大量键盘活动(要求我使用 "全部10个"手指-和"4个脚趾")-以获取(可能)一个寄存器的内容。"   (静止不动-我的心-假设它在键盘盛宴中幸存了!)    我们通常会处理和显示5-25 (相信我们已经测试了多达30个)寄存器-不需要这样的手动数据输入/提示!    

    我应该注意的是、我们的"Pro IDE"(IAR)具有类似的功能、即"实时监视"和"实时查看密钥/关键寄存器"(无物理要求)的能力远远超过了关键选通(一次一出)高度集中的替代方案!     请注意、我们专用的高速显示方法与 Windows 不相关、因此似乎是您考虑的"高候选项"。。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 USER="Andrew_">对于 GDB、您可以使用"x"命令查询(检查)寄存器;例如:"x/x 0x400FE070"将显示系统控制 RCC2寄存器的内容。 /x 是以十六进制格式化响应。

    Andrew、您好、感谢您的回答。  是的、这基本上就是我得出的结论、我必须做的事情、不幸的是、这并不是很快、因为它需要在数据表中查找存储器地址并键入它。  我看到 GDB 中有宏、因此这可能是人们使用 GDB 进行调试的用途。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="CB1_mobile "]我可以注意到我们的"高分辨率"(800x480) TFT 采用了自己的(专用) Cortex M7 (运行速度高于此处的器件-并且包含一个功能强大的"图形加速器")。    这减轻了我们的"主要工作" MCU 的负担、并且更好地确保了我们的"测量系统/工作"不会削弱或发现我们的"工作-工作" MCU。[/引述]

    有趣。  是的、卸载显示任务似乎是一种很好的策略。

    [引用 USER="CB1_MOBILE "]我应该注意到,我们的"Pro IDE"(IAR)具有类似的功能,即“实时监视”和“实时查看密钥/关键寄存器”(无物理要求)的能力远远超过了密钥选通(一次一个揭示)集中的替代方案!     请注意、我们专用的高速显示方法不会绑定到 Windows -因此似乎是您考虑的"高候选项"...

    是的、我听到了。  使用 IDE 进行调试绝对是方便的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想指出的是、专用显示屏-在"自动"显示屏上放置多个寄存器"方面大大重复了基于 Windows 的 IDE 的功能、这证明(远远超出)"方便"。   (在代码运行时观察变量"实时更新"的能力证明了"极具价值且富有洞察力..."    和-如上所述-这完全满足您在部署"OpenOCD"时的指定要求、即"查看寄存器"。

    为了记录-早期帖子(标记为已验证)似乎充其量是没有产生"验证!   (它引导您到其他地方的矢量-不是吗?)   在努力、清晰度、原创性(和"颜色")-代表您的另一个帖子(详细)-似乎"更有理由" 验证...