# STM32F103C8: ProtoCAN Boot v1 ## Подключённый KONOR без HAL `boot_main.c` содержит извлечённый CMSIS-загрузчик CAN/UART, `boot_request.c` — вход из приложения через BKP DR1, `boot_profile.h` — общие адреса и magic. `KONOR_ds18b20/src/bootloader.c`, `src/boot_control.c`, `inc/boot_control.h` теперь включают эти файлы из `lib/c/protocan-boot/ports/stm32f103`. Keil BOOT компилирует общие `pcan_boot.c` и `rs485_boot.c`; локальный `proto.c` исключён только из загрузчика, приложение продолжает использовать свой parser. UART BEGIN/DATA/END/STATUS сохраняют SETGUI v1, 512000 бод и PA9/PA10. Номера блоков, CRC и сессии CAN обслуживает только общий ProtoCAN-автомат. Оба транспорта используют один Flash writer; одновременная запись блокируется. Native вариант не нужно собирать вместе с reusable HAL `.c` ниже. ## Reusable HAL-порт Аппаратный single-slot профиль извлечён из `KONOR_ds18b20/src/bootloader.c`. Прямые операции с регистрами адаптированы к современному STM32CubeF1 HAL; UART SETGUI parser исходного проекта в этот CAN-порт не входит. | Область | Начало | Конец, исключён | Размер | |---|---|---|---:| | Загрузчик | `0x08000000` | `0x08003000` | 12 КиБ | | Приложение | `0x08003000` | `0x08010000` | 52 КиБ | | SRAM для MSP | `0x20000000` | `0x20005000` | 20 КиБ | MSP может совпадать с верхней границей SRAM, но не с нижней; выравнивание — восемь байт. Страница Flash — 1024 байта, единица записи — полуслово 16 бит. Профиль предназначен для штатных 64 КиБ Flash STM32F103C8, без использования недокументированного расширения памяти. Подключайте `pcan_boot_stm32f103.c`, общий `src/pcan_boot.c` и сохраните соседний каталог `stm32-common`. STM32CubeF1 HAL должен включать CAN и Flash/FlashEx. Для определения CMSIS обычно используется `STM32F103xB`; физический профиль этого порта остаётся C8 с 64 КиБ. Проект настраивает CAN1 и GPIO: исходная плата использует PA11 RX, PA12 TX, 500 кбит/с, DeviceType=7 / DeviceID=13. Значения адреса задавайте через `pcan_boot_config_t` и согласуйте с host-клиентом. На стороне Flash всегда используется логический слот A. Вызывайте `pcan_boot_stm32f103_init` после `HAL_CAN_Init`, затем `pcan_boot_stm32f103_poll` из основного цикла. Linker приложения и VTOR должны указывать на `0x08003000`. В загрузчике зарезервируйте весь диапазон до этого адреса и проверьте размер итогового образа по MAP: HAL-сборка может оказаться крупнее исходного загрузчика с прямым доступом к регистрам. [Общая инструкция, пример, ограничения COMMIT и запуска после reset](../stm32-common/README.md).