Обновление прошивки ST-LINK на плате STM32 DISCOVERY Печать
Добавил(а) microsin   

В популярных платах компании ST (STM32F4DISCOVERY, 32F429IDISCOVERY и других) основанных на процессоре STM32F4xx, имеется встроенный отладчик ST-LINK. Этот отладчик работает на отдельном процессоре STM32F103CBT6. Некоторые версии прошивки для этого отладчика поддерживают комбинированное USB-устройство, в котором отладчик ST-LINK совмещен с виртуальным COM-портом VCP. Это дает удобную возможность организовать отладочный вывод в консоль терминала.

Для обновления firmware ST-LINK есть 2 утилиты: STSW-LINK007 [1] и STSW-LINK004 [2]. Обе работают через интерфейс USB, используя встроенные возможности для обновления в прошивке отладчика ST-LINK. STSW-LINK007 более простая утилита, STSW-LINK004 более продвинутая (STSW-LINK007 входит как составная часть в пакет установки STSW-LINK004), но в сущности они делают одно и то же.

К сожалению, не все прошивки отладчика ST-LINK позволяют обновиться до версии, которая поддерживает комбинированное устройство ST-LINK+VCP (подробнее см. [3]). Если у Вас старая версия прошивки ST-LINK, то для использования утилиты обновления [1] или [2] для получения версии ST-LINK с поддержкой VCP (ST-LINK/V2-A или ST-Link V2.1) необходимо сначала воспользоваться ROM-загрузчиком чипа STM32F103CBT6, чтобы записать firmware отладчика ST-LINK версии 2.1.

ROM-загрузчик STM32F103CBT6 работает через ножки порта USART PA9 TX (ножка 30 корпуса LQFP48) и PA10 RX (ножка 31 корпуса LQFP48). Активируется ROM-загрузчик при включении питания, если в этот момент вывод BOOT0 (ножка 44 корпуса LQFP48) притянут к уровню лог. 1 (+3.3V). Для взаимодействия с ROM-загрузчиком (передачи ему прошивки) используется утилита STM32 Flash loader demonstrator [4].

[Обновление до ST-LINK/V2 с помощью ROM-загрузчика]

1. Подключите USB - TTL UART адаптер к ножкам U2 STM32F103CBT6 - PA9 TX (выв. 30) и PA10 RX (выв. 31), ножку BOOT0 (выв. 44) соедините с питанием 3.3V. Ниже на рисунке в качестве примера показано подключение к микроконтроллеру STM32F103CBT6 отладчика ST-LINK на плате STM32F4DISCOVERY. Сигналы TX и RX можно найти на SMD-резисторах R4 и R17 соответственно, а BOOT0 на R7, +3.3V удобно взять с конденсатора C7, землю с ножки 3 коннектора CN2 SWD:

ST LINK STM32F4DISCOVERY connections to ROM bootloader

2. Включите питание STM32F103CBT6, и с помощью FLASHER-STM32 [4] запишите а память STM32F103CBT6 файл Protected-2-1-Bootloader.bin (это прошивка, которая взята из статьи [6]).

3. Отключите питание от платы, отсоедините TTL UART адаптер от ножек PA9 TX и PA10 RX STM32F103CBT6, ножку BOOT0 соедините с GND (т. е. верните все как было).

4. Подключите питание, соединив с компьютером плату STM32F4DISCOVERY через коннектор CN1. В Диспетчере Устройств Windows должно появиться устройство STM32 STLink.

5. Запустите STM32 ST-LINK Utility (версии 4.3.0.0), выберите в меню ST-LINK -> Furmware update. Откроется окно утилиты обновления.

Важное замечание: STM32 ST-LINK Utility нужна именно версии 4.3. Более новая утилита может не работать, например версия утилиты 4.6 на прошивку Protected-2-1-Bootloader.bin выдаст сообщение "неизвестная версия firmware". Правильную версию STM32 ST-LINK Utility 4.3 и прошивки ST-LINK см. в архиве [7].

Нажмите кнопку Device Connect, появятся возможные варианты обновления:

- STM32 Only. Отладчик ST-LINK будет поддерживать только микроконтроллеры STM32.
- STM8 Only. Отладчик ST-LINK будет поддерживать только микроконтроллеры STM8. Редко используемый вариант.
- STM32+STM8. Получите возможность отлаживать микроконтроллер на этой плате, и также можно будет прошивать и отлаживать внешние устройства как STM32, так и STM8. Для подключения внешних отлаживаемых устройств используется коннектор CN2 SWD, при этом надо снять перемычки с коннектора CN3.
- STM32+MSD+VCP. В этом варианте отладчик ST-LINK будет работать как комбинированное устройство USB: отладчик и виртуальный COM-порт. Мне этот вариант нравится больше всего, потому что дает возможность в программе использовать отладочную консоль через USART2 микроконтроллера STM32F407.
- STM32+Audio. Не знаю, что означает эта опция. Однако она тоже поддерживает виртуальный COM-порт. Если кто-то разобрался, оставьте сообщение ниже в комментарии.

После выбора варианта нажмите кнопку "Yes >>>>". Через несколько секунд ST-Link обновится до нужной версии.

ST LINK Upgrage select variant

[Виртуальный COM-порт в отладчике ST-Link]

Если выбрать прошивку STM32+MSD+VCP, то вместе с отладчиком ST-Link получается виртуальный COM-порт (комбинированное устройство USB), который очень удобно использовать как консоль терминала. Компьютер хоста отладки может посылать и принимать символьные сообщения через USART2 отлаживаемого микроконтроллера U4 STM32F407VGT6.

Замечание: вариант STM32+MSD+VCP подойдет в том случае, если у Вас STM32F103 с памятью программ 128 килобайт (STM32F103CBx или китайский чип STM32F103C8x). Если же размер памяти 64 килобайта (STM32F103C8x), то вместо варианта STM32+MSD+VCP выберите STM32+Audio, у него тоже реализован VCP.

Схема соединений для STM32F4DISCOVERY получается следущая:

[U2 STM32F103CBT6 ST-LINK]          [U4 STM32F407VGT6]
          PA2 TX ------------ > ----------- PA3 RX
          PA3 RX ------------ < ----------- PA2 TX

Примечание: для платы 32F429IDISCOVERY с микроконтроллером STM32F429ZIT6 соединения между портами USART уже разведены. Вместо USART2 отлаживаемого микроконтроллера STM32F429ZIT6 здесь используется USART1 и его ножки портов PA9 (TX) и PA10 (RX)

[U2 STM32F103CBT6 ST-LINK]          [U5 STM32F429ZIT6]
          PA2 TX ------------ > ----------- PA10 RX
          PA3 RX ------------ < ----------- PA9  TX

ST LINK STM32F4DISCOVERY connections to VCP

ST LINK STM32F4DISCOVERY connections to VCP

[Ссылки]

1. STSW-LINK007 site:st.com.
2. STSW-LINK004 site:st.com.
3. RN0093 Firmware upgrade for ST-LINK, ST-LINK/V2, ST-LINK/V2-1 and STLINK-V3 boards site:st.com.
4. STMFlashLoader Demo.
5. AN3155: протокол загрузчика USART STM32.
6. Делаем ST-Link V2.1 из китайского ST-Link V2 site:habr.com.
7210114ST-LINK-DISCOVERY-firmware-update.zip - прошивки, документация, утилиты.
8Загрузчик STM32F42xxx и STM32F43xxx.