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:
интерфейс bcm2835gpio
bcm2835gpio_peripheral_base 0x3F000000
# 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.
- дальше
- шаг...
-
что касается учебник для установки OpenOCD:
- убедитесь, что у вас есть
Raspberian
установлен на вашем PI. - установите последнюю версию OpenOCD, следуя этой учебник.
- но специально для Pi вы можете просто сделать следующий:
sudo apt-get update
sudo apt-get install libtool libusb-dev libusb-1.0 autoconf automake texinfo
- и затем:
git clone git://git.code.sf.net/p/openocd/code openocd-code
cd openocd-code/
./bootstrap
./configure
это должно выплюнуть кучу вещей, а затем, если все сработало, вы должны увидеть это в конце:
убедитесь, что поддержка для программиста, который вы используете, включен, а затем введите
make
. Как только это закончится, введитеsudo make install
.- теперь OpenOCD должен быть установлен и готов к работе!
- убедитесь, что у вас есть
-
под управлением OpenOCD:
- теперь вы можете запустить OpenOCD. Например, если вы используете доску F4 discovery, вы можете сделать что-то вроде этого:
sudo openocd -f board/stm32f4discovery.cfg
- если это сработало, вы должны увидеть что-то например:
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
- что означает, что ваш программист готов к работе!
примечание: Я не эксперт, поэтому я уверен, что мне еще многое предстоит выяснить. С другой стороны, я мог бы немного покопаться, чтобы найти больше. если это не сработает, то я бы рекомендовал вам заглянуть в сам чип или сообщить об ошибке создателям .