В сети не много информации о появившемся несколько лет назад 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 залил на диск.
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 не поддерживаемыми текущими версиями "кокоса".
aol-nnov
А чем это принципиально лучше, чем openocd + gdb?
Просто приходилось уже с миландром копаться и эта связка без проблем работает через stlink. Зачем какой-то этот из статьи да ещё с таким чудесным названием? ;)
monah_tuk
Если в EBlink скриптами можно будет добавить поддержку произвольной RTOS, то это сможет стать его киллер-фичей.