【发布时间】:2018-02-04 11:22:46
【问题描述】:
我使用openocd、arm-none-eabi-gdb和STLinkV2-1调试STM32F411CE芯片。我也使用 LL 和 CMSIS 库。问题是要检查例如的值我必须在数据表中查找特定 GPIO 端口的寄存器边界地址(例如GPIOA 的0x4002 0000 - 0x4002 03FF)然后检查我要读取的寄存器的偏移量(例如@987654328 的0x10 @)。然后要检查一个特定的位,我必须在数据表中再次检查它在寄存器中的偏移量是什么,并从十六进制值计算该位的值。所以对于gdb,它将是:
(gdb) x 0x40020010
0x40020010: 0xa8280000
有没有更简单的方法来获取价值,通过输入类似的内容:
get bit value in register GPIOA IDR
我在openocd 数据表或互联网上找不到任何可以回答我问题的内容。
【问题讨论】:
-
像您一样查看芯片文档是 IMO 最简单的方法...您可以使用大量标头并编写一个小函数 unsigned int fun ( void ) { return(GPIOA_IDR);编译然后反汇编它会显示。 openocd 没有连接到 CMSIS(谢天谢地)这是它自己的交易,如果这种事情发生在它能够连接的所有可能的芯片上,那将是一场噩梦。 telnet/gdb 接口已记录在案,您可以轻松编写自己的程序来连接它们以及您希望创建的任何表。
标签: debugging gdb stm32 openocd