Bootloader
The bootloader makes it possible to upgrade the ST-Link firmware via USB and the STM32CubeProgrammer. The bootloader itself doesn’t get updated or changed in this process. By running the bootloader code, the JTAG-SWD Readout-Protection gets activated, which means that the firmware can’t be dumped later on.A guy named lujji established to dump the bootloader by uploading a «fake» firmware which sends the whole Flash content via UART. He documented this process on his webpage here.
He reverse engineered the bootloader code and patched out the instructions which activate the Readout-Protection.All different bootloader variants (protected and unprotected) can be downloaded…
Вариант №2 загрузка прошивки с помощью USB-UART конвертера.
В контроллерах STM при производстве вшивается специальный программный загрузчик который может использовать выводы USART1 или USART2( зависит от контроллера) для загрузки в него прошивки, кому интересно качаем в интернете документ AN2606 и изучаем.
Схема подключения стандартная, вывод BOOT0 должен быть подключён к VCC( 3.3V) так контроллер будет знать что будет прошит через USART1.
Для прошивки вам потребуется специальная программа и сам файл прошивки flash_loader_demo_v2.8.0.exe и Protected-2-1-Bootloader.bin качаем, устанавливаем.
А также повторюсь необходима отладочная плата куда должен быть впаян прошиваемый контроллер или если делаете собственный программатор то должны позаботиться о наличие выводов BOOT0 и USART TX-RX. Я для примера буду использовать отладочную плату STM32_Smart v2.0, к которой подключен USB-UART переходник и установлена перемычка на 3V и BOOT0, смотрите ниже.
Запускаем программу flash_loader_demo_v2.8.0.exe и далее по инструкции.
Описание:
1) запустили программу, она автоматически выбирает COM порт если не тот выберите вручную, жмём Next;
2) суда попадаем если память в контроллере заблокирована для чтения, жмём Remove protection, если нет защиты то переходим к пункту №4;
3) защита снята, OK;
4) Next;
5) Next;
6) выбираем Downloads to device, жмём выбрать файл на компьютере( квадратик с точками);
7) заходим в папку с файлом Protected-2-1-Bootloader.bin, меняем название файла на Bin files (*bin);
выбираем Protected-2-1-Bootloader.bin, жмём Открыть;
9) жмём Next;
10) идёт прошивка;
11) прошивка закончена удачно.
Для окончания процесса вы должны впаять контроллер в плату будущего программатора( если не делается на готовом устройстве) и продолжить настройки, читаем ниже.
Описание ST Link V2 Driver
ST Link V2 Driver ౼ это программное обеспечение, которое предоставляет возможность взаимодействовать с микроконтроллерами на базе STM32 через интерфейс ST Link V2․ Драйвер обеспечивает стабильную и надежную связь между компьютером и микроконтроллером, позволяя программировать, отлаживать и тестировать код на STM32․ Он поддерживает различные операционные системы, такие как Windows, Linux и MacOS․ Драйвер предоставляет разнообразные функции, включая загрузку прошивки, отладку кода, чтение/запись памяти микроконтроллера и многое другое․ Он обладает простым и интуитивно понятным интерфейсом, что делает работу с ним удобной и эффективной․ Установка драйвера осуществляется через специальное ПО, предоставляемое производителем․ Важно использовать последнюю версию драйвера, чтобы обеспечить совместимость с новыми версиями STM32 и получить все функциональные возможности․
Как настроить Arduino IDE
Одна из отличительных черт платы состоит в том, что под нее пишется Arduino IDE с использованием знакомого набора классов и процедур, и многих библиотек, заранее написанных под Arduino. Этим stm32f103c8t6 плата и привлекает новичков.
Программирование осуществляется с помощью кросс-компилятора для ARM, стандартной библиотеки С, отладчика, клиента к программатору.
После настроек нужно проверить 2 джампера на плате, чтобы они были в нулевом положении. Во избежание долгой работы с проводами для выяснения соответствия проводов разных цветов пинам, возьмите макетку и спаяйте адаптр на основе разъема IDC-10.
Подключение адаптера к плате осуществляется с помощью 4 угловых гнезд, а к программатору — посредством специального шлейфа.
На плате Blue Pill светодиод находится между PC13 и VCC . Так что, при подаче HIGH на PC13 устройство гасится, на LOW — зажигается. Если проверка показывает ошибку, разберитесь, не спутали ли вы пин CLK и IO и зажмите кнопку Reset на плате. Если ошибок нет, светодиод на плате замигает, а частота сигналов будет изменяться при разных вариациях кода.
Single Wire Interface Module (SWIM), Serial Wire Debugging (SWD) и ST-LINK
Фирма ST весьма крупная, на начало 2020 в ней работало более 40 тысяч человек. Это очень много и управлять такой махиной без бюрократического подхода просто невозможно. Поэтому в недрах ST периодически рождаются и формируются различные экосистемы. Экосистема STM32 не стала исключением. Она росла, развивалась до того момента, пока разобраться в нагромождении аббревиатур, названий, интерфейсов, их групп и прочего стало очень не просто. Но возможно. Аббревиатурой SWIM, как правило именуют сразу три сущности: кабель, технологию подключения по одному проводу и аппаратный модуль, обеспечивающий подобное подключение. SWD — означает технологию отладки при использовании последовательного подключения. При чтении литературы и форумов по STM32 можно так же натолкнуться на сокращения типа SWO вкупе с SWV.
SWO это Single wire output, т.е. технология позволяющая по одному проводу выдавать из чипа какую-то информацию. Как правило она используется для отладки, когда разработчики не желают использовать обычные UART для ее вывода, что весьма полезно, так как в любой момент можно подключиться к работающему устройству и начать получать отладочную информацию. Получать и просматривать информацию можно посредством Serial Wire Viewer (SWV). По сути, обычным терминалом с дополнительными функциями. Выдача информации осуществляется только при использовании режима SWD и доступна на микропроцессорах начиная с Cortex-M3.
И подбираясь к самому интересному, хочется отметить, что под наименованием ST-LINK кроется не только комплекс технологий, объединяющих SWIM, SWD, SWO и тому подобное, но еще и программное обеспечение, которое реализует весь набор практик и интерфейсов.
Для подключения ST-LINK на STM32F103RB задействованы следующие выводы:
- SWDIO (Serial Wire Data Input/Output) – PA13
- SWCLK (Serial Wire Clock) – PA14
- TRACESWO (Trace of Serial Wire Output, та самая SWO) – PB3
Для работы через SWIM/SWD нужно-то всего два проводка, не забываем про обязательное соединение земли по всем подключенным устройствам. TRACESWO можно не подключать, особенно если данной функцией вы не пользуетесь, да и для отладки она, а не для загрузки прошивки.
What is the ST-Link v2?
The ST-Link v2 is a programmer/debugger built by ST Microelectronics that allows programming and debugging STM8 and STM32 processors. The ST-Link v2 implements SWIM (Single Wire Interface Module) and JTAG/SWD (Serial Wire Debugging) to communicate with the processors on the development board.
The original ST-Link v2 is a bit expensive, with a cost of 20-25€. An alternative is to use a development board like the ST Discovery or the ST Nucleus, which incorporate an ST-Link v2 on the board itself, with a similar or even lower cost.
Fortunately, there are quite a few clones of the ST-Link v2 with a much lower price of 1.5-1.6€, which is more or less in the range of a USB-TTL converter.
Normally these clone devices have a USB format and, internally, maintain the same electronic scheme as the original (which, by the way, uses an STM8 or 32 inside).
The firmware of these ST-Link v2 clones is extracted from the original (which may not be entirely legal, but that’s their problem). Therefore, the behavior is also identical to that of the original.
However, we can also overwrite the firmware of the ST-Link v2 clone, as it has a DFU bootloader. For example, we can turn it into a Black Magic Probe, something we will see in a future entry.
For the price it has, a clone of the ST-Link v2 is a good purchase if we are going to frequently use development boards with STM32 or similar.
Related Others Drivers
Device Type: Monitor File Size: 30 KB Windows 10 ,Windows 10 64 bit
Install Driver
HAMA Black Force USB Gamepad Driver 1.0
Device Type: Joystick Gamepad Wheels And Tablets File Size: 1.6 MB Windows XP ,Windows Vista ,Windows XP 64 bit ,Windows Vista 64 bit ,Windows 7 ,Windows 7 64 bit
Install Driver
Lenovo E2415p LCD Monitor Driver 1.0.0.0
Device Type: Monitor File Size: 30 KB Windows 7 ,Windows 7 64 bit ,Windows 8 ,Windows 8 64 bit ,Windows 8.1 ,Windows 8.1 64 bit
Install Driver
Device Type: Monitor File Size: 375 KB Windows All
Install Driver
Crystalfontz CFA835 LCD Module USB Driver 1.0.0.0
Device Type: Monitor File Size: 8.4 MB Windows 7 ,Windows 7 64 bit ,Windows 8 ,Windows 8 64 bit ,Windows 8.1 ,Windows 8.1 64 bit
Install Driver
Lenovo ThinkPad E455 Monitor Driver 5.06
Device Type: Monitor File Size: 306 KB Windows 7 ,Windows 7 64 bit ,Windows 8 64 bit ,Windows 8.1 64 bit ,Windows 10 64 bit
Install Driver
Device Type: Monitor File Size: 30 KB Windows 10 ,Windows 10 64 bit
Install Driver
AOC 2275W LCD Monitor Driver 1.0.0.0
Device Type: Monitor File Size: 30 KB Windows 7 ,Windows 7 64 bit ,Windows 8 ,Windows 8 64 bit ,Windows 8.1 ,Windows 8.1 64 bit
Install Driver
Crystalfontz LCD Module USB Driver 20150304
Device Type: Monitor File Size: 9.4 MB Windows XP ,Windows Vista ,Windows 2008 ,Windows Vista 64 bit ,Windows 7 ,Windows 7 64 bit
Install Driver
Вместо заключения
Разработчики STM32 проделали огромную работу, как в плане разработки своих чипов, так и программного обеспечения. Несомненно, что чипы STM32 современны и весьма удобны в работе. Вокруг них собрана невероятная инфраструктура, написаны сотни и тысячи спецификаций, разработаны десятки программных и аппаратных комплексов для работы с микроконтроллерами STM32. Но все это многообразие может вызвать реакцию отторжения у новичка, который может быть просто ошеломлен объемом информации, которую следует переварить, дабы хоть как-то начать ориентироваться в мире STM32. И надеюсь, что мое кратенькое погружение в запутанный мир современной микроэлектроники позволит хоть немного облегчить труд познания.
Казалось бы, что тема прошивки чипов STM32 исчерпана, но приведенные методики хоть и являются массовыми, но сами по себе всего лишь верхушка айсберга, вершина огромного пласта информации. И соответственно присутствует огромное, непаханое поле для творчества.
Сравнение STM32 с Arduino
Сравнение STM32 с Arduino
По техническим характеристикам Ардуино проигрывает STM32. Тактовая частота микроконтроллеров Ардуино ниже – 16 МГц против 72 МГц STM32. Количество выводов GRIO у STM32 больше. Объем памяти у STM32 также выше. Нельзя не отметить pin-to-pin совместимость STM32 – для замены одного изделия на другое не нужно менять плату. Но полностью заменить ардуино конкуренты не могут. В первую очередь это связано с высоким порогом вхождения – для работы с STM32 нужно иметь базис. Платы Ардуино более распространены, и, если у пользователя возникает проблема, найти решение можно на форумах. Также для Ардуино созданы различные шилды и модули, расширяющие функционал. Несмотря на преимущества, по соотношению цена/качество выигрывает STM32.
Семейство микроконтроллеров STM32 отличается от своих конкурентов отличным поведением при температурах от -40С до +80 С. Высокая производительность не уменьшается, в отличие от Ардуино. Также можно найти изделия, работающие при температурах до 105С.
Programming STM32 with ST-Link v2
Let’s check that everything works correctly, and upload a sketch to the STM32 Blue Pill. We assume that you have correctly configured the Arduino IDE (right?) as we saw in the previous entry.
We will upload the same blink file that, as we know, we used as “hello world” on processors, and that we adapted for the STM32 in the previous entry. For convenience, here is the code again.
Now, in the Arduino IDE configuration, we choose the ‘ST-Link’ loader.
And without further ado, we click upload. Unlike with the USB-TTL converter, we don’t have to change any jumpers, or touch anything on the board. The integrated LED on the board will start blinking slowly, which means that everything went well.
Выбор подходящей версии драйверов
Для работы с программатором ST LINK V2 необходимо установить соответствующие драйверы
Однако перед тем, как скачать и установить драйверы, важно определиться с подходящей версией
На официальном сайте производителя (STMicroelectronics) можно найти различные версии драйверов для программатора ST LINK V2. Каждая версия драйверов может иметь свои особенности и совместимость с определенными операционными системами.
Перед выбором подходящей версии драйверов необходимо учитывать следующие факторы:
- Операционная система. Убедитесь, что выбранная версия драйверов совместима с операционной системой, которую вы используете на своем компьютере. Например, для Windows 10 может потребоваться другая версия драйверов, чем для Windows 7.
- Архитектура процессора. Убедитесь, что выбранная версия драйверов поддерживает архитектуру процессора вашего компьютера. Например, если у вас установлен процессор с архитектурой x86, то нужно выбрать соответствующую версию драйверов.
- Версия программатора. Учтите, что разные версии программатора ST LINK V2 могут требовать разные версии драйверов. Проверьте версию своего программатора и скачайте соответствующие драйверы.
При выборе версии драйверов также можно учитывать отзывы и рекомендации других пользователей. На форумах и специализированных сайтах можно найти информацию о том, какая версия драйверов наиболее стабильна и совместима с различными операционными системами.
После определения подходящей версии драйверов можно переходить к их скачиванию и установке. Загрузите драйверы с официального сайта производителя и следуйте инструкциям по установке, указанным для выбранной версии драйверов и операционной системы.
Обычно установка драйверов для программатора ST LINK V2 происходит с помощью установщика, который можно скачать в виде исполняемого файла. После запуска установщика следуйте указаниям на экране, чтобы завершить процесс установки.
Важно отметить, что перед установкой драйверов рекомендуется создать точку восстановления системы или сделать резервную копию, чтобы иметь возможность откатить изменения в случае проблем. Выбор подходящей версии драйверов для программатора ST LINK V2 важен для обеспечения стабильной и безопасной работы с устройством
Правильно выбранная версия драйверов совместима с операционной системой и архитектурой процессора, что позволяет избежать возможных проблем и несовместимостей
Выбор подходящей версии драйверов для программатора ST LINK V2 важен для обеспечения стабильной и безопасной работы с устройством. Правильно выбранная версия драйверов совместима с операционной системой и архитектурой процессора, что позволяет избежать возможных проблем и несовместимостей.
Joint Test Action Group (JTAG)
JTAG — весьма популярный интерфейс, ставший промышленным стандартом. Интерфейс применяется для подключения к сложным интегральным схемам с целью тестирования и отладки. В том числе, при помощи данного интерфейса можно осуществлять заливку прошивок в чипы STM32.
На чипе STM32F103RB JTAG-интерфейс выведен на следующие позиции:
- JTMS (JTAG Test Mode Select) – PA13
- JTCK (JTAG Test Clock) – PA14
- JTDI (JTAG Test Data Input) – PA15
- JTDO (JTAG Test Data Output) – PB3
- JNTRST (JTAG Test nReset) – PB4
Для функционирования коммуникации с чипом достаточно подключить только четыре первых позиции, но для большей гибкости, особенно в сложных случаях рекомендуется так же использование JNTRST.
stm32f103c8t6: особенности отладочной платы
Эту конструкцию нередко именуют stm32f103c8t6 blue pill, что в переводе с английского языка нередко означает таблетку синего цвета. Это название соответствует внешнему виду устройства.
Нужно обратить внимание на несколько моментов:
Необходимое напряжение, подаваемое на микроконтроллер — 3 Вольта. Такое же значение — при большом количестве дискретных сигналов выхода и входа. Некоторые выводы допускают возможность подключения сигналов 5 В. Другие входы поддерживают напряжение меньше, чем для питания, 3 В. При его повышении повреждается микроконтроллер.
Когда микроконтроллерные выводы применяются в виде выходов, максимальное значение тока вытекания и втекания — 20 миллиампер. Желательно, чтобы этот показатель не превышал 8 мА. Но есть 3 вывода, используемые лишь в системах с током втекания до 3 мА.
Подключение светодиода общего значения осуществляется через вывод PC13. Его свечение возможно при низкоуровневом.
А теперь взгляните на конструкцию цепей питания.
На узле вырабатывается напряжение 3,3 В, которое нужно для питания устройства. Применяется стабилизатор XC6204. К нему подается питание 5 В от порта USB или вывода платы 5V. Цепи соединяются напрямую без специального диода для защиты.
Тактическая частота и применения дополнительных приборов влияет на ток, потребляемый микроконтроллером. Выбор оптимальных показателей очень важен, особенно, для приложений, чувствительных к потреблению электроэнергии. Благодаря устройствам STM32 это можно делать быстро и аккуратно.
Взгляните на полноценную схему платы:
Чтобы загрузить программу в устройство, применяется системный бутлоадер. Разъем с 4 контактами с боковой стороны платы необходим, чтобы загружать программы через аппаратный загрузчик программ, к примеру, StLink. Устройство оборудовано программным загрузчиком, который помогает зашить программу посредством UART 1. Это стандартный загрузчик, который зашивают в память устройства при производстве.
За стандартный режим функционирования платы ответственны 2 перемычки желтого цвета. Команда сброса или включения запускают программу из FLASH.
Если перемычки расположены так, как на рисунке, происходит запуск системного загрузчика.
Происходит закачка программной информации в ОЗУ. Это применяется в ходе отлаживания для хранения программного ресурса в памяти FLASH.
Входы BOOT соответствуют рабочим режимам устройства STM32. Создание программ с помощью бутлоадера происходит таким образом:
1. подключение выходов А9, А10 и к компьютерному СОМ-порту;
2. установка перемычки BOON0 из памяти системы в позицию запуска;
3. сброс микроконтроллера;
4. запуск на ПК прошивки FLASH устройства;
5. возврат перемычки в позицию запуска приложения из ФЛЭШ;
6. выключение устройства.
Новейшие ПК не всегда оборудуются СОМ-портами. К тому же, разных процедур со сбросом и участием перемычек — очень много, так что процесс утомителен. Его можно упростить следующим образом.
Подсоедините устройство к ПК посредством моста (USB-UART). Можно использовать как PL2303, так и другие модули, в том числе, плату Ардуино, куда входит интерфейсный преобразователь. К примеру, это может быть Arduino Nano. Просто свяжите вход «сброс» с землей, во избежание влияния микроконтроллера на работу интерфейсного преобразователя CH340.
BOOT0 нужно заменить кнопкой, а вторую кнопку — припаять к сигналу сброса. Не стоит использовать не самую удобную штатную клавишу сброса. У меня получилась следующая схема модуля отладки:
Припаяйте резистор с сопротивлением электричества 10 кОм на участке, ограниченном выводами PLS с 3 контактами. Он устанавливается взамен перемычки. Ток на устройство STM32 идет от моста (USB-UART). Поставьте там элемент питания в позицию 5 В.
Использовать устройство не сложно. Без нажатия кнопок действует стандартный режим функционирования платы. Для программирования нужно:
• нажать и удержать команду прошивки;
• на короткое время нажать сброс;
• загрузить программу в ФЛЭШ микроконтроллера;
• отпустить клавишу прошивки;
• нажать клавишу сброса.
Все перечисленное осуществляется с помощью пальцев одной руки.
Автоматизация процесса прошивки¶
Прошивку устройста можно выполнять не только через Telnet, но и через консольные
команды. Глобально при этом не меняется ничего, кроме параметров командной строки
openocd. Список команд openocd указывается через параметр .
Например для Windows набо команд следующий:
bin\openocd.exe -s share\openocd -f interfacestlink.cfg -f targetnrf52.cfg -c init -c "reset init" -c halt -c "nrf5 mass_erase" -c "flash write_image C:/Users/srgk/Downloads/nrf52_blinky.hex" -c reset -c exit
Либо в более коротком формате:
bin\openocd.exe -s share\openocd -f interfacestlink.cfg -f targetnrf52.cfg -c "init; reset init; halt; nrf5 mass_erase; flash write_image C:/Users/srgk/Downloads/nrf52_blinky.hex; reset; exit"
Результат тот же, что и в пункте 3 — МК начинает мигать светодиодом на 13-м пине.
Вариант №1 загрузка прошивки с помощью другого программатора.
Тут мы подключаем прошиваемый программатор к рабочему, +5V к +5V, GND к GND, SWCLK и SWDIO к отверстия как на рисунке ниже.
Если прошиваемый программатор отличается то выводы SWCLK и SWDIO для прошивки можно найти с помощью прозвонки мультиметром.
Перед тем как начать качаем архив с нужным софтом STM32 ST-LINK Utility v4.3.0 setup.exe и Protected-2-1-Bootloader.bin, разархивируем, устанавливаем программу для прошивки STM32 ST-LINK Utility v4.3.0 setup.exe и запускаем её. Подключаем наш прошиваемый программатор к рабочему и далее по инструкции ниже, если контроллер не заблокирован от чтения то начинаем с пятого пункта, файл для прошивки Protected-2-1-Bootloader.bin который тоже находится в архиве.
Если не понятно на картинках, делаем так:
1) жмём Connect;
2) если выскакивает табличка память заблокирована, выполняем следующие пункты инструкции если нет то переходим к пункту 6;
3) жмём Target->Option Bytes…;
4) в Read Out Protection выбираем Disabled и жмём внизу на Apply, память контроллера сбросится и снимется защита;
5) жмём Connect;
6) жмём File->Open file…;
7) находим файл Protected-2-1-Bootloader.bin;
жмём Target->Program & Verify…;
9) в открывшемся окне где указан прошиваемый файл жмём Start;
10) контроллер должен начать прошиваться;
Надеюсь всё получилось теперь осталось настроить прошивку, переходим к <<Окончательная настройка прошивки для программирования контроллеров семейства STM8 и STM32.>> и там заканчиваем весь процесс.
Можно ли использовать плату ST-Link V2.1 от плат Nucleo?
В процессе изысканий способов заливки прошивок разными способами в плату на основе чипа STM32 от платы донора Nucleo-64 была успешно отломана часть с программатором ST-Link версии 2.1 с портом USB. И сразу же возникает вопрос, а нельзя ли эту плату в дальнейшем использовать как удобный программатор? Ведь иметь одно устройство, сочетающее в себе сразу три (ST-Link, Virtual COM и USB Mass Storage) ой как удобно.
Nucleo-64 с подключенным SWD ST-Link V2.1
Давайте попробуем, в качестве бонуса, подключить программатор ST-Link от платы Nucleo обратно к плате Nucleo посредством проводков, словно мы используем произвольный чип STM32 с программатором ST-Link V2.1.
На «огрызке» имеется несколько разъемов и перемычек для подключения чего-либо, вот они:
- CN2 – выбор режима работы ST-Link через коннектор SWD или же через дорожки на печатной плате.
- CN3 – выход на UART (пины Tx, Rx).
- CN4 – коннектор SWD.
- CN12 и CN11 – на некоторых платах используется как выход для пинов вместо внешнего осцилятора. При поставке закрыты на землю с обратной стороны.
- JP1 – применяется для ограничения потребления платой через порт USB. Если перемычка снята, то максимальное потребление платой и всей ее обвязкой должно быть не более 300 мА. Если перемычка установлена, то максимальное потребление не должно превышать 100 мА, при этом питание платы Nucleo должно осуществляться через E5V или VIN пины. Однако, если плата подключена по USB не к порту компьютера, а к USB-блоку питания или USB-хабу со своим питанием, то Nucleo-64 можно запитывать и через USB при большом потреблении, но тогда нужно установить перемычку. Ограничения внесены на тот случай, если плата перестает стабильно работать/определяться при перегрузке по питанию порта USB, по большей части относится к портам USB1/USB2.
Итак, для целей использования ST-Link от Nucleo как отдельного программатора ST-Link V2.1 следует:
- Снять перемычки с CN2, таким образом мы активируем коннектор SWD.
- Подключить выводы с коннектора CN4, первый пин верхний и обозначен точкой, подключаем сразу к «огрызку» Nucleo-64:
- VDD_Target – сенсор питания платы, через него нельзя запитать что-либо, он действует наоборот. При подключении к платам со стандартным питанием его можно не подключать.
- SWCLK – подключаем к PA14
- GND
- SWDIO – подключаем к PA13.
- NRST – сброс
- SWO – порт по отладочной информации.
- Также подключаем пины Tx (сверху) и Rx (снизу) к PA10 и PA9 соответственно.
- Берем питание еще откуда-либо, например, с левого пина JP1, там 3.3 вольта.
Соответственно, если все подключено верно, то появляется сразу три возможности:
- При подключении ST-Link V2.1 к ПК по USB подключается папка с несколькими файлами, включая инструкцию. Эта папка – внутренняя Flash-память ST-Link (он так же построен на чипе STM32, поэтому в нем все есть). Если в эту папку скопировать файлик с прошивкой, то он автоматически запишется в подключенную плату. Однако, следует учитывать, что объем «флешки» программатора всего 156 Кб, и очень объемную прошивку залить таким образом может не получиться.
- Подключаться по SWD (ST-Link) программаторами и осуществлять все предусмотренные операции. При этом корректно отрабатывает Reset.
- Подключаться к USART1 (или любому другому доступному к которому были подключены выводы) терминальной программой. При этом в операционной системе COM-порт определяется как STLink Virtual COM Port. А при наличии правильной конфигурации BOOT01/BOOT1 можно так же обращаться и к заводскому загрузчику.
Прошивка Nordic SoftDevice¶
Nordic SoftDevice — это бинарный файл, который располагается в начальной области
флеш-памяти nRF52 и полностью отвечает за поддержку стека BLE. Если ваша прошивка
требует Nordic SoftDevice — процедуру прошивки следует немного адаптировать.
-
Найдите полный путь к образу nRF52 SoftDevice, например:
CUserssrgkDownloadss132_nrf52_7.0.1_softdevice.hex
-
Прошейте nRF52 SoftDevice:
bin\openocd.exe -s share\openocd -f interfacestlink.cfg -f targetnrf52.cfg -c "init; reset init; halt; nrf5 mass_erase; flash write_image C:/Users/srgk/Downloads/s132_nrf52_7.0.1_softdevice.hex; reset; exit"
Прошить SoftDevice достаточно только ОДИН раз, он остается в памяти до очередного выполнения команды .
Точно таким же образом можно обновлять и изменять версии SoftDevice. -
Прошейте вашу прошивку БЕЗ указания команды :
bin\openocd.exe -s share\openocd -f interfacestlink.cfg -f targetnrf52.cfg -c "init; reset init; halt; flash write_image C:/Users/srgk/Downloads/1000.hex; reset; exit"
Таким образом nRF52 SoftDevice остается нетронутым, меняется только область памяти с вашей прошивкой.
Если на этом этапе вы выполните , либо прошьете прошивку без поддержки SoftDevice, то SoftDevice придется прошивать заново.
-
Когда SoftDevice отсутсвует на девайсе, сломан, либо имеет неправильную версию — команды прошивки вашего кода и SoftDevice можно объединить в одну:
bin\openocd.exe -s share\openocd -f interfacestlink.cfg -f targetnrf52.cfg -c "init; reset init; halt; nrf5 mass_erase; flash write_image C:/Users/srgk/Downloads/s132_nrf52_7.0.1_softdevice.hex; flash write_image C:/Users/srgk/Downloads/500.hex; reset; exit"
Файлы, упомянутые в этом пункте:
- Noridc SoftDevice S132 v7.0.1:
- прошивка, которая собрана БЕЗ поддержки SoftDevice: https://gist.github.com/s-kostyuk/59c51b05ded67b2bd8580b4fd5751909
- прошивки, которая собраны С ПОДДЕРЖКОЙ SoftDevice: https://gist.github.com/s-kostyuk/c8cf277bf3a220986d10631e797cf140
Больше информации про структуру флеш-памяти в nRF52:
- Про адрес начала пользовательской прошивки: https://infocenter.nordicsemi.com/topic/sds_s132/SDS/s1xx/mem_usage/mem_resource_reqs.html
- Про значение констант и : https://infocenter.nordicsemi.com/topic/sds_s132/SDS/s1xx/mem_usage/mem_resource_map_usage.html
- Про то, как различные версии SoftDevice имеют различные требования по memory layout: https://devzone.nordicsemi.com/nordic/short-range-guides/b/getting-started/posts/adjustment-of-ram-and-flash-memory
- Информация про загрузчик и возможности обновлять SoftDevice «на лету»: https://infocenter.nordicsemi.com/topic/sds_s132/SDS/s1xx/mbr_bootloader/bootloader.html
Как возник STM32
Выпуск серии микроконтроллеров впервые состоялся 11 лет назад. Тогда фирма STMicroelectronics выпустила уже 4 вида аналогичных устройств на основе ARM, но их параметры были не так высоки. А вот рассматриваемые контроллеры превосходят их по качествам и стоимости. Сначала их производили в 14 видах. Они представляли собой 2 категории, разделенные по частоте: с уровнем тактовой частоты не более 2 МГц и 36 МГц. Обе группы имеют одно и то же ПО и не отличаются расположением контактов.
У первых контроллеров была встроенная флэш-память 128 Кбайт и ОЗУ — 20 Кбайт. Современная линейка — гораздо шире, что привело к появлению новых экземпляров с более высокими характеристиками.
Продуктовые линейки микроконтроллеров
В семействе STM32 — много изделий с разным объемом памяти, уровнем производительности, энергопотребления и другими показателями. STM32F-1, STM32F-2 и STM32L легко взаимодействуют друг с другом. В каждой серии — не один десяток микросхем. Они легко меняются на другие устройства. Первая линейка — STM32F-1 с ограниченной производительностью.
Транзисторы имеют самую низкую утечку, поэтому приборы демонстрируют почти идеальные показатели.
Отметим, что у контроллеров STM32W нет совместимости по пину с другими сериями. Дело в том, что разработчиком линейки является предприятие, предоставившее радиочастотную часть. Поэтому у ST есть ряд ограничений на разработку.
У микросхемы STM32F100R4 — минимум функций. Флэш-память равна 16 Кбайт, ОЗУ — 4, тактовая частота — 12 МГц. Когда необходимо устройство с более высокой скоростью с повышенным объемом FLASH-памяти, не более 128 Кбайт, лучше выбрать STM32F101RB. Интерфейсом USB обладает и STM32F103RE. Другой аналог, у которого энергопотребление чуть ниже, — STM32L151RB.