Skip to content

Releases: ViacheslavMezentsev/stm32-gdbtest

stm32-gdbtest 0.6.0

Choose a tag to compare

@ViacheslavMezentsev ViacheslavMezentsev released this 28 Oct 21:29
v0.6.0
e68a455

stm32-gdbtest 0.6.0 — длительные сценарии, C++ и управляемые воздействия

Описание выпуска; публикация владельцем после CI итогового SHA и land.

  • Журнал и отчёт: api schema 3 с квотами и политиками error/truncate, независимый учёт проверок,
    явная неполнота в читателях, экспорте и сводках; lossless result schema 2 и console="summary".
  • Первичные ошибки исполнения и MMIO отделены от аудита; cleanup подтверждает остановку независимо от журнала.
  • call для C++: однозначные namespace/static, явный this и точная signature, квалификаторы объекта,
    Pointer/Reference с проверкой диапазонов SRAM, невиртуальные базы; отказы — до исполнения.
  • Нейтральные примеры воздействий с подтверждением потребления: подмена в SRAM и через ret, модель GPIO,
    буфер пакета с вызовом обработчика; logical-time, counter-cost, stateful-buffer, external-capture.
  • Офлайн-импорт ROS1 bag v2 с отдельным анализом опор времени.
  • run --interactive: пошаговый проход сценария в VS Code (debugpy) без ограничения по времени; результаты
    отдельно в interactive-runs, сценарий и timeout_s не меняются.
  • Навык отчётов в дизайне выпускных PDF, объяснения пакетов «правильно/неправильно», техники TECH-021–026.

Пакет 0.6.0; API_VERSION=3; api schema 3 (schema 1/2 совместимы), result schema 2, records 1/2,
target schema 1–3 без изменений. Общее ТЗ 0.123, ТЗ API 0.3.36. Переход с 0.5.x —
VERSIONING: новое включается явно.

Приёмка A8 на кандидате 6530395: офлайн Windows и Linux (host 879), Renode/QEMU и примеры A1–A6 на обеих ОС,
шесть MCU (MMIO 141/141, async и call 90/90, VTOR/FPB F411 12/12, HAL F030 41 этап, новый комплект C++/журнала/
подмены 48/48), CI-прошивки на пяти STM32 и пакет — локально и через удалённый стенд по SSH, потребители BluePill/BlackPill на
платах (72/72), интерактивный режим на F411/F103. Платы восстановлены по копиям Flash. Сводка и ограничения — матрица A8.
Компактный обзор и технический отчёт кампании (PDF) приложены к выпуску.

Ограничения: эффект воздействий на реальных микроконтроллерах стендов — только программные входы (SRAM, ret); физические сигналы и модель
GPIO — Renode. Точка останова внутри call — Renode. AT32 в маршруте CI-прошивок не проверялся;
интерактивный режим — локальные стенды OpenOCD на Windows. ST-LINK GDB Server, SEGGER GDB Server и st-util
сохраняют прежнюю приёмку.

English

stm32-gdbtest 0.6.0 — long scenarios, C++ and controlled substitutions

Release description; the owner publishes after final-SHA CI and land.

  • Journal and report: api schema 3 with quotas and error/truncate policies, independent check accounting,
    explicit incompleteness in readers, exports and summaries; lossless result schema 2 and console="summary".
  • Primary execution and MMIO errors are separated from the audit; cleanup confirms the stop independently of the journal.
  • call for C++: unambiguous namespace/static functions, explicit this and exact signature, object qualifiers,
    Pointer/Reference with SRAM range checks, non-virtual bases; refusals happen before execution.
  • Neutral substitution examples with confirmed consumption: SRAM and ret substitution, a GPIO model, a packet buffer
    with a handler call; logical-time, counter-cost, stateful-buffer, external-capture.
  • Offline ROS1 bag v2 import with a separate analysis of time anchors.
  • run --interactive: step through a scenario in VS Code (debugpy) with no time limit; results go to a separate
    interactive-runs, the scenario and its timeout_s are unchanged.
  • The report skill follows the release PDF design; right/wrong explanations of the packages; techniques TECH-021–026.

Package 0.6.0; API_VERSION=3; api schema 3 (schemas 1/2 compatible), result schema 2, records 1/2,
target schemas 1–3 unchanged. General specification 0.123, API specification 0.3.36. Moving from 0.5.x:
VERSIONING — new features are opt-in.

A8 acceptance on candidate 6530395: offline Windows and Linux (879 host tests), Renode/QEMU and the A1–A6 examples on
both systems, six MCUs (MMIO 141/141, async and call 90/90, VTOR/FPB F411 12/12, HAL F030 41 stages, a new
C++/journal/substitution kit 48/48), CI firmware on five STM32 boards and a package — locally and through the remote SSH stand, the
BluePill/BlackPill consumers on boards (72/72), interactive mode on F411/F103. Boards were restored from Flash copies. Summary and limitations:
A8 matrix (Russian). The compact overview and the technical report of the
campaign (PDF) are attached to the release.

Limitations: substitution effects on real microcontrollers are verified for software inputs only (SRAM, ret); physical signals and the
GPIO model are Renode only. A breakpoint inside call is verified in Renode only. AT32 was not run on the CI firmware route; interactive mode is verified on local OpenOCD stands on Windows. ST-LINK GDB Server, SEGGER GDB Server and
st-util keep their earlier acceptance.

