- Программирование STM32. Часть 14: Прошиваем STM32 через ST-Link
- Программатор
- Ссылки
- Программирование STM32. Часть 14: Прошиваем STM32 через ST-Link
- Программатор
- Ссылки
- STM32 ST-LINK utility для программатора/отладчика ST-LINK/V2.
- 1. STM32. Программирование STM32F103. Тестовая плата. Прошивка через последовательный порт и через ST-Link программатор
- Микроконтроллер STM32F103C8. Характеристики
- На плате STM32F103C8 доступны
- Прошивка STM32 с помощью USB-Uart переходника под Windows
- Программное обеспечение для прошивки
- Прошивка STM32 с помощью USB-Uart переходника под Linux (Ubuntu)
- Устанавливаем stm32flash
- Получить информацию о чипе
- Читаем с чипа в файл dump.bin
- Пишем в чип
- Прошивка STM32 с помощью ST-Link программатора под Windows
- Прошивка STM32 с помощью ST-Link программатора под Linux (Ubuntu)
- Устанавливаем софт для работы с ST-Link
- Проверяем видно ли программатор и чип
- Читаем с чипа в файл dump.bin
- Программируем STM32
- Памятка
- Документация
- Что можно почитать
- Маркировка STM32
- Как снять защиту от записи / чтения?
Программирование STM32. Часть 14: Прошиваем STM32 через ST-Link
Допустим, копая просторы Интернета, нашли мы очень интересное электронное устройство на микроконтроллере STM32, причем и все схемы, и прошивка прилагается. Но вот незадача, никогда мы не занимались загрузкой прошивки в STM32, раньше работали только с AVR-ками. Не беда! В этой статье мы разберемся в этом вопросе, ведь загружать готовую прошивку в STM32 не сложнее, чем в старые добрые AVR-ки, а может даже и проще! 😉 Итак, поехали! Предыдущая статья здесь, все статьи цикла можно посмотреть тут: http://dimoon.ru/category/obuchalka/stm32f1.
Программатор
В предыдущей части мы познакомились с несколькими вариантами программатора ST-Link. В данном примере в качестве программатора я буду использовать отладочную плату stm32f4discovery, просто потому, что она у меня есть. Для того, чтобы использовать эту отладочную плату в качестве программатора, нужно сделать 2 вещи:
- Снять перемычки, соединяющие линии программирования встроенного ST-Link-а с микроконтроллером, распаянным на плате
- С помощью гребенки, на которую выведена шина SWD, подключить сигнальные линии программатора к внешнему микроконтроллеру
На картинке, приведенной далее, показана распиновка разъема SWD:
На китайских отладочных платах с микроконтроллером stm32f103c8 имеется соответствующий разъем, через который можно загрузить прошивку в МК. Эти платы выглядят примерно так:
Пины на разъеме программирования подписаны как GND, CLK, DIO, 3V3. Соединение с программатором выполняется вот таким образом:
У меня макеты выглядят вот так:
В данном случае отладочная плата с stm32f103c8 припаяна к «решету», на котором соединена с остальными компонентами на обратной стороне проводом в изоляции. Таким же проводом выполнено подключение программатора к отладочной плате:
Перейдем теперь к программной составляющей. Нам понадобится драйвер для программатора и управляющая софтина, через через которую мы будем загружать прошивку в микроконтроллер. Для этого нам нужно на официальном сайте www.st.com скачать пакет STM32 ST-LINK utility. А что нужно сделать перед скачиванием чего-нибудь с www.st.com? Правильно! Надо у них зарегистрироваться.
[Шуточка про «нельзя просто так взять и скачать что-то с st.com»]
Кину ссылку на архив в конце статьи.
Итак, мы добыли архив с пакетом STM32 ST-LINK Utility. После установки подключаем программатор к ПК по USB и подключаем питание к отладочной плате. Если драйвера на программатор не установились автоматически, то идем в диспетчер устройств, там находим наш STM32 STLink, выбираем Обновить драйвер->Выполнить поиск на этом компьютере. После этого все должно заработать. Затем, из меню «Пуск» запускаем программу «STM32 ST-LINK Utility«:
Выглядит интерфейс ST-LINK Utility вот так:
Далее, нам необходимо произвести небольшие настройки. В меню выбираем Target->Settings…
Открывается вот такое окошко:
Выставляем настройки, как на скриншоте и нажимаем OK. После этого программатор автоматически подключится к прошиваемому микроконтроллеру. Пробежимся по кнопкам управления:
«Подключиться к микроконтроллеру» — выполняет подключение программатора к МК. При этом работа прошивки останавливается. После этого можно выполнять дальнейшие манипуляции с flash-памятью МК.
«Отключиться от микроконтроллера» — после того, как мы все сделали, нажимаем на эту кнопку и SL-Link отключается от МК, при этом запускается загруженная во flash-память прошивка.
«Очистить чип» — при нажатии на эту кнопку стирается вся flash-память микроконтроллера. Это необходимо делать перед загрузкой другой прошивки в МК.
Для того, чтобы прошить наш .hex или .bin файл в МК нужно сделать следующее. В меню выбираем Target->Programm…
После этого у нас открывается окошко выбора файла прошивки. Выбираем нужный нам файл, после чего появляется вот такое окно:
Здесь нам нужно нажать Start чтобы запустить процесс. После того, как прошивка была загружена в МК, нажимаем на кнопку «Отключиться от микроконтроллера«.
Те, кто раньше работал с микроконтроллерами AVR знают о такой вещи как фьюз-биты. Если в AVR-ках неправильно их выставить, то прошивка может работать некорректно. Для вас хорошая новость: в STM32 фьюз-битов нет! Достаточно просто залить в МК файл с управляющей программой и все будет работать.
Ну что ж, на этом, пожалуй, закончу, всем кто дочитал, спасибо за внимание 😉 🙂 Продолжение тут
Ссылки
Драйвер и софт для ST-Link: STM32 ST-LINK utility
Программирование STM32. Часть 14: Прошиваем STM32 через ST-Link
Допустим, копая просторы Интернета, нашли мы очень интересное электронное устройство на микроконтроллере STM32, причем и все схемы, и прошивка прилагается. Но вот незадача, никогда мы не занимались загрузкой прошивки в STM32, раньше работали только с AVR-ками. Не беда! В этой статье мы разберемся в этом вопросе, ведь загружать готовую прошивку в STM32 не сложнее, чем в старые добрые AVR-ки, а может даже и проще! 😉 Итак, поехали! Предыдущая статья здесь, все статьи цикла можно посмотреть тут: http://dimoon.ru/category/obuchalka/stm32f1.
Программатор
В предыдущей части мы познакомились с несколькими вариантами программатора ST-Link. В данном примере в качестве программатора я буду использовать отладочную плату stm32f4discovery, просто потому, что она у меня есть. Для того, чтобы использовать эту отладочную плату в качестве программатора, нужно сделать 2 вещи:
- Снять перемычки, соединяющие линии программирования встроенного ST-Link-а с микроконтроллером, распаянным на плате
- С помощью гребенки, на которую выведена шина SWD, подключить сигнальные линии программатора к внешнему микроконтроллеру
На картинке, приведенной далее, показана распиновка разъема SWD:
На китайских отладочных платах с микроконтроллером stm32f103c8 имеется соответствующий разъем, через который можно загрузить прошивку в МК. Эти платы выглядят примерно так:
Пины на разъеме программирования подписаны как GND, CLK, DIO, 3V3. Соединение с программатором выполняется вот таким образом:
У меня макеты выглядят вот так:
В данном случае отладочная плата с stm32f103c8 припаяна к «решету», на котором соединена с остальными компонентами на обратной стороне проводом в изоляции. Таким же проводом выполнено подключение программатора к отладочной плате:
Перейдем теперь к программной составляющей. Нам понадобится драйвер для программатора и управляющая софтина, через через которую мы будем загружать прошивку в микроконтроллер. Для этого нам нужно на официальном сайте www.st.com скачать пакет STM32 ST-LINK utility. А что нужно сделать перед скачиванием чего-нибудь с www.st.com? Правильно! Надо у них зарегистрироваться.
[Шуточка про «нельзя просто так взять и скачать что-то с st.com»]
Кину ссылку на архив в конце статьи.
Итак, мы добыли архив с пакетом STM32 ST-LINK Utility. После установки подключаем программатор к ПК по USB и подключаем питание к отладочной плате. Если драйвера на программатор не установились автоматически, то идем в диспетчер устройств, там находим наш STM32 STLink, выбираем Обновить драйвер->Выполнить поиск на этом компьютере. После этого все должно заработать. Затем, из меню «Пуск» запускаем программу «STM32 ST-LINK Utility«:
Выглядит интерфейс ST-LINK Utility вот так:
Далее, нам необходимо произвести небольшие настройки. В меню выбираем Target->Settings…
Открывается вот такое окошко:
Выставляем настройки, как на скриншоте и нажимаем OK. После этого программатор автоматически подключится к прошиваемому микроконтроллеру. Пробежимся по кнопкам управления:
«Подключиться к микроконтроллеру» — выполняет подключение программатора к МК. При этом работа прошивки останавливается. После этого можно выполнять дальнейшие манипуляции с flash-памятью МК.
«Отключиться от микроконтроллера» — после того, как мы все сделали, нажимаем на эту кнопку и SL-Link отключается от МК, при этом запускается загруженная во flash-память прошивка.
«Очистить чип» — при нажатии на эту кнопку стирается вся flash-память микроконтроллера. Это необходимо делать перед загрузкой другой прошивки в МК.
Для того, чтобы прошить наш .hex или .bin файл в МК нужно сделать следующее. В меню выбираем Target->Programm…
После этого у нас открывается окошко выбора файла прошивки. Выбираем нужный нам файл, после чего появляется вот такое окно:
Здесь нам нужно нажать Start чтобы запустить процесс. После того, как прошивка была загружена в МК, нажимаем на кнопку «Отключиться от микроконтроллера«.
Те, кто раньше работал с микроконтроллерами AVR знают о такой вещи как фьюз-биты. Если в AVR-ках неправильно их выставить, то прошивка может работать некорректно. Для вас хорошая новость: в STM32 фьюз-битов нет! Достаточно просто залить в МК файл с управляющей программой и все будет работать.
Ну что ж, на этом, пожалуй, закончу, всем кто дочитал, спасибо за внимание 😉 🙂 Продолжение тут
Ссылки
Драйвер и софт для ST-Link: STM32 ST-LINK utility
STM32 ST-LINK utility для программатора/отладчика ST-LINK/V2.
Утилита ST-LINK utility предназначена для программирования микроконтроллеров STM8 и STM32 через программатор ST-LINK или ST-LINK/V2.
Скачать ST Link Utility можно с сайта компании STMicroelectronics. Сайт большой и к тому же на английском, поэтому легче попасть на страницу для скачивания, набрав в поиске «STSW-LINK004» или «ST-LINK utility».
Первая же ссыка приведет на страницу утилиты. Можно воспользоваться ссылкой http://www.st.com/web/catalog/tools/FM147/SC1887/PF258168, но гарантии, что попадете куда надо, нет.
Далее спускаемся вниз страницы, в раздел «Get Software» и скачиваем файл. Это будет архив stsw-link004.zip, в котором находиться установочный файл STM32 ST-LINK Utility_v3.2.1.exe. Версия может быть другая.
После запуска STM32 ST-LINK Utility_v3.2.1.exe начнется установка утилиты на компьютер. Будет установлена сама утилита ST-LINK utility и драйвер STLinkDriver.
Особенностей вроде никаких. Жмем везде «Next».
После установки подключаем STM32F4DISCOVERY к компьютеру через мини-USB и начинается процесс установки нового устройства.
В процессе установки может возникнуть сообщение о несовместимости оборудования с версией Windows. Я устанавливал на Windows 2008Server и всё встало нормально.
После установки выйдет окошечко о завершении.
Чтобы убедиться, можно посмотреть в Диспетчере устройств, появился там ST-Link или нет.
После запуска ST-Link utility и нажатия на кнопку с «вилкой» можно посмотреть что находиться в микроконтроллере отладочной платы STM32F4Discovery.
Утилита STM32 ST-LINK utility для программатора / отладчика ST-Link/V2 установлена и можно ею пользоваться. Далее нажимаем на соседнюю кнопку с серой вилкой и красным крестом для отключения от STM32F4 Discovery и закрываем программу.
1. STM32. Программирование STM32F103. Тестовая плата. Прошивка через последовательный порт и через ST-Link программатор
Микроконтроллеры STM32 приобретают все большую популярность благодаря своей мощности, достаточно разнородной периферии, и своей гибкости. Мы начнем изучать STM32F103C8T6, используя бюджетную тестовую плату, стоимость которой не превышает 2 $ (у китайцев). Еще нам понадобится ST-Link программатор, стоимость которого около 2.5 $ (у китайцев). Такие суммы расходов доступны и студентам и школьникам, поэтому именно с такого бюджетного варианта я и предлагаю начать.
Этот микроконтроллер не является самым мощным среди STM32, но и не самый слабый. Существуют различные платы с STM32, в томе числе Discovery которые по цене стоят около 20 $. На таких платах почти все то же, что и на нашей плате, плюс программатор. В нашем случае мы будем использовать программатор отдельно.
Микроконтроллер STM32F103C8. Характеристики
- Ядро ARM 32-bit Cortex-M3
- Максимальная частота 72МГц
- 64Кб Флеш память для программ
- 20Кб SRAM памяти
- Питание 2.0 . 3.3В
- 2 x 12-біт АЦП (0 . 3.6В)
- DMA контролер
- 37 входов / выходов толерантных к 5В
- 4 16-розрядних таймера
- 2 watchdog таймера
- I2C — 2 шины
- USART — 3 шины
- SPI — 2 шины
- CAN
- USB 2.0 full-speed interface
- RTC — встроенные часы
На плате STM32F103C8 доступны
Скачать тестовый файл для прошивки можно здесь. Программа мигает светодиодом на плате.
Прошивка STM32 с помощью USB-Uart переходника под Windows
Подключаем RX и TX выходы к соответствующим выводам USART1 микроконтроллера. RX переходника подключаем к TX микроконтроллера (A9). TX переходника подключаем к RX микроконтроллера (A10). Поскольку USART-USB имеет выходы питания 3.3В подадим питания на плату от него.
Чтобы перевести микроконтроллер в режим программирования, надо установить выводы BOOT0 и BOOT1 в нужное состояние и перезагрузить его кнопкой Reset или выключить и включить питание микроконтроллера. Для этого у нас есть перемычки. Различные комбинации загоняют микроконтроллер в различные режимы. Нас интересует только один режим. Для этого у микроконтроллера на выводе BOOT0 должно быть логическая единица, а на выводе BOOT1 — логический ноль. На плате это следующее положение перемычек:
После нажатия кнопки Reset или отключения и подключения питания, микроконтроллер должен перейти в режим программирования.
Программное обеспечение для прошивки
После включения схемы с правильно выставленными перемычками контроллер готов к работе с Flash Loader Demonstrator.
Запускаем Flash Loader Demonstrator и выбираем порт с которым будем работать, и устанавливаем параметры порта.
После выбора параметров порта нажимаем Next после чего должны увидеть «светофор» и информацию по микроконтроллеру. Если этого не происходит, тогда проверяем корректность установленных параметров связи и проверяем действительно ли микроконтроллер введен в режим программирования.
Нажимаем Next,
На этой странице выбираем файл для загрузки в микроконтроллер. Файл может быть в формате bin или hex.
Нажимаем Next и ждем.
Чтобы вывести контроллер из режима программирования, возвращаем перемычки в исходное состояние и нажимаем кнопку Reset. Программа в микроконтроллере должен заработать.
Прошивка STM32 с помощью USB-Uart переходника под Linux (Ubuntu)
Устанавливаем stm32flash
Если используем USB-UART переходник, имя порта буде примерно такое /dev/ttyUSB0
Получить информацию о чипе
Читаем с чипа в файл dump.bin
Пишем в чип
Прошивка STM32 с помощью ST-Link программатора под Windows
При использовании программатора ST-Link выводы BOOT0 и BOOT1 не используются и должны стоять в стандартном положении для нормальной работы контроллера.
Качаем с сайта st.com Утилиту STM32 ST-LINK Utility. Устанавливаем ее. С ней должен быть установлен и драйвер для ST-Link. Если нет, качаем и устанавливаем драйвера ST-Link: http://www.st.com/content/st_com/en/products/embedded-software/development-tool-software/stsw-link009.html Подключаем ST-Link в USB- разъем компьютера, а соответствующие выводы программатора подключаем к выводам тестовой платы согласно маркировки.
Запускаем программу STM32 ST-LINK Utility
Выполняем пункт меню Target -> Connect
Выполняем пункт меню Target -> Erase Chip
Выполняем пункт меню File -> Open file. Выбираем файл для загрузки в микроконтроллер.
Выполняем пункт меню Target -> Programm & Verify.
После завершения прошивки и проверки, загруженная программа автоматически запустится.
Прошивка STM32 с помощью ST-Link программатора под Linux (Ubuntu)
Устанавливаем софт для работы с ST-Link
Пришлось устанавливать autoconf и libusb-1.0:
Проверяем видно ли программатор и чип
Читаем с чипа в файл dump.bin
Программируем STM32
Памятка
Документация
Что можно почитать
Маркировка STM32
Device family | Product type | Device subfamily | Pin count | Flash memory size | Package | Temperature range |
---|---|---|---|---|---|---|
STM32 = ARM-based 32-bit microcontroller | F = General-purpose L = Ultra-low-power TS = TouchScreen W = wireless system-on-chip | 60 = multitouch resistive 103 = performance line | F = 20 pins G = 28 pins K = 32 pins T = 36 pins H = 40 pins C = 48/49 pins R = 64 pins O = 90 pins V = 100 pins Z = 144 pins I = 176 pins B = 208 pins N = 216 pins | 4 = 16 Kbytes of Flash memory 6 = 32 Kbytes of Flash memory 8 = 64 Kbytes of Flash memory B = 128 Kbytes of Flash memory Z = 192 Kbytes of Flash memory C = 256 Kbytes of Flash memory D = 384 Kbytes of Flash memory E = 512 Kbytes of Flash memory F = 768 Kbytes of Flash memory G = 1024 Kbytes of Flash memory I = 2048 Kbytes of Flash memory | H = UFBGA N = TFBGA P = TSSOP T = LQFP U = V/UFQFPN Y = WLCSP | 6 = Industrial temperature range, –40…+85 °C. 7 = Industrial temperature range, -40…+ 105 °C. |
STM32 | F | 103 | C | 8 | T | 6 |
UPD:
Как снять защиту от записи / чтения?
Я это буду делать из под Ubuntu с помощью утилиты stm32flash.
1. Проверяем видно ли микроконтроллер:
Должны получить что-то такое:
2. Снимаем защиту от чтения а затем от записи:
Теперь можно нормально работать с микроконтроллером.