OpenOCD无法连接皮质处理器

时间:2017-04-25 13:41:55

标签: linux cortex-m openocd nrf51

我正在尝试从Raspberry Pi 3计算模块GPIO中闪存基于皮质m0的SoC,但它仍然会出现相同的错误。

  

错误:无法初始化调试端口

我正在关注此https://learn.adafruit.com/programming-microcontrollers-using-openocd-on-raspberry-pi?view=all和本教程https://movr0.com/2016/09/02/use-raspberry-pi-23-as-a-jtagswd-adapter/。编译和安装没有问题。

cortex m0 SoC是一款采用ISP1302模块封装的Nordic Semiconductor nRF51822蓝牙芯片。

根据教程,模块GND和3.3V直接连接到Compute模块dev-kit,SWDCLK和SWDIO连接到GPIO 25,24上。 SRST或TRST没有任何关联。

配置文件如下:

source [find interface/raspberrypi2-native.cfg]
bcm2835gpio_swd_nums 25 24
transport select swd

# target
source [find target/nrf51.cfg]

init
targets

(我从raspberrypi2-native.cfg中删除了bcm2835gpio_srst_num 18

使用sudo openocd -f config.cfg

执行

raspberry Pi CM3在core_freq=250上使用选项/boot/config.txt运行,我需要此选项才能可靠地访问UART1。我认为它可能与时钟有关,但不确定如何改变/修复它。

我尝试了reset_config的几种组合,没有改变错误。完整初始化堆栈如下:

Open On-Chip Debugger 0.10.0+dev-00111-gca9dcc8 (2017-04-24-15:30)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
BCM2835 GPIO nums: swclk = 25, swdio = 24
cortex_m reset_config sysresetreq
adapter speed: 1000 kHz
Info : BCM2835 GPIO JTAG/SWD bitbang driver
Info : SWD only mode enabled (specify tck, tms, tdi and tdo gpios to add JTAG mode)
Info : clock speed 1001 kHz
Info : SWD DPIDR 0x00150634
Error: Could not initialize the debug port
    TargetName         Type       Endian TapName            State       
--  ------------------ ---------- ------ ------------------ ------------
 0* nrf51.cpu          cortex_m   little nrf51.cpu          unknown

无论我尝试什么,我总是得到这个“错误:无法初始化调试端口”。

有趣的是,使用连接到PI USB的ST-Link / V2适配器并修改配置上的interface,它没有问题。

有什么建议吗?我究竟做错了什么?是否需要对GPIO进行初始化?

修改

我注意到有人投票将这个问题视为“不清楚要问的是什么”。

我在问:如何使用其GPIO将Raspberry Pi连接到nRF51 SoC?请参阅上面我尝试的所有内容。

2 个答案:

答案 0 :(得分:4)

配置不完全相同,但在http://forum.doozan.com/read.php?3,21789,21927上搜索pi3会显示raspberry123-native.cfg,其中我们发现对clockspeed的更改:

#请根据您使用的Raspi(1,2或3)设置正确的peripheral_base地址和转换延迟。

界面bcm2835gpio

#Raspi2和Raspi3 peripheral_base地址

bcm2835gpio_peripheral_base 0x3F000000

#Raspi1 peripheral_base地址
#bcm2835gpio_peripheral_base 0x20000000

#转换延迟计算:SPEED_COEFF / khz - SPEED_OFFSET
#这些取决于系统时钟,针对700MHz的库存进行校准 #bcm2835gpio_speed SPEED_COEFF SPEED_OFFSET

#Raspi3 BCM2837(1200Mhz):
bcm2835gpio_speed_coeffs 194938 48

#Raspi2 BCM2836(900Mhz):
#bcm2835gpio_speed_coeffs 146203 36

#Raspi1 BCM2835:(700Mhz)
#bcm2835gpio_speed_coeffs 113714 28

答案 1 :(得分:2)

    • 问题:探针正在轮询一个永远不会被设置的事件。

    • 解决方案:可以尝试废弃模块并安装另一个可以正常工作的模块。

      • 检查您正在使用的PI版本,this是在raspberry pi上使用openocd编程微控制器的教程。

      • 注意:您只需在以下raspberrypi2-native文件中使用字符串raspberrypi-native代替cfg。这是我使用的openocd.cfg文件:

    1. source [find interface/raspberrypi-native.cfg]
      transport select swd
      
      bcm2835gpio_swd_nums 25 24
      bcm2835gpio_srst_num 18
      
      set CHIPNAME efm32
      source [find target/efm32.cfg]
      
      reset_config srst_nogate
      
      adapter_nsrst_delay 100
      adapter_nsrst_assert_width 100
      
      init
      targets
      reset
      reset halt
      poll
      flash probe 0
      flash write_image erase emptyProject.hex
      sleep 1
      reset run
      shutdown
      
      • 然后在与openocd.cfg相同的目录中运行命令sudo openocd。之后,我的uC被编程并且LED闪烁。

      • 这是Raspberry Pi GPIO标题的接线连接:

      3.3V  - 3.3V   - pin 1
      SWCLK - GPIO25 - pin 22
      SWDIO - GPIO24 - pin 18
      SRST  - GPIO18 - pin 12
      GND   - GND    - pin 14
      
      • 在包含*.afx文件的目录中(应该是与构建*.hex/*.bin位于同一位置的输出文件),发出命令arm-none-eabi-gdb -ex "target remote localhost:3333" empty_project.axf -tui

        < / LI>
      • 这应该会显示一个基于终端的源代码查看器和gdb控制台窗口。

      • break empty_project.c:main。

      • 继续
      • 步骤...
      1. 关于安装OpenOCD的教程

        • 确保您的PI上安装了Raspberian
        • 按照this教程安装最新版本的OpenOCD。
        • 但是专门针对Pi,您可以执行以下操作:
          1. sudo apt-get update
          2. sudo apt-get install libtool libusb-dev libusb-1.0 autoconf automake texinfo
        • 然后:
          1. git clone git://git.code.sf.net/p/openocd/code openocd-code
          2. cd openocd-code/
          3. ./bootstrap
          4. ./configure
        • 这应该吐出一堆东西然后如果一切正常,你应该在最后看到这个:

        • OpenOCD log

        • 确保已启用对您正在使用的程序员的支持,然后键入make。完成后,键入sudo make install

        • 现在应该安装OpenOCD并准备好了!
      2. 正在运行 OpenOCD:

        • 现在您可以运行OpenOCD。例如,如果您使用的是F4发现板,则可以这样:
        • sudo openocd -f board/stm32f4discovery.cfg
        • 如果有效,你应该看到类似的东西:
        • Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
        • 这意味着你的程序员已经准备好了!
      3. 注意:我不是专家,所以我确定还有很多东西需要我解决。另一方面,我可能会做一些挖掘来寻找更多。如果这不起作用,那么我建议您查看芯片本身或将错误报告给nRF51 SoC本身的创建者。