stm32-gdbtest 0.5.0

Choose a tag to compare

@ViacheslavMezentsev ViacheslavMezentsev released this 20 Oct 03:14

stm32-gdbtest 0.5.0 — API 3: живое окно, MMIO/SVD, эмуляторы

Описание выпуска; публикация владельцем после CI итогового SHA и land.

  • API_VERSION=3: единый диспетчер навигации; в async def навигация, call, wait и halt
    ожидаются через await, resume(sync=False) открывает живое окно. Обычные def сохраняют синхронную форму.
  • Ограниченный call с таймаутом; скрытые вызовы функций в выражениях отклоняются.
  • Target.mmio.read/write: регистры по снимку SVD ([mmio] svd) с проверкой прав и эффектов, без скрытых
    обращений; капсула конфигурации schema 2 переносит SVD в пакет.
  • Backend Renode и QEMU (target schema 3) для опытов без платы.
  • Офлайн-команда inspect; DDTT-экспорт HTML/LCOV/Cobertura и квалификация условий снимками допуска.
  • Пример наблюдателя VTOR/FPB, навык квалификации HSE, навыки в формате Agent Skills и методология TTDD.
  • README сокращён по новым правилам; страница стендов со схемами плат; справочник API по версиям и сайт GitHub Pages
    с маршрутами навыков и примерами API.

Пакет 0.5.0; API_VERSION=3, target schema 3 (аппаратные schema 1/2 совместимы), капсула конфигурации 1/2.
Общее ТЗ 0.114, ТЗ API 0.3.23. Переход с 0.4.x — MIGRATION_050.

Приёмка P5b на итоговом коммите и его предшественнике (правило 4 матрицы): офлайн Windows и Linux
(Docker 26/26), Renode/QEMU на Windows и Linux, шесть MCU (MMIO 141/141, async и call 90/90,
VTOR/FPB F411 12/12, HAL F030 41 этап), удалённый стенд по SSH (пять STM32 и пакет), потребители
BluePill и BlackPill на платах (72/72). Сводка и ограничения — матрица P5.

Ограничения: точка останова внутри call проверена только в Renode; удалённый J-Link не проверялся (AT32 по SSH);
ST-LINK GDB Server, SEGGER GDB Server и st-util сохраняют прежнюю приёмку; сборка потребителей проверена на Windows.

English

stm32-gdbtest 0.5.0 — API 3: live window, MMIO/SVD, emulators

Release description; the owner publishes after final-SHA CI and land.

  • API_VERSION=3: one navigation dispatcher; in async def navigation, call, wait and halt are
    awaited, and resume(sync=False) opens a live window. Ordinary def scenarios keep the synchronous form.
  • Bounded call with a timeout; hidden function calls inside expressions are refused.
  • Target.mmio.read/write: registers from an SVD snapshot ([mmio] svd) with access-right and effect checks
    and no hidden accesses; configuration capsule schema 2 carries the SVD into the package.
  • Renode and QEMU backends (target schema 3) for experiments without a board.
  • Offline inspect command; DDTT export to HTML/LCOV/Cobertura and condition qualification with tolerance snapshots.
  • VTOR/FPB observer example, HSE qualification skill, skills in the Agent Skills format and the TTDD methodology.
  • Shorter README under new rules; a stands page with board drawings; an API reference by release and a GitHub Pages
    site with skill routes and API examples.

Package 0.5.0; API_VERSION=3, target schema 3 (hardware schemas 1/2 compatible), configuration capsule 1/2.
General specification 0.114, API specification 0.3.23. Moving from 0.4.x: MIGRATION_050.

P5b acceptance on the final commit and its predecessor (matrix rule 4): offline Windows and Linux
(Docker 26/26), Renode/QEMU on Windows and Linux, six MCUs (MMIO 141/141, async and call 90/90,
VTOR/FPB F411 12/12, HAL F030 41 stages), a remote SSH stand (five STM32 and a package), and the BluePill and
BlackPill consumers on boards (72/72). Summary and limitations: P5 matrix (Russian).

Limitations: a breakpoint inside call is verified only in Renode; remote J-Link is not verified (AT32 over SSH);
ST-LINK GDB Server, SEGGER GDB Server and st-util keep their earlier acceptance; consumer builds are verified on Windows.

stm32-gdbtest v0.4.1 — документация и цикл разработки DDTT

Choose a tag to compare

@ViacheslavMezentsev ViacheslavMezentsev released this 10 Oct 13:06
v0.4.1
e9017ab

Документационный выпуск: более компактный README, единое руководство
локального CI и навык разработки прошивки с обратной связью от платы.

Главное

  • Схемы запуска и профили MCU вынесены из README в отдельные страницы.
  • Пример сценария показывает возможности 0.4.0: профиль запуска, SKIP,
    чтение полей, записи и табличные проверки с сопоставителями.
  • В Mermaid сохранены плоские фигуры и убрана принудительная палитра neutral.
  • STATUS обновлён; подробная история прежних проверок сохранена в архиве.
  • Добавлен навык stm32-gdbtest-develop: план → исходный FAIL →
    исправление → регрессия. Каталог содержит рекомендации для всех шести навыков.
  • Локальные проверки собраны в одном руководстве, доступном из пункта 5
    AGENTS.md: снимки исходников, Docker volume на Windows, выбор проверок,
    диагностика задержек и сохранение результатов при ошибке.

