name: hardware-integration-check
version: 1.3.0
description: >
Проверка использования GPIO, DMA, IRQ и таймеров перед генерацией или правкой HAL/LL-кода:
сначала источник правды в docs/HW_IO_MAP.md, затем производный снимок docs/hsi/*,
потом .ioc и код инициализации. Использовать при любом изменении аппаратных ресурсов;
не использовать как общий skill для задач вне аппаратной области.
tags: ["hardware", "stm32", "hal", "integration", "check"]
project_context: "docs/PROJECT_CONTEXT.md"
io_map: "docs/HW_IO_MAP.md"
dma_map: "docs/hsi/HSI_DMA_MAP.md"
safety_pins: "docs/HW_IO_MAP.md"
when_to_use:
- "перед генерацией кода инициализации периферии (HAL_Init)"
- "при добавлении нового драйвера или модуля, работающего с железом"
- "при изменении настроек DMA, GPIO или таймеров" outputs:
- "Отчет о конфликтах [HARDWARE CONFLICT] или подтверждение корректности"
Skill: Hardware Integration Check
Миссия
Не допустить использования занятых ресурсов, неверной конфигурации периферии или нарушения схемы подключения.
Код не должен противоречить документу-владельцу docs/HW_IO_MAP.md, файлу *.ioc и зафиксированным производным снимкам docs/hsi/*.
Чек-лист проверки
Перед написанием кода драйвера/HAL проверь следующее:
1. Pin Mux (GPIO)
- Источник правды: Сначала сверься с
docs/HW_IO_MAP.md. Какая роль сигнала, полярность и статус факта (confirmed / provisional / TBD) уже зафиксированы? - Конфликт пинов: Затем сверься с
docs/hsi/HSI_IO_MAP.md. Совместим ли снимокpinmuxс документом-владельцем? - Режим (Mode): Соответствует ли запрошенный режим (Input/Output/AF) тому, что в таблице?
- Метка (Label): Используй
#defineили имя из таблицы (например,TIM1_BKIN,AD7606_BUSY), а не сыройPB10.
2. DMA & DMAMUX
- Конфликт каналов: Сверься с
docs/hsi/HSI_DMA_MAP.md. Не занят ли канал другой периферией? (Для STM32G4 учитывай DMAMUX Request ID). - Приоритет: Соответствует ли приоритет DMA требованиям модуля (High для АЦП/ШИМ, Low для UART/логов)?
3. NVIC (Прерывания)
- Safety/RT Priority: Если это
fast_loop(PWM, ADC Watchdog) — приоритет должен быть наивысшим (0..4). - RTOS Safe Priority: Если ISR вызывает
FromISRAPI FreeRTOS — приоритет должен быть логически ниже (числом больше) или равенconfigMAX_SYSCALL_INTERRUPT_PRIORITY(обычно 5..15). - Конфликт векторов: Не вешай два разных обработчика на один вектор (если они не делят его явно).
4. Safety Pins (Критично)
- BKIN/BKIN2/STO/SKYPER_ERRIN/PRIM_nERROR_IN: Любые манипуляции с этими safety-линиями из
docs/HW_IO_MAP.mdтребуют особой осторожности. Проверь полярность, роль сигнала и то, является ли он базовым или вторичным путем запрета поdocs/PROJECT_CONTEXT.md. - Конфликт документа-владельца и снимка: Если
docs/HW_IO_MAP.md,docs/hsi/*,.iocи сгенерированный код инициализации расходятся, останови генерацию и потребуй синхронизации документа-владельца,.iocи снимка.
Контракт ответа
Если обнаружен конфликт, ОСТАНОВИ ГЕНЕРАЦИЮ и выдай отчет:
⛔ [HARDWARE CONFLICT DETECTED]
- Resource:
DMA1_Channel1 - Requested by:
UART_RX - Already used by:
TIM3_UP(согласноHSI_DMA_MAP.md) - Action: Выбери другой канал или обнови
.iocфайл.
Если конфликтов нет — продолжай генерацию кода.