Отладка кода для Raspberry Pi Pico RP2040 в Eclipse

Сайт: 

В предыдущей статье мы рассмотрели настройку среды разработки Eclipse для работы с RP2040 в Windows и собрали минимальный проект мигания светодиодом. Сегодня я бы хотел рассказать об одном способе отладки программы. Как уже ранее говорилось, известны следующие инструменты отладки:

  • J-Link - только новые версии отладчиков, китайские клоны не работают;
  • Black Magic Probe - работает нестабильно;
  • Picoprobe - необходима еще одна плата Pico;
  • pico-debug - для отладки используется второе ядро контроллера, дополнительное оборудование не нужно. Этот вариант мы и рассмотрим.

Pico-debug работает на втором ядрес Arm Cortex-M0+ и превращает плату Raspberry Pi Pico в USB-устройство, реализующее интерфейс CMSIS-DAP, и используется для отладки программы, исполняющейся на первом ядре.

Есть две версии программы pico-debug:

  • MAXRAM - данная версия позволяет использовать всю доступную SRAM размером 264 КБ. Код программы загружается и исполняется в XIP_SRAM - кэш флеш-памяти, объёмом 16КБ;
  • GIMMECACHE- версия отладчика, которая загружается и исполняется в SRAM, предоставляя около 94% свободной памяти для пользовательской программы и оставляя работоспособной XIP_SRAM. Данная версия наиболее предпочтительна для использования;

Обе версии программы имеются уже в скомпилированном виде и доступны для скачивания по ссылке.

Очевидно, что такой способо отладки имеет ограничения:

  • Пользовательское приложение не может использовать USB-интерфейс, потому как он занят под отладку;
  • При использовании версии MAXRAM недоступен кэш флеш-памяти XIP_SRAM;
  • При использовании версии GIMMECACHE недоступна область памяти SRAM с адреса 0x2003C000 по 0x2003FFFF;
  • Нельзя перенастраивать PLL_USB, т.к. как отладчик перестанет функционировать;
  • Пользовательская программа может исполняться только на ядре 1;

Качаем прошивку GIMMECACHE и прошиваем ею плату Pico:

  • Переведите Raspberry Pi Pico в режим Mass Storage Device, для чего зажав кнопку Boot подключите плату к USB
  • Скопируйте файл pico-debug-gimmecache.uf2 на виртуальный накопитель, после чего он будет отключен и программа pico-debug начнет исполняться

В прошлый раз мы скачали программу отладки OpenOCD и поместили ее в каталог c:\pico\OpenOCD-20211118-0.11.0. Запускаем GDB-сервер командой:

c:\pico\OpenOCD-20211118-0.11.0\bin\openocd.exe -f board/pico-debug.cfg

Далее запускаем Eclipse и открываем созданный нами в прошлый раз проект RP2040Minimal. Затем переходим к настройке отладочного профиля Run->Debug Configurations... Мы будем создавать профиль на основе шаблона конфигурации GDB OpenOCD Debugging.

На вкладке Debugger отключаем запуск OpenOCD. Также нужно указать полный путь к arm-none-eabi-gdb.exe. Сделаем это с помощью созданной ранее переменной ${PICO_TOOLCHAIN_PATH}. Остальные настройки оставляем по умолчанию. Конечно, было бы удобнее, чтобы GDB-сервер запускался автоматически каждый раз, когда нужно запустить отладку. Но из-за некорректного завершения процесса отладки повторный запуск GDB-сервера невозможен, приходится перепрошивать плату Pico. Потому GDB-сервер будем запускать вручную. Если знаете как решить эту проблему, напишить в комментариях.

На вкладке Startup настройки можно не менять:

И последнее что нужно сделать - указать на вкладке SVD Path путь к файлу описания регистров. Укажем его, использую переменную ${SDK_PATH}:

После этого настройку профиля отладки можно считать законченной. Запускаем отладку нажав кнопку Debug.

 

Комментарии

>>Потому GDB-сервер будем запускать вручную.
>>Если знаете как решить эту проблему, напишить в комментариях.

Попробовать убрать галку в Pre-run/Restart reset, и поставить галку Debug on RaM