Совместимость

Версия пакета stm32-gdbtest — 0.4.1.
API_VERSION=2, схема target.toml — 2, остальные форматы не изменены.
Общее ТЗ — 0.95, ТЗ API — 0.3.16.

Поведение runner, Target API и backend не изменено.
Миграция с 0.4.0 не требуется.

Проверки

  • GitHub Docs и Offline успешно завершены на коммите e9017ab.
  • Локальный Docker-прогон docs+host: 6/6 групп;
    451 host-тест, включая 4 штатных пропуска.
  • Рецепт локального CI проверен: L0 PASS, экспорт архива и сверка
    хешей исходников выполнены.
  • Новых аппаратных прогонов для этой редакции документации не заявляется.
    Прежние результаты сохраняют исходные границы применимости.

Известное ограничение

Длительные серии F411/F030 через ST-LINK GDB Server остаются непринятыми
из-за повторяемого USB ERROR. Это ограничение сохранено из 0.4.0;
успешные проверки других backend его не устраняют.

Изменения
· Состояние
· Локальный CI

English

Documentation release: a shorter README, a unified local CI guide,
and a firmware development skill with feedback from the target board.

Highlights

  • Dedicated run-layout and MCU-profile pages.
  • Updated scenario example demonstrating profile, SKIP, field reads,
    records and table checks with matchers.
  • Flat Mermaid diagrams without a forced neutral palette.
  • Updated STATUS with earlier verification history archived.
  • New stm32-gdbtest-develop skill: plan → baseline FAIL → fix →
    regression, plus recommendations for all six skills.
  • Unified local CI guide linked from AGENTS item 5: source snapshots,
    Windows Docker volumes, check selection, diagnostics and failure evidence.

Compatibility

Package 0.4.1; API_VERSION=2; target.toml schema 2.
Other formats and runner/Target/backend behavior are unchanged.
General specification 0.95; API specification 0.3.16.
No migration from 0.4.0 is required.

Verification and limitations

GitHub Docs and Offline passed on e9017ab.
Local Docker docs+host: 6/6 groups, 451 host tests including 4 expected skips.
The local CI recipe passed L0 and verified archive export and source hashes.

No new hardware runs are claimed for this documentation update.
The existing limitation remains: extended F411/F030 campaigns through
ST-LINK GDB Server are not accepted because of recurring USB ERROR.

Changelog
· Status
· Local CI

stm32-gdbtest 0.4.0

Choose a tag to compare

@ViacheslavMezentsev ViacheslavMezentsev released this 10 Oct 08:58
9c3ff2d

stm32-gdbtest 0.4.0 — результаты сценариев, SKIP и очищенный API

Описание подготовлено для подписанного тега и GitHub Release. Публикация — владельцем
после успешного CI итогового коммита документации и перемотки main.

Что версионируется Версия
Пакет stm32-gdbtest (__version__) 0.4.0
Совместимость API сценариев (API_VERSION) 2
Ревизия ТЗ API 0.3.16
Ревизия общего ТЗ 0.94

Схема target.toml повышена до 2; остальные схемы TOML/JSON не изменены.

Главное:

  • Внешний tools/stand_loop.py: конечные циклы из пакетов без репозитория приложения на стенде,
    проверка свидетельств, STOP и review.json; новые навыки для запуска и интерпретации результатов.

  • skip(reason) завершает неприменимый сценарий с причиной, сохраняет записи и даёт
    отдельный исход в JSON/JUnit/CTest. В run_hw пропуск принимается только по явному списку.

  • Захват records.json включается через session.toml; внешние results export,
    results verify и results report создают переносимые свидетельства и автономную
    сводку JSON/HTML с переключением темы и подробности.

  • Удалены value, fields, set_value, force_return. Для миграции применяются
    read/evaluate, check(rows), write, ret; API_VERSION увеличен до 2.

  • evaluate(..., as_type=str) читает массив char[] без известного размера по адресу
    до NUL с пределом 256 байт; исправлено сравнение кадра reach для C++-сигнатур
    с внешними одинарными кавычками GDB.

  • Добавлены примеры событий и интервалов, ожидания watchpoint, инъекции и отдельный
    пример C++ Og/O2. Каталог техник поясняет ограничения цепочки кадров watchpoint
    и начального SP на границе SRAM.

  • Проверочная прошивка содержит профиль AT32F403A; расширены настройки стенда,
    переносимость инструментов и соглашение об именах удалённых профилей.

  • run_hw.py останавливается после отказа сборки, не прошивая MCU старым образом.

  • Backend st-util с собственным диалектом schema 2, общим lock ST-Link и SSH;
    remote helper сохраняет фактический exit сервера, ожидает idle перед cleanup/recovery
    и не скрывает исходный результат при ошибке завершения.

Миграция с 0.3.0: профиль цели переводится на схему 2 — ключи reset_halt и reset_run
переезжают в секцию [openocd] (для OpenOCD они те же), а из api.toml удаляется ключ
reset.command; команда сброса берётся из диалекта backend'а. Прямые вызовы четырёх удалённых
методов дают AttributeError;
пересмотрите типы результатов и эффекты записи при замене. Локальные файлы стендов
переименуйте в <profile>-<backend>.remote.toml; старые имена больше не покрываются
правилом .gitignore. @case и @test сохраняются.

