[Из песочницы] 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 

-h,           --help            Print this help
-g,           --nogui           No GUI message boxes
-v ,   --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 , --interf          Select interface
-T , --target          Select target(optional)
-S ,    --script        Load a device script file
-D ,     --define         Define script global variable "name=value"
-F , --flash      Run image flashing
-G [options], --gdb        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]

    

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=: : 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=  : Load the file, .hex  = Intel HEX format
                                  .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) проекта.


Спойлер

mdq-nyfuy6fq4loc6qqvbwxfaga.png

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


Спойлер

qpdhj8wmfgc-dejlftkjmtszabq.png

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

-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 не поддерживаемыми текущими версиями «кокоса».

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

© Habrahabr.ru