使用arm-none-eabi-gdb和openocd

时间:2018-02-04 11:22:46

标签: debugging gdb stm32 openocd

我使用openocdarm-none-eabi-gdbSTLinkV2-1来调试STM32F411CE芯片。我还使用LL和CMSIS库。问题是要检查例如一个引脚我必须在数据表中查找特定GPIO端口的寄存器边界地址(例如0x4002 0000 - 0x4002 03FFGPIOA),然后检查我想要读取的寄存器的偏移量(例如{{ 1}} 0x10)。然后检查一个特定的位,我必须再次在数据表中检查它在寄存器中的偏移量,并从十六进制值计算该位的值。因此,对于GPIOx_IDR,它将是:

gdb

通过输入类似的内容,是否有更简单的方法来获取价值:

(gdb) x 0x40020010
0x40020010: 0xa8280000 

我在get bit value in register GPIOA IDR 数据表或互联网上找不到任何能回答我问题的内容。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。

CMSIS定义了所有外围设备,因此我们可以使用它:

  1. 使用-gdwarf-4 -g3 gcc标志编译项目以使用gdb
  2. 中的预处理器宏
  3. 运行gdb

    arm-none-eabi-gdb -nw program.elf
    
  4. 使用CMSIS定义:检查例如: PORTB上的第3个引脚用作输入:

    (gdb) p (GPIOB->IDR & GPIO_BSRR_BS_3)