Итоговая проверка: принятые конфигурации и известные ограничения.

stm32-gdbtest 0.4.0, API_VERSION=2, target schema 2; общее ТЗ 0.94, ТЗ API 0.3.16.
Выпуск готовится в codex/release-040 и ещё не опубликован.

Свидетельства относятся к нескольким срезам:

  • Выборочные сценарии API 0.4.0: GitHub Hardware на c23f8fe, WSL2 → OrangePi на
    d1a9361 и Windows/st-util на c156db5 — по 20 PASS + 5 ожидаемых SKIP на пяти STM32;
    записи, экспорт и отчёты проверены. Это разные срезы, не CI последнего SHA.

  • AT32/Windows/J-Link 8.32 на 9747eab: 4 PASS + 1 SKIP с первой попытки; 13 записей проверены.

  • GitHub Hardware №14, ba10b12: AT32 — 4 PASS + 1 SKIP, 13 записей; архив проверен.

  • AT32/J-Link 9.80, локально на OrangePi, da5c4cb: новые сценарии 4 PASS + 1 SKIP,
    13 записей; первый ERROR открытия probe сохранён, повтор после USB reconnect прошёл.

  • stand_loop на F411/OrangePi: два цикла (2 PASS + 2 SKIP), остановка STOP и отказ
    неожиданного SKIP. Служба systemd и агент pi/Qwen не испытывались.

  • Последняя host-регрессия после добавления stand_loop: 451 тест, 4 штатных пропуска;
    Docker docs+host 6/6. Комментарии TOML не меняют активные параметры.

  • b1264c1: Docker 26/26; шесть Windows-стендов OpenOCD/J-Link, 280 сценариев,
    608 этапов; Linux-пакеты F411/F429 на Windows по 10/10; minimal-consumer
    с настоящим подмодулем — offline 3/3 и GPIO F411 PASS.

  • Remote lifecycle 4cb5e0a, сценарии до a6b6dbd: Windows → OrangePi/st-util 1.9.0,
    пять STM32, 233 сценария, 516 этапов с подготовкой и восстановлением;
    268 HW PASS и 5 ожидаемых timeout ERROR, OpenOCD BOOT/GPIO 10/10, стенды освобождены.
    ADC_INVALID F4 получил 120 с после сохранённого ERROR F411; изменённый F401 проверен отдельно.

  • После изменений lifecycle: 426 host-тестов, Docker docs+host 6/6; итоговые документы проверяются отдельно.

Полные F411/F030 через ST-LINK GDB Server по-прежнему не приняты из-за USB ERROR.
Успех st-util не закрывает этот отказ. Также открыты диагностика USB serial в doctor,
причина прежней аномалии F429 SP/SRAM и границы принудительного cleanup.
10.10.2026 владелец согласовал выпуск с этим ограничением; USB ERROR остаётся техническим долгом.
GitHub на ba10b12: Docs,
Offline и
Hardware — success.
После этого среза менялась только документация; runtime, сценарии и workflow не менялись.
CI финального коммита документации проверяется владельцем перед land; новый HW-прогон
не требуется без изменения исполняемых файлов, конфигураций или новых аномалий.

Матрица · Условия выпуска.
До закрытия условий тег и выпуск не публиковать.

Ограничения: аппаратный CI выбирает lifecycle или api040, а не полный набор сценариев;
SKIP не отменяет уже сделанных действий; запись внешним DMA не обнаруживается
точкой наблюдения ядра. Экспериментальные bits, each, predicate, SVD и дерево
зависимостей в этот выпуск не входят.

English

stm32-gdbtest 0.4.0 — scenario results, SKIP and a cleaned API

Description prepared for the signed tag and GitHub Release. The owner publishes after
successful CI of the final documentation commit and fast-forwarding main.

Versioned component Version
stm32-gdbtest package (__version__) 0.4.0
Scenario API compatibility (API_VERSION) 2
API specification revision 0.3.16
General specification revision 0.94

The target.toml schema rises to 2; other TOML/JSON schema versions are unchanged.

Highlights:

  • External tools/stand_loop.py: finite package cycles without the application repository on the stand,
    evidence validation, STOP and review.json; new skills for operation and result interpretation.

  • skip(reason) ends an inapplicable scenario with a reason, preserves records and
    reports a distinct JSON/JUnit/CTest outcome. run_hw accepts skips only by explicit ID.

  • Opt-in records.json capture through session.toml, plus external results export,
    results verify and results report for portable evidence and standalone JSON/HTML
    summaries with theme and detail controls.

  • Removed value, fields, set_value, force_return. Migrate to read/evaluate,
    check(rows), write, ret; API_VERSION rises to 2.

  • evaluate(..., as_type=str) reads a zero-sized GDB char[] from its address up to
    NUL within 256 bytes; reach now compares C++ frames correctly when GDB wraps
    a signature in single quotes.

  • Event/interval, watchpoint-wait and injection scenarios and a standalone C++ Og/O2
    example. The techniques catalogue explains watchpoint frame and initial-SP limits.

  • The check firmware has an AT32F403A profile; stand settings, tool portability and
    remote profile naming have been extended.

  • run_hw.py stops after a failed build instead of programming the MCU with an old image.

  • A st-util backend with its schema 2 dialect, shared ST-Link lock and SSH support;
    the remote helper preserves the actual server exit, waits for idle before cleanup/recovery
    and retains the original outcome when shutdown fails.

Migration from 0.3.0: the target profile moves to schema 2 — reset_halt and reset_run move
into the [openocd] section (unchanged values for OpenOCD) and the api.toml key reset.command
is removed, because the reset command comes from the backend dialect. Direct calls of the four
removed methods raise AttributeError;
review result types and write effects when replacing them. Rename local stand files
to <profile>-<backend>.remote.toml; older names are no longer covered by .gitignore.
@case and @test remain available.

Final verification: accepted configurations and known limitations.

stm32-gdbtest 0.4.0, API_VERSION=2, target schema 2; general specification 0.94, API specification 0.3.16.
The release is being prepared in codex/release-040 and is not published.

Evidence belongs to several revisions:

  • Selected API 0.4.0 scenarios: GitHub Hardware at c23f8fe, WSL2 → OrangePi at
    d1a9361, and Windows/st-util at c156db5: each has 20 PASS + 5 expected SKIP on five
    STM32 boards; records, export and reports verified. These are distinct revisions, not latest-SHA CI.

  • AT32/Windows/J-Link 8.32 at 9747eab: 4 PASS + 1 SKIP on first attempt; 13 records verified.

  • GitHub Hardware #14, ba10b12: AT32 — 4 PASS + 1 SKIP, 13 records; archive verified.

  • AT32/J-Link 9.80, local OrangePi, da5c4cb: new scenarios 4 PASS + 1 SKIP,
    13 records; initial probe-open ERROR retained, retry after USB reconnect passed.

  • stand_loop on F411/OrangePi: two cycles (2 PASS + 2 SKIP), STOP and rejection of
    unexpected SKIP. The systemd service and pi/Qwen agent have not been exercised.

  • Latest host regression after stand_loop: 451 tests, 4 expected skips; Docker docs+host
    6/6. TOML comments do not change active settings.

  • b1264c1: Docker 26/26; six Windows OpenOCD/J-Link stands, 280 scenarios,
    608 stages;...

Read more

stm32-gdbtest 0.3.0

Choose a tag to compare

@ViacheslavMezentsev ViacheslavMezentsev released this 06 Oct 06:11
v0.3.0
2c879f0

stm32-gdbtest 0.3.0 — расширенный API сценариев

stm32-gdbtest реализует DDTT: Python-сценарии управляют GDB и проверяют работающую прошивку на реальной
плате через SWD-отладчик, без тестового кода в прошивке. Подключение — закреплённый Git-подмодуль.
Python 0.3.0; API_VERSION 1; ТЗ API 0.3.7; общее ТЗ 0.69.

Главное:

  • Навигация и наблюдение: reach с условием, resume, step, until, finish, объект Point (включение,
    выключение, условие, бюджет точек) и точка наблюдения watch.
  • Вызовы и инъекции: ret с типизированным значением, call функций прошивки, reset и execute команд отладчика.
  • Чтение и запись: read/write объектов, выражение в значении и таблица записей write(rows), evaluate
    (в том числе C-строк), memory, symbol, registers, frames, locals/arguments.
  • Одна check для всех проверок: сопоставители within, near, one_of, matches, проверка истинности
    и таблица check(rows), где строковая ячейка — выражение GDB; ожидаемый отказ refused.
  • Профиль прогона profile: target.toml, эффективный api.toml, файлы данных проекта, сведения о сборке,
    case, стенд и GDB. Заменяет config/config_props.
  • Общий каталог сценариев для всех профилей и девять сценариев-примеров API; каталог техник TECH-001…018,
    тест стиля сценариев и навыки для агентов skills/: подключение к проекту, сценарии, запуск.
  • Удалённый стенд: порт сервера вне эфемерного диапазона Linux и повтор при занятом порте.
  • Миграция: value, fields, set_value, force_return работают с предупреждением и удаляются в 0.4.0;
    config, config_props, settings, sources удалены (в опубликованные теги не входили).

Итоговая проверка:
Код принят на main 782798f; выпускные коммиты добавляют документацию, навыки и host-тест стиля, код модуля
не меняют. Пять плат: F030R8, F401CC, F411CE, F429ZI — ST-Link/OpenOCD, F103C8 — J-Link. Полный набор —
42 сценария F030R8 и по 44 у остальных.

Windows, прошивка собрана GCC 13.3.1, набор выполнен GDB из трёх выпусков xPack:

Стенд GDB 13.3.1 GDB 14.2.1 GDB 15.2.1
F030R8, OpenOCD PASS 48 PASS 48 PASS 48
F103C8, J-Link PASS 50 PASS 50 PASS 50
F401CC, OpenOCD PASS 50 PASS 50 PASS 50
F411CE, OpenOCD PASS 50 PASS 50 PASS 50
F429ZI, OpenOCD PASS 50 PASS 50 PASS 50

Число — выполненные этапы набора, включая повторы после инъекций; единственный не-PASS каждого набора —
намеренная проверка timeout с ожидаемым ERROR. Через Orange Pi 5: полный набор 5/5 локально на стенде,
5/5 с удалённым сервером с Windows и 5/5 из WSL2; жизненный цикл run_hw.py 10/10 на всех пяти платах из
пакета и в аппаратном CI GitHub. Docs, Offline и Hardware на main зелёные; HAL-фикстура F030 без платы — PASS.

