EBlink — GDB сервер для ARM Cortex-M микроконтроллеров

от автора

В сети не много информации о появившемся несколько лет назад GDB сервере EBlink. Этим постом постараюсь исправить ситуацию.

EBlink поддерживает большинство моделей микроконтроллеров STM32 (серии F0, F1, F2, F3, F4, F7, H7, L0, L1, L4, G0 и G4), а также EFR32.

Он интересен тем что поддерживает скрипты на Си-подобном языке Squirrel которые участвуют в процессе прошивки и отладки микроконтроллеров. Это позволяет отредактировав скрипты добавить новые микроконтроллеры или изменить работу с существующими не вмешиваясь в исходный код EBlink. Могу предположить таким образом возможно добавить микроконтроллеры с ядром ARM Cormex-M других производителей, например компании Миландр но это не было проверено.

Поддерживаются отладчики ST-Link v2 и v3, а также CMSIS-DAP.

На данный момент доступны исполняемые файлы для Windows x86, Linux x86-64 и Raspberry PI. Разработчик обещает в дальнейшем выложить исходные коды.

Самую свежую версию можно скачать с гитхаба.
Текущую версию 2.0 залил на диск.

Немого об интерфейсе командной строки версии 2.0.

eblink — usage:

EBlink <options>  -h,           --help            Print this help -g,           --nogui           No GUI message boxes -v <level>,   --verbose <0..7>      Specify level of verbose logging (default 4) -a [type],    --animation [0..]     Set the animation type (0=off, 1 = cursor, >1 = dot) -I <options>, --interf          Select interface -T <options>, --target          Select target(optional) -S <file>,    --script <file>       Load a device script file -D <def>,     --define <def>        Define script global variable "name=value" -F <options>, --flash <options>     Run image flashing -G [options], --gdb <options>       Launch GDB server  --script and --interf are mandatory, normally combined with --flash or/and --gdb     e.g.     EBlink -I stlink -S stm32-auto -G     EBlink -I stlink -S stm32-auto -G -D flashSize=1024 -D ramSize=16     EBlink -I stlink,dr,speed=3000 -S silabs-auto -F erase,verify,run,file=mytarget.elf     EBlink -I cmsis-dap -T cortex-m,nu -S stm32-auto -G port=4242,nc,s -S myReset.scr

==== Interfaces

name: CMSIS-DAP — ARM debug protocol driver

Usage -I cmsis-dap[,options]      <not yet implemented>

name: STlink — STmicro V2/3 interface driver

Usage -I stlink[,options]      dr           : Disable reset at connection (hotplug)     speed=nnn    : Interface speed (default max possible)     swd          : use SWD (default)     jtag         : use Jtag     device=<usb_bus>:<usb_addr> : Select probe explicit      e.g.  -I stlink,dr,speed=3000

==== Targets

name: cortex-m

 Usage -T cortex-m[,options]      nu           : Disable stack unwind at exception      e.g.  -T cortex-m,nu

==== Flash loader

Usage -F [options]      erase        : Chip erase the flash     verify       : Verify flash after upload     run          : Start image     file=<file>  : Load the file, <file>.hex  = Intel HEX format                                   <file>.srec = Motorola srec file format                                    Default     = ELF file format      e.g. -F file=test.elf          -F run,file=test.hex                 -F erase,verify,run,file=test.srec          -F erase          -F run                Default (without erase) only modified sectors are (re)flashed.

==== GDB server

 Usage -G [options]      s            : Shutdown after disconnect     nc           : Don't use EBlink flash cache     port=ppp     : Select different TCP port, default 2331     address=x.x.x.x : Select different listen address, default 0.0.0.0      e.g.  -G s,nc

EBlink хорошо себя показал в качестве отладчика для среды EmBitz 1.11.

В сети были найдены файлы добавляющие интерфейс отладчика и все что нужно это извлечь архив в папку с установленной средой EmBitz 1.11. В архиве находятся файлы EBlink и интерфейс отладчика и для использования отладчика нужно в окне Debug interface options (Открывается из меню Debug > Interfaces) в списке Selected interface выбрать EBlink и он станет текущим GDB сервером активной цели (target) проекта.

Спойлер

Также EBlink можно использовать для заливки релизных прошивок. Для этого в EmBitz следует добавить инструмент (меню Tools > Configure tools…) который назовем EBlink flash.

Спойлер

Командная строка приложения:

-I stlink -S stm32-auto -a -F verify,run,file="${PROJECT_DIR}${TARGET_OUTPUT_DIR}${TARGET_OUTPUT_BASENAME}.hex"

В логе IDE можно увидеть работу инструмента — EBlink прошил микроконтроллер STM32F103C8T6.

Аналогичным образом можно интегрировать EBlink с другими IDE, например CooCox которая давно не развивается, что позволит работать с недавно появившиеся сериями STM32H7, STM32G0 и STM32G4 не поддерживаемыми текущими версиями "кокоса".

Все упомянутые в статье файлы залил на Яндекс.Диск.

ссылка на оригинал статьи https://habr.com/ru/post/485514/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *