Вариант прошивки полетного контроллера SP Racing F3 через stm32flash
Приобретенный мной для коптера полетный контроллер SP Racing F3 основан на микроконтроллере STM32. В системной памяти платы STM32 есть Bootloader (загрузчик). Bootloader записан на этапе производства и любой микроконтроллер STM32 можно запрограммировать через интерфейс USART с помощью USART-USB переходника.
Вариант прошивки из под винды через Flash Loader Demonstrator для плат STM32 у меня не сработал.
Как видно из фото, программатор у меня не видел плату и соответственно не давал перепрошиться.
Поиск в сети навел на вариант, что если программатор не видит плату, это означает что флеш память микроконтроллера защищена.
Т.к. основная система на компе у меня Ubuntu, я решил воспользоваться программой stm32flash для "заливки" прошивки через встроенный Bootloader, перед этим сняв защиту от чтения и записи.
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.
Вариант прошивки из под винды через Flash Loader Demonstrator для плат STM32 у меня не сработал.
Как видно из фото, программатор у меня не видел плату и соответственно не давал перепрошиться.
Поиск в сети навел на вариант, что если программатор не видит плату, это означает что флеш память микроконтроллера защищена.
Т.к. основная система на компе у меня Ubuntu, я решил воспользоваться программой stm32flash для "заливки" прошивки через встроенный Bootloader, перед этим сняв защиту от чтения и записи.
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.
Комментарии