Ограничения:
HAL-фикстура F030 после перевода сценариев на 0.3.0 на плате не запускалась. Повтор порта удалённого сервера
проверен host-тестом, в аппаратной кампании он не понадобился. Точка наблюдения на Cortex-M0 останавливает
ядро на одну-две инструкции позже записи. Hardware workflow проверяет жизненный цикл, а не полный набор.
Результаты MCU не являются метрологической калибровкой или процентом покрытия.

CHANGELOG: https://github.com/ViacheslavMezentsev/stm32-gdbtest/blob/v0.3.0/CHANGELOG.md
Принятые результаты: https://github.com/ViacheslavMezentsev/stm32-gdbtest/blob/v0.3.0/docs/ru/API_ACCEPTANCE.md

English

stm32-gdbtest 0.3.0 — extended scenario API

stm32-gdbtest implements DDTT: Python scenarios drive GDB and verify a running firmware on a real board through
an SWD debugger, with no test code in the firmware. Delivered as a pinned Git submodule.
Python 0.3.0; API_VERSION 1; API specification 0.3.7; general specification 0.69.

Highlights:

  • Navigation and observation: reach with a condition, resume, step, until, finish, the Point object
    (enable, disable, condition, point budget) and the watch point.
  • Calls and injections: ret with a typed value, call of firmware functions, reset and execute of debugger commands.
  • Reading and writing: read/write of objects, an expression as the value and a write(rows) table, evaluate
    (C strings included), memory, symbol, registers, frames, locals/arguments.
  • One check for every check: the matchers within, near, one_of, matches, a truth check and the
    check(rows) table, where a string cell is a GDB expression; an expected refusal with refused.
  • The run profile: target.toml, the effective api.toml, project data files, build facts, case, stand and GDB.
    It replaces config/config_props.
  • A shared scenario directory for all profiles and nine API showcase scenarios; the TECH-001…018 techniques
    catalogue, a scenario style test and agent skills in skills/: project integration, scenarios, runs.
  • Remote stand: the server port lies above the Linux ephemeral range, and a busy port is retried.
  • Migration: value, fields, set_value, force_return work with a warning and are removed in 0.4.0;
    config, config_props, settings, sources are removed (they were not part of any published tag).

Final verification:
The code was accepted on main 782798f; the release commits add documentation, skills and the host style test
and leave the module code unchanged. Five boards: F030R8, F401CC, F411CE, F429ZI — ST-Link/OpenOCD, F103C8 — J-Link. The full suite is 42 scenarios for F030R8 and 44 for
each of the others.

Windows, firmware built with GCC 13.3.1, the suite run with the GDB of three xPack releases:

Stand GDB 13.3.1 GDB 14.2.1 GDB 15.2.1
F030R8, OpenOCD PASS 48 PASS 48 PASS 48
F103C8, J-Link PASS 50 PASS 50 PASS 50
F401CC, OpenOCD PASS 50 PASS 50 PASS 50
F411CE, OpenOCD PASS 50 PASS 50 PASS 50
F429ZI, OpenOCD PASS 50 PASS 50 PASS 50

The number counts the executed suite stages, repeats after injections included; the only non-PASS of every suite
is the intended timeout check with its expected ERROR. Through the Orange Pi 5: full suite 5/5 locally on the
stand, 5/5 with the remote server from Windows and 5/5 from WSL2; the run_hw.py lifecycle 10/10 on all five
boards from packages and in the GitHub hardware CI. Docs, Offline and Hardware on main are green; the F030 HAL
fixture without a board passes.

Limitations:
The F030 HAL fixture has not run on a board after its scenarios moved to 0.3.0. The remote server port retry is
covered by a host test; the hardware campaign did not need it. A Cortex-M0 watch point halts the core one or two
instructions after the store. The Hardware workflow checks the lifecycle, not the full suite. MCU results are not
a metrological calibration or a coverage percentage.

CHANGELOG: https://github.com/ViacheslavMezentsev/stm32-gdbtest/blob/v0.3.0/CHANGELOG.en.md
Accepted results: https://github.com/ViacheslavMezentsev/stm32-gdbtest/blob/v0.3.0/docs/en/API_ACCEPTANCE.md

stm32-gdbtest 0.1.0-rc.2

Pre-release

Choose a tag to compare

@ViacheslavMezentsev ViacheslavMezentsev released this 01 Oct 01:01
v0.1.0-rc.2
a0d6547

stm32-gdbtest 0.1.0-rc.2 — расширенная F030-регрессия и проверяемые HAL-контракты

stm32-gdbtest реализует DDTT: Python-сценарии управляют GDB и проверяют работающую
прошивку на отдельной плате. Это не симулятор MCU и не библиотека тестовых hooks
в firmware. Подключение — закреплённый Git-подмодуль.
Python-версия: 0.1.0rc2; API_VERSION: 1; ТЗ: 0.45.

