Прошивка stm32 через UART
Любой микроконтроллер stm32 можно прошивать через USART_1 и другие интерфейсы, подробно смотрите в AN2606. Для этого в МК есть специальный системный загрузчик, который зашивается в System memory (спец. область памяти) на этапе производства, его нельзя удалить или изменить. Это загрузчик инициализируется путём «подтягивания» пина BOOT_0 к «плюсу», после чего он ожидает поступления прошивки.
Через USART можно загружать любые
Описание сделано на примере платы Blue Pill, однако всё сказанное справедливо для любого stm32.
Для работы потребуется USB to UART конвертер…
Если такой штуковины нет, то есть два варианта превращения ардуины в конвертер…
превращение
1. Замкнуть RESET на GND (может не прокатить).
2. Загрузить в неё вот такой незамысловатый скетч:
Чтобы проверить работает ли ардуина в качестве конвертера, замкните RX и TX, откройте и отправьте какие-нибудь символы. Если они вернулись, значит всё работает.
2. Загрузить в неё вот такой незамысловатый скетч:
void setup()
{
pinMode(0, INPUT);
pinMode(1, INPUT);
}
void loop()
{}
Чтобы проверить работает ли ардуина в качестве конвертера, замкните RX и TX, откройте и отправьте какие-нибудь символы. Если они вернулись, значит всё работает.
Перед прошивкой необходимо подтянуть пин
Если плата фирменная
На фирменных платах (Discovery, Nucleo) тоже нужно подтянуть пин BOOT0 к плюсу, но просто так это сделать не получится. Возьмите схему вашей платы и найдите там соответствующие перемычки…
Искать надо что-то вроде этого:
Не помню от какой платы эта схема, но суть такая: в данном случае пин BOOT_0 подтянут к «минусу» через резистор R16 и перемычку SB16. Если убрать перемычку SB16, то пин подтянется к «плюсу» через резистор R17 и можно прошивать. После прошивки надо вернуть всё на место.
Перемычка может выглядеть как резистор.
Искать надо что-то вроде этого:
Не помню от какой платы эта схема, но суть такая: в данном случае пин BOOT_0 подтянут к «минусу» через резистор R16 и перемычку SB16. Если убрать перемычку SB16, то пин подтянется к «плюсу» через резистор R17 и можно прошивать. После прошивки надо вернуть всё на место.
Перемычка может выглядеть как резистор.
Режим системного бутлоадера
Bootloader (загрузчик) – это обычная программа, которая в момент старта МК решает, что должно происходить дальше.
Обычный режим, BOOT_0 подтянут к минусу. Как только подаётся питание на плату, сразу же стартует прошитая программа (если она есть конечно).
Режим «системного bootloader'а», BOOT_0 подтянут к плюсу. Системный bootloader ожидает прошивку — можно загружать в МК всё что угодно через USART_1 или через SWD (ST-Link). В более продвинутых камнях можно прошивать и через другие интерфейсы. См. мануал на свой микроконтроллер.
Системный bootloader зашивается в System memory на этапе производства, его нельзя удалить или изменить.
В этом режиме, с помощью программатора, можно заливать прошивку в оперативную память. Это продлевает жизнь Flash-памяти при отладке программ. После обесточивания программа естественно исчезает.
Обычный режим, BOOT_0 подтянут к минусу. Как только подаётся питание на плату, сразу же стартует прошитая программа (если она есть конечно).
Режим «системного bootloader'а», BOOT_0 подтянут к плюсу. Системный bootloader ожидает прошивку — можно загружать в МК всё что угодно через USART_1 или через SWD (ST-Link). В более продвинутых камнях можно прошивать и через другие интерфейсы. См. мануал на свой микроконтроллер.
В этом режиме, с помощью программатора, можно заливать прошивку в оперативную память. Это продлевает жизнь Flash-памяти при отладке программ. После обесточивания программа естественно исчезает.
Соединяем конвертер и STM следующим образом…
картинка
Конвертер RX <-> PA9 STM
Конвертер TX <-> PA10 STM
Конвертер GND <-> GND STM
… и подключаем конвертер и STM к компьютеру.
Инструкция по прошивке для
Скачайте архив и распакуйте куда-нибудь.
Перейдите в папку Flash Loader Demonstrator и запустите Flash Loader Demonstrator.exe
Выбираем СОМ-порт конвертера и жмем Next...
WARNING Remove Protection (защита от записи)
Такое сообщение…
… означает, что плата, залочена. Ничего страшного нет, просто снимите защиту кнопкой Remove protection и следом нажмите ОК.
Защита снята.
… означает, что плата, залочена. Ничего страшного нет, просто снимите защиту кнопкой Remove protection и следом нажмите ОК.
Защита снята.
Если выдаёт ещё какие-то ошибки, то либо не нажали Reset, либо что-то с конвертером.
Если светофор даёт
Жмем Next...
В пункте Download to device указываем путь к нужному
Всё готово, верните джампер в исходное положение и нажмите Reset.
Инструкция по прошивке для
Скачайте архив и распакуйте куда-нибудь.
Из папки соответствующей вашей ОС скопируйте файл stm32flash в домашнюю папку.
В терминале дайте команду:
./stm32flash -w /home/dima/myfile.bin -v -g 0x0 /dev/ttyUSB0
Название и путь к файлу у вас будет свой. HEX-файлы тоже можно прошивать этой утилитой.
Если будет ругаться на права, тогда дайте команду…
sudo chmod 777 /dev/ttyUSB0
… или запускайте утилиту через
Защита от записи
Если появилось вот такое сообщение…
… тогда дайте по очереди две команды:
./stm32flash -u /dev/ttyUSB0
./stm32flash -k /dev/ttyUSB0
Первая снимает защиту от записи, вторая от чтения.
Если у Вас стоял ардуиновский загрузчик, то он будет затёрт, чтоб его востановить просто залейте описанным выше способом этот файлик. И не забудьте вот про это.
П.С. Все описанные действия можно проделать с помощью фирменной утилиты — STM32CubeProgrammer (Windows®, Linux®, macOS®)
На этом наверно всё.
Всем спасибо
Телеграм-чат istarik
Телеграм-чат STM32
Статья о том, как из платы Blue Pill сделать программатор.
- 0
- stD
108367
Поддержать автора
Комментарии (0)