# Встроенное ПО для сервипривода на STM32F446RE ## Для разработки - Установить platformio ```bash pip install -U platformio ``` - Скомпилировать проект ```bash platformio run --environment robotroller_reborn ``` - Загрузить прошивку ```bash platformio run --target upload --environment robotroller_reborn ``` - Открыть монитор UART ```bash platformio device monitor ``` ## Загрузчик (Bootloader) В директории `bootloader` расположен код загрузчика, который позволяет загрузить/обновить управляющую программу контроллера. ## Инструкция по загрузке ПО в контроллер по CAN-шине 1. Сместить в линкере прошивки её адрес. В файле с расширением .ld замените область FLASH на 0x08008000 и занимаемую память на 480K пример (FLASH.ld и RAM.ld): ```cpp MEMORY { RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K FLASH (rx) : ORIGIN = 0x8008000, LENGTH = 480K } ``` 2. Cкомпилировать в `hex` формате 3. Запустить в терминале ```bash python3 boot_test.py <адрес на hex файл> <адрес устройства> ``` Пример: ```bash python3 boot_test.py my_hex 0 ``` 4. После завершения процесса прошивки микроконтроллер автоматически перезагрузится и запустится загруженная программа, минуя загрузчик. Бтулоадер запустится только в том случае, если по адресу 0x08060000 находится ключ DEADBEEF. При первой прошивке стартовый адрес = 0 ## Запись CAN ID в контроллер Запись происходит в основной прошщивке, вызывается регистр записи, после чего REG_ID c указанным адресом. Пример: ``` msg_id: <адрес устройства> CAN.buff[0] : REG_WRITE Can.buff[1] : REG_ID Can.buff[2] : <новый адрес устройства> ```