我使用Qt Creator为STM32开发使用Bare Metal配置的嵌入式应用程序。当我在KIEL uVision,IAR System Workbench或一些Eclipse IDE等不同的IDE下调试此应用程序时,我可以看到特殊的视图,可以在树列表中看到处理器特定的寄存器。 Qt Creator有类似的东西吗?调试期间Qt Creator中的外设寄存器
我在调试视图中看到了注册视图。有没有可能告诉它显示哪个内存地址?
编辑:我正在编写的应用程序是在C和C++中。目标是基于ARM架构的微控制器,在这种情况下是STM32。将不会有Qt或QML代码。
我的目标是使用QtCreator作为开发这个应用程序的IDE。这很简单,因为您只需在套件配置中配置编译器(arm-none-eabi-gcc),调试器(arm-none-eabi-gdb)和gdb-server(openocd)。这使我可以为裸金属目标创建可执行的elf文件,然后将其闪存到单片机内的FLASH存储器。
所有这些步骤已经完成。
然而,调试部分变得棘手,因为内存空间的一部分是直接硬件配置而不是纯内存。此内存空间包含外设的配置,可让您通过UART,I2C,ETHERNET,USB进行通话或者只是配置引脚或时钟速度。
您需要查看这些值并将它们与参考手册进行比较,并查看每个位的功能。目前有可能查看内存映射并在那里读取它,但Keil uVision,IAR System Workbench和Ecplipse IDE有很好的插件,您可以在参考手册中看到完全相同的值。 (看图片)
所以我的问题是如果有一些插件或某种方式如何查看和编辑这些或如果我必须自己写这个插件?
在后一种情况下,我需要知道如何连接到调试器实例并写入命令和读取输出 - 主要是读取数据@地址和写入数据@地址。我知道gdb使用MI模式。我试图从不同的进程连接到gdb,但这是不可能的,所以我想我必须为Qt Creator创建插件。寄存器描述是文件格式SVD,它是具有定义的结构的XML。
总结最后一部分,我寻找代码,我必须在插件中实现代码,该代码将连接到运行的gdb,并允许我在发生断点时发送和接收数据。
这似乎是使用错误的工具来完成这项工作。如果你不使用Qt或QML,你为什么选择使用QtCreator?你已经列出了许多具有你想要的功能的环境,那么你为什么选择不使用这些功能呢? – rjp
我在Win,Mac和Linux程序以及Android上使用Qt和QML。在我看来,它有能力。唯一缺少的是这个特殊的观点。其他环境具有此功能,但它们像IDE一样糟糕。 IAR和Keil使用他们自己的构建系统和编译器,这些不适合我,因为我需要在构建期间添加自定义内容,因此我使用CMake。也没有便携式。怀疑葡萄酒会有帮助。 – phodina
Eclipse和GNU ARM工具有什么关系?看起来你正在试图把一个方形钉子钉入一个圆形洞中,因为你喜欢方形钉子比圆形钉子更好。你可能能够使用强力工作,但有更好的解决方案。 – rjp