OpenOCD не удается подключиться к процессору cortex

Я пытаюсь прошить SoC на основе cortex m0 из вычислительного модуля GPIOs Raspberry Pi 3, но он продолжает терпеть неудачу с той же ошибкой.

ошибка: не удалось инициализировать порт отладки

Я следую этому 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 нордический обломок Bluetooth полупроводника nRF51822 упакованный в модуле ISP1302.

модуль GND и 3.3 V подключены непосредственно к вычислительному модулю dev-kitand 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

(и я убрал bcm2835gpio_srst_num 18 от raspberrypi2-родной.cfg), находящийся

выполнения с sudo openocd -f config.cfg

raspberry Pi CM3 работает с опцией core_freq=250 on /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

независимо от того, что я пытался, я всегда получаю это "Ошибка: не удалось инициализировать порт отладки".

достаточно интересно, используя адаптер ST-Link / V2, подключенный к Pi USB и модифицируя interface на странице конфигурация работает без проблем.

какие предложения? Что я делаю не так? Нужна ли какая-то инициализация GPIO?

edit:

я заметил, что кто-то проголосовал за закрытие вопроса как "неясно, что спрашивает".

Я спрашиваю: Как я могу подключиться малина Pi для nRF51 SoC с использованием его GPIO? Обратитесь выше всего, что я пробовал.

2 ответов


не совсем такая же конфигурация, но поиск pi3 на http://forum.doozan.com/read.php?3,21789,21927 раскрывает распберри123-родной.cfg, в котором мы находим изменение в clockspeed:

# Пожалуйста, установите правильный адрес peripheral_base и задержку перехода в зависимости от того, какой Raspi (1,2 или 3) вы используете.

интерфейс 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 (900 МГц):
# bcm2835gpio_speed_coeffs 146203 36

# Raspi1 BCM2835: (700 МГц)
# bcm2835gpio_speed_coeffs 113714 28


    • проблема: зонд опрашивает событие, которое никогда не устанавливается.

    • решение: может попробовать слом модуля и установить другой, который работает нормально.


    • проверьте, какую версию PI вы используете,этой это учебник для программирования микроконтроллеров с помощью openocd на малине пи.

    • Примечание: что вы просто будете использовать строку raspberrypi2-native вместо raspberrypi-native в следующем . Это был Я:


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

  • выполните команду sudo openocd в том же каталоге, что и openocd.контекстно-свободная грамматика. После этого мой uC был запрограммирован, и светодиоды мигали.

  • это было соединение проводки для заголовок 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 file (должен быть выходной файл в том же месте, что и ваша сборка *.hex/*.bin), выдать команду arm-none-eabi-gdb -ex "target remote localhost:3333" empty_project.axf -tui

  • это должно вызвать окно просмотра исходного кода на основе терминала и консоли gdb.

  • перерыв пустой проект.c: main.

  • дальше
  • шаг...

  1. что касается учебник для установки OpenOCD:

    • убедитесь, что у вас есть Raspberian установлен на вашем PI.
    • установите последнюю версию 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 discovery, вы можете сделать что-то вроде этого:
    • sudo openocd -f board/stm32f4discovery.cfg
    • если это сработало, вы должны увидеть что-то например:
    • Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
    • что означает, что ваш программист готов к работе!

примечание: Я не эксперт, поэтому я уверен, что мне еще многое предстоит выяснить. С другой стороны, я мог бы немного покопаться, чтобы найти больше. если это не сработает, то я бы рекомендовал вам заглянуть в сам чип или сообщить об ошибке создателям .