Вариант прошивки полетного контроллера SP Racing F3 через stm32flash

Приобретенный мной для коптера полетный контроллер SP Racing F3 основан на микроконтроллере STM32. В системной памяти платы STM32 есть Bootloader (загрузчик). Bootloader записан на этапе производства и любой микроконтроллер STM32 можно запрограммировать через интерфейс USART с помощью USART-USB переходника.

Вариант прошивки из под винды через Flash Loader Demonstrator для плат STM32 у меня не сработал.
Как видно из фото, программатор у меня не видел плату и соответственно не давал перепрошиться.
Поиск в сети навел на вариант, что если программатор не видит плату, это означает что флеш память микроконтроллера защищена.
Т.к. основная система на компе у меня Ubuntu, я решил воспользоваться программой stm32flash для "заливки" прошивки через встроенный Bootloader, перед этим сняв защиту от чтения и записи.
1. Скачиваем и устанавливаем DEB файл stm32flash тут: http://launchpadlibrarian.net/188294676/stm32flash_0.4-2_i386.deb 
2. Подключаем контроллер по USB с закороченными пинами BOOT. Имя порта будет /dev/ttyUSB0.

3.Получим информацию о чипе:
sudo stm32flash /dev/ttyUSB0

Результат:
stm32flash 0.4
http://stm32flash.googlecode.com/
Interface serial_posix: 57600 8E1
Version: 0x22
Option 1: 0x00
Option 2: 0x00
Device ID: 0x0410 (Medium-density)
- RAM: 20KiB  (512b reserved by bootloader)
- Flash: 128KiB (sector size: 4x1024)
- Option RAM: 16b
- System RAM: 2KiB

4. Снимаем защиту от чтения:
sudo stm32flash -k /dev/ttyUSB0

Результат:
stm32flash 0.4
http://stm32flash.googlecode.com/
Interface serial_posix: 57600 8E1
Version: 0x22
Option 1: 0x00
Option 2: 0x00
Device ID: 0x0410 (Medium-density)
- RAM: 20KiB  (512b reserved by bootloader)
- Flash: 128KiB (sector size: 4x1024)
- Option RAM: 16b
- System RAM: 2KiB
Read-UnProtecting flash
Done.

5. А затем и от записи:
sudo stm32flash -u /dev/ttyUSB0

Результат:
stm32flash 0.4
http://stm32flash.googlecode.com/
Interface serial_posix: 57600 8E1
Version: 0x22
Option 1: 0x00
Option 2: 0x00
Device ID: 0x0410 (Medium-density)
- RAM: 20KiB  (512b reserved by bootloader)
- Flash: 128KiB (sector size: 4x1024)
- Option RAM: 16b
- System RAM: 2KiB
Write-unprotecting flash
Done.

6. Снова переподключаем контроллер по USB с закороченными пинами BOOT.

7. Заливаем прошивку в чип:  
sudo stm32flash -w имя_файла_прошивки.hex -v -g 0x0 /dev/ttyUSB0

В моем случае был файл прошивки betaflight_3.1.3_SPRACINGF3.hex

Результат:
stm32flash 0.4
http://stm32flash.googlecode.com/
Using Parser : Raw BINARY
Interface serial_posix: 57600 8E1
Version: 0x22
Option 1: 0x00
Option 2: 0x00
Device ID: 0x0410 (Medium-density)
- RAM: 20KiB  (512b reserved by bootloader)
- Flash: 128KiB (sector size: 4x1024)
- Option RAM: 16b
- System RAM: 2KiB
Write to memory
Erasing memory
Wrote and verified address 0x08012900 (100.00%) Done.

Starting execution at address 0x08000000... done.

Комментарии

Популярные сообщения из этого блога

Создание 3D модели по фотоснимкам. Python Photogrammetry Toolbox на Ubuntu 14.04.

Создание 3D модели голени по фотоснимкам. Часть 2. VisualSFM+MeshLab.