Всё получилось с пол-пинка. CMSIS-DAP в самосборном OpenOCD заработал сразу. Проблема была найти в Eclipse способ (правильный пункт меню), чтобы создать проект по шаблону для STM32F10x. По сравнению с Microchip ATSAM4S, для которого мне пришлось переносить код из ASF и задавать пути и настройки проекта вручную - небо и земля!
Просто выбрал шаблон (как я понял, из пакета поддержки STM32 GNU MCU Eclipse), уточнил параметры МК (нужно было указать серию, объёмы ОЗУ и ПЗУ) и пустой или мигающий светодиод. Заработало из коробки, без СТМ Куба.
Что меня потрясло:
Исходники на C++. Кажется глупым тому, кто привык к ANSI C и микроконтроллерам. Но, уверен, пока ресурсов МК хватает, тот, кто умеет на плюсах, быстрее сделает сложный проект.
Через отладчик работает вывод в консоль. То, для чего раньше мне приходилось использовать отдельный UART<>USB конвертер и настраивать последовательный порт в МК, уже работает через интерфейс отладки. Настроено и работает сразу. Такого я не видал у Микрочипа, даже в их собственной среде и их собственным отладчиком PICkit3, даже более навороченным, чем мой китайский CMSIS-DAP.
Связка GDB, OpenOCD, CMSIS-DAP, SWD/SWO работает очень быстро, по сравнению с инструментами Microchip. Пробовал устанавливать максимальную скорость интерфейса 48МГц и действительно на линии тактовой частоты импульсы в длительностью в пару десятков нс. Правда, видно, что при заливке/чтении поток данных прерывистый, скорость чтения флэш по данным OpenOCD порядка 320кБ/с. В общем, работать приятно.
Консоль отладки:
pen On-Chip Debugger 0.10.0+dev-00973-g80f1a92b-dirty (2019-11-30-01:00) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : auto-selecting first available session transport "swd". To override use 'transport select <transport>'. Started by GNU MCU Eclipse Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : CMSIS-DAP: SWD Supported Info : CMSIS-DAP: JTAG Supported Info : CMSIS-DAP: FW Version = 1.10 Info : CMSIS-DAP: Interface Initialised (SWD) Info : SWCLK/TCK = 0 SWDIO/TMS = 1 TDI = 0 TDO = 1 nTRST = 0 nRESET = 0 Info : CMSIS-DAP: Interface ready Info : clock speed 1000 kHz Info : SWD DPIDR 0x1ba01477 Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints Error: stm32f1x.cpu -- clearing lockup after double fault Polling target stm32f1x.cpu failed, trying to reexamine Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints Info : Listening on port 3333 for gdb connections Info : accepting 'gdb' connection on tcp/3333 Info : device id = 0x10016418 Info : flash size = 256kbytes Info : SWD DPIDR 0x1ba01477 Error: Failed to read memory at 0xfffff000 Info : SWD DPIDR 0x1ba01477 Error: Failed to read memory at 0xfffff000 target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc semihosting is enabled target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc, semihosting target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x080003ec msp: 0x20010000, semihosting target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x080003ec msp: 0x20010000, semihosting ===== arm v7m registers (0) r0 (/32): 0x00000020 (1) r1 (/32): 0x00000000 (2) r2 (/32): 0x2000003C (3) r3 (/32): 0x2000083C (4) r4 (/32): 0x0800179C (5) r5 (/32): 0x200007F0 (6) r6 (/32): 0x00000020 (7) r7 (/32): 0x00000014 (8) r8 (/32): 0x2403F2E2 (9) r9 (/32): 0x785C09E5 (10) r10 (/32): 0xC18E074C (11) r11 (/32): 0x89A15C23 (12) r12 (/32): 0x95541E47 (13) sp (/32): 0x20010000 (14) lr (/32): 0xFFFFFFFF (15) pc (/32): 0x080003EC (16) xPSR (/32): 0x01000000 (17) msp (/32): 0x20010000 (18) psp (/32): 0xDAD4F5D0 (19) primask (/1): 0x00 (20) basepri (/8): 0x00 (21) faultmask (/1): 0x00 (22) control (/2): 0x00 ===== Cortex-M DWT registers Hello ARM World! System clock: 72000000 Hz Second 1 Second 2 Second 3 Second 4 Second 5 Second 6 ...Теперь не знаю, что делать с шаблоном на плюсах? Попробовать сконфигурить из Куба новый проект? Чувствую, покалечил меня Микрочип своим инструментарием, что нормальная отладка для меня является шоком...