Главное:

  • Повторное открытие пакета сохраняет отчёты и использует чистую отдельную сессию.
  • F030 IRQ-проверки используют SCB ICSR и учитывают область видимости макросов.
  • Исправлен build manifest для CMake 3.25 без output в compile_commands.json.
  • HAL macro preflight проверяет доступность типов и корректно раскрывает макросы
    в C++ и определения командной строки компилятора.
  • Добавлено соответствие STM32F103CBT6 для J-Link.
  • CMSIS F030 расширен до 18 сценариев: TIM3/IRQ, ADC/DMA, численные векторы,
    RTC, Sleep/WFI и выбранные отказные ветви.
  • Сохранён отдельный HAL F030 fixture с 17 сценариями, отрицательными контрактами
    в offline CI и аппаратным протоколом восстановления.
  • Добавлен каталог TECH-001…008. Собственные каталоги — tests, старый Tests читается;
    после переименования повторите configure. Remote-стенды — remote.toml или *-remote.toml.

Проверка кандидата:
Код 5b7b466: Docs/Offline/Hardware SUCCESS. Пакеты собраны в GitHub Ubuntu,
запущены на Orange Pi Linux aarch64: F030/OpenOCD, F103/J-Link, F411/OpenOCD —
по 10/10 этапов, все 27 JSON проверены. Windows: F030 CMSIS 18/18,
HAL 17/17 с повторами/recovery; те же три lifecycle — по 10/10.
Потребитель stm32-hwtest-blackpill fb2d186 с модулем 67b7431: пять профилей,
120 CTest в CI; Windows F411/OpenOCD 22/22 и timeout/recovery PASS.
67b7431 отличается от аппаратно проверенного 5b7b466 только документацией.
Исходные прошивки восстановлены; подробные SHA и границы — RC2_READINESS.

Ограничения:
На F411/ST GDB Server 7.14 наблюдался USB communication error до готовности сервера;
после ручного переподключения оставшиеся проверки прошли. Причина не установлена,
непрерывная серия через ST server не подтверждена.
F103/F411 CMSIS содержат базовые boot/GPIO-сценарии, полного переноса периферии нет.
HAL F030 CI ограничен GCC13; runtime зависит от ELF, оптимизации, GDB и backend.
RISC-V, QEMU/Renode, multi-node, внешнее управление питанием и pip-поставка не входят.
Отладчик влияет на выполнение; число сценариев не является процентом покрытия.

CHANGELOG: https://github.com/ViacheslavMezentsev/stm32-gdbtest/blob/v0.1.0-rc.2/CHANGELOG.md
STATUS: https://github.com/ViacheslavMezentsev/stm32-gdbtest/blob/v0.1.0-rc.2/docs/ru/STATUS.md
Ссылки с тегом станут доступны только после публикации тега.


stm32-gdbtest 0.1.0-rc.2 — expanded F030 regression and verifiable HAL contracts

stm32-gdbtest implements DDTT: Python scenarios drive GDB to check running firmware
on a separate board. It is neither an MCU simulator nor a firmware test-hook library.
Delivery is a pinned Git submodule.
Python version: 0.1.0rc2; API_VERSION: 1; specification: 0.45.

Highlights:

  • Reopening a package preserves reports and uses a clean separate session.
  • F030 IRQ checks use SCB ICSR and respect macro scope.
  • Fixed CMake 3.25 build manifests without output in compile_commands.json.
  • HAL macro preflight checks type availability and expands macros correctly in C++
    and compiler command-line definitions.
  • Added the STM32F103CBT6 J-Link device mapping.
  • Expanded CMSIS F030 to 18 cases: TIM3/IRQ, ADC/DMA, numeric vectors, RTC,
    Sleep/WFI and selected failure paths.
  • Preserved a separate 17-case HAL F030 fixture, negative offline contracts and
    a hardware restoration protocol.
  • Added TECH-001…008. Owned directories use tests; legacy Tests remains readable.
    Reconfigure after renaming. Remote stands use remote.toml or *-remote.toml.

Candidate verification:
Code 5b7b466: Docs/Offline/Hardware SUCCESS. Packages built on GitHub Ubuntu,
executed on Orange Pi Linux aarch64: F030/OpenOCD, F103/J-Link, F411/OpenOCD —
10/10 steps each, all 27 JSON reports audited. Windows: F030 CMSIS 18/18,
HAL 17/17 with repeats/recovery; the same three lifecycles — 10/10 each.
Consumer stm32-hwtest-blackpill fb2d186 with module 67b7431: five profiles,
120 CTest checks in CI; Windows F411/OpenOCD 22/22 and timeout/recovery PASS.
67b7431 differs from hardware-tested 5b7b466 only in documentation.
Original firmware restored; exact SHAs and scope are recorded in RC2_READINESS.

Limitations:
F411/ST GDB Server 7.14 encountered a USB communication error before server readiness;
remaining checks passed after manual reconnection. The cause is unknown; an
uninterrupted ST server sequence is not confirmed.
F103/F411 CMSIS retain basic boot/GPIO cases; full peripheral migration is incomplete.
HAL F030 CI is GCC13-only; runtime depends on ELF, optimisation, GDB and backend.
RISC-V, QEMU/Renode, multi-node, external power control and pip delivery are not included.
The debugger affects execution; case counts do not measure code coverage.

CHANGELOG: https://github.com/ViacheslavMezentsev/stm32-gdbtest/blob/v0.1.0-rc.2/CHANGELOG.en.md
STATUS: https://github.com/ViacheslavMezentsev/stm32-gdbtest/blob/v0.1.0-rc.2/docs/en/STATUS.md
Tag links become available only after tag publication.

