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