servo/controller/fw/embed/README.md

70 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Встроенное ПО для сервипривода на 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] : <новый адрес устройства>
```