stm32-gdbtest 0.1.0-rc.1

Pre-release

Choose a tag to compare

@ViacheslavMezentsev ViacheslavMezentsev released this 29 Sep 10:50
v0.1.0-rc.1
4cb47d1

stm32-gdbtest 0.1.0-rc.1 — первый кандидат выпуска

Реализация DDTT для STM32: проверки работающей прошивки на реальной плате через GDB
и SWD-отладчик сценариями на Python в репозитории проекта. Тестового кода в прошивке нет.

Версия Python 0.1.0rc1, API_VERSION = 1, ТЗ ревизии 0.21. Поставка — Git-подмодуль.

Главное

  • Сценарии @case и Target API: reach, breakpoint, value, fields, set_value,
    force_return; CMake/CTest (stm32_gdbtest_attach), отчёты JSON/JUnit.
  • GDB-серверы OpenOCD, ST-LINK GDB Server и J-Link GDB Server; Windows и Linux
    (glibc >= 2.31); сервер рядом с runner или на хосте стенда по SSH (только ключи,
    удалённая блокировка, сигнал присутствия).
  • Проверка и запись образа по секциям ELF или полным образом с CRC-32 на ПК;
    DEV_ID и размер Flash в режимах warn/strict.
  • Проверки без оборудования: build manifest, ELF/HAL-контракты, run --prepare-only,
    трассировка требований; CI на GitHub Actions в закреплённом Docker-образе.
  • Пакеты подготовленного запуска (pack, run --package), workflow Hardware на
    self-hosted раннере, run_hw.py --repeat для прогонов в цикле.
  • Окружение Linux-стенда без root (tools/linux_stand.py), команда doctor.
  • Общие сценарии для нескольких вариантов MCU одной прошивки (PROFILE),
    переменные окружения в путях стенда.

Итоговая проверка (коммит 2143665, код тега совпадает)

  • CI: Docs, Offline — зелёный.
  • Windows, run_hw.py: F030R8 / J-Link STLink, F103C8 / J-Link CE, F411CE / OpenOCD,
    F411CE / ST-LINK GDB Server — 4 x 10/10.
  • Windows -> Orange Pi 5 по SSH: F030R8, F103C8, F411CE — 3 x 10/10.
  • Workflow Hardware на раннере Orange Pi 5 — 3 x 10/10.
  • Проект потребителя STM32G474 (Arduino Core STM32, OpenOCD на Orange Pi 5) —
    host 5/5, на плате 4/4.

Ограничения

  • J-Link GDB Server — только STM32F103C8T6 и STM32F030R8T6; ST-LINK GDB Server нет
    на Linux aarch64; H503 не поддержан.
  • Не проверены на оборудовании: локальный Linux x86_64 с отладчиком, WSL2 с usbipd-win.
  • Нет управления питанием и внешними приборами, pip-пакета и отдельного исполняемого файла.

Подробно: CHANGELOG.md, docs/ru/STATUS.md; English: CHANGELOG.en.md, docs/en/STATUS.md.


stm32-gdbtest 0.1.0-rc.1 — first release candidate

A DDTT implementation for STM32: checks of running firmware on a real board through GDB
and an SWD debugger, written as Python scenarios in the project repository. No test code
in the firmware.

Python version 0.1.0rc1, API_VERSION = 1, specification revision 0.21. Delivered as a
Git submodule.

Highlights

  • @case scenarios and the Target API: reach, breakpoint, value, fields, set_value,
    force_return; CMake/CTest (stm32_gdbtest_attach), JSON/JUnit reports.
  • OpenOCD, ST-LINK GDB Server and J-Link GDB Server; Windows and Linux (glibc >= 2.31);
    the server next to the runner or on the stand host over SSH (keys only, remote lock,
    heartbeat).
  • Image verification and programming by ELF sections or as a full image with CRC-32
    on the PC; DEV_ID and Flash size in warn/strict modes.
  • Checks without hardware: build manifest, ELF/HAL contracts, run --prepare-only,
    requirement traceability; CI on GitHub Actions in a pinned Docker image.
  • Prepared run packages (pack, run --package), the Hardware workflow on a self-hosted
    runner, run_hw.py --repeat for soak runs.
  • Rootless Linux stand environment (tools/linux_stand.py), the doctor command.
  • Shared scenarios for several MCU variants of one firmware (PROFILE), environment
    variables in stand paths.

Final check (commit 2143665, the tagged code is identical)

  • CI: Docs, Offline — green.
  • Windows, run_hw.py: F030R8 / J-Link STLink, F103C8 / J-Link CE, F411CE / OpenOCD,
    F411CE / ST-LINK GDB Server — 4 x 10/10.
  • Windows -> Orange Pi 5 over SSH: F030R8, F103C8, F411CE — 3 x 10/10.
  • Hardware workflow on the Orange Pi 5 runner — 3 x 10/10.
  • STM32G474 consumer project (Arduino Core STM32, OpenOCD on Orange Pi 5) — host 5/5,
    on the board 4/4.

Limits

  • J-Link GDB Server only for STM32F103C8T6 and STM32F030R8T6; no ST-LINK GDB Server on
    Linux aarch64; H503 is not supported.
  • Not verified on hardware: local Linux x86_64 with a debugger, WSL2 with usbipd-win.
  • No power or instrument control, no pip package or separate executable yet.