Вариант прошивки полетного контроллера 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 модели голени по фотоснимкам. Часть 2. VisualSFM+MeshLab.

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