В сети не много информации о появившемся несколько лет назад 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 не поддерживаемыми текущими версиями "кокоса".


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