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