Stm32 st link driver windows 10

Идея написать статью (которая войдет в цикл статей для новичков, остро жаждущих создавать что-то на микроконтроллерах при почти нулевых знаниях в области програм...

Идея написать статью (которая войдет в цикл статей для новичков, остро жаждущих создавать что-то на микроконтроллерах при почти нулевых знаниях в области программирования в принципе) пришла мне после того, как мне пришлось немного отвлечься от своих основных дел, чтобы помочь другу настроить рабочую среду для написания софта под его небольшой домашний проект на основе board-а с stm32f103 на борту. Я рассчитывал, что это займет около получаса, максимум час, но ноутбук друга был на Windows 10 x64, что для меня уже непривычно (сам работаю в Ubuntu). По итогу мы потратили практически 8 часов на настройку и создание простого проекта, борясь с многими не очевидными вещами.

Параллельно с этим мне пришлось подробно объяснять, какой элемент сборки для чего нужен, а так же, как эти элементы взаимодействуют между собой, поскольку друг до этого никогда ранее с микроконтроллерами не сталкивался (от слова «видел Arduino в магазине»).

Данный материал призван помочь начинающим быстро и без проблем настроить полностью бесплатную инфраструктуру для работы с микроконтроллерами, а так же понять, каким образом происходит сборка итогового бинарного файла. Производитель и модель микроконтроллера на этапе настройки этой инфраструктуры неважны. Главное, чтобы в его основе лежало ядро ARM.

Оглавление

  1. Постановка задачи.
  2. Выбор программных средств реализации.
  3. Ставим Eclipse Neon 3.
    • Скачиваем установщик Eclipse.
    • Устанавливаем JRE.
    • Устанавливаем Eclipse.
    • Устанавливаем в Eclipse плагин GNU ARM Eclipse.
    • Патчим JRE (на случай появления ошибки при установке плагина).
    • Устанавливаем GNU ARM Eclipse Windows Build Tools.
  4. Скачиваем и устанавливаем GNU ARM Embedded Toolchain.
  5. Устанавливаем OpenOCD.
  6. Устанавливаем драйвера на st-link v2.
  7. Разбираемся, как все это работает.
  8. Заключение.

Постановка задачи

Требуется настроить связку таким образом, чтобы можно было:

  1. Скомпилировать проект, состоящий из C (C99), CPP (C++14) и ASM файлов.
  2. Собрать из скомпилированных файлов единый файл прошивки («.elf» и, при необходимости, «.hex», а так же «.map» файл для удобного анализа сборки).

Выбор программных средств реализации

Для решения поставленных задач нам потребуются следующие программные продукты:

  1. Eclipse Neon 3 для C/C++ (самая последняя версия на момент написания статьи). Будет использована нами как IDE (текстовый редактор с удобным авто дополнением + удобства по взаимодействию со средствами отладки), в которой мы будем писать код.
  2. JRE (на момент написания статьи, самая последняя версия 1.8.0). Без него не запустится установщик Eclipse (ну и сам Eclipse).
  3. GNU ARM Embedded Toolchain (на момент написания статьи, самой последней версией был 5_4-2016q3-20160926). Это комплекс нужных нам программных решений (таких как компилятор C кода «gcc», C++ кода «g++», линкер — «ld», средство загрузки и отладки финальной прошивки — «gdb» и многие другие), благодаря которым мы получим из наших файлов с исходным кодом файл с разрешением «.elf», представляющий из себя бинарный файл прошивки микроконтроллера, который в последствии будет загружен в микроконтроллер (об этом ниже).
  4. OpenOCD 0.10.0. С помощью него мы будем загружать наш «.elf» файл программы в микроконтроллер (на деле, OpenOCD предоставляет связь между gdb из указанного выше toolchain-а и отладчиком).

Помимо перечисленных средств, нам нужно будет поставить еще несколько небольших пакетов, о которых я скажу уже непосредственно в процессе установки.

Ставим Eclipse Neon 3

Как говорилось выше, для того, чтобы писать код, нам нужен текстовый редактор, в котором было бы удобно писать (различные методы авто-дополнения, поиска по проекту, навигация по файлам и т.д). А после того, как мы написали код, было бы неплохо, чтобы его компиляция, сборка и исполнение — были бы делом пары комбинаций клавиш (или кликов мышью, кому как удобно).
Для этих целей я использую Eclipse. Помимо редактора, он представляет еще возможность подключения различных расширений, которые значительно упрощают жизнь разработчика, сводя всю рутинную работу (сборку, компоновку, загрузку программы в контроллер) к паре кликов/нажатий.

Скачиваем установщик Eclipse

  1. Переходим на официальный сайт
  2. Справа вверху нажимаем download.
  3. В открывшейся окне слева выбираем download (x64/x32 должно подобраться автоматически).
  4. Ну и нажимаем download по центру, после чего начнется загрузка. При желании, можно про спонсировать создателей IDE…

Вот более наглядный процесс скачивания.



Устанавливаем JRE

Для того, чтобы запустить установщик, нужно сначала установить JRE. Последняя версия на момент написания статьи 1.8.0.

  1. Запускаем скаченный нами установщик. Получаем ошибку о том, что отсутствует JRE.
  2. Нажимаем «нет» и ждем перехода на сайт.
  3. На сайте выбираем пункт «Oracle JRE 1.8.0».
  4. Выбираем «Accept License Agreement».
  5. Скачиваем Offline версию, согласно разрядности вашей Windows.
  6. Запускаем скаченный файл. Дальнейшая установка проблем не вызывает.

Устанавливаем Eclipse

  1. Запускаем скаченный нами установщик.
  2. Выбираем версию для C/C++.
  3. Указываем путь установки (я оставил по умолчанию, и вам советую).
  4. Принимаем соглашение.
  5. Ждем окончания установки.
  6. Нажимаем «LAUNCH», чтобы запустить среду.
  7. Указываем путь, который будет использовать Eclipse для ваших проектов по умолчанию (я оставил по умолчанию), а так же ставим галочку, чтобы данное окно больше не появлялось.
  8. Убеждаемся, что IDE запустилась, закрываем.
  9. Во время закрытия можем поставить галочку, чтобы окно предупреждения о закрытии более не появлялось.

Устанавливаем в Eclipse плагин GNU ARM Eclipse

Как говорилось ранее, Eclipse позволят подключать различные плагины, упрощающие жизнь разработчика. Одним из таких плагинов является GNU ARM Eclipse. Благодаря нему мы получим возможность легко соединить все используемые нами программные компоненты при создании нового проекта под наш контроллер (как это делать, будет описано ниже).

  1. Переходим на официальный сайт.
  2. В правом столбце, под строкой «Downloads» выбираем «Plug-ins».
  3. Далее под строкой «The GNU ARM Eclipse plug-ins update site URL is still on SourceForge:» копируем ссылку на плагин. На момент написания статьи это была: http://gnuarmeclipse.sourceforge.net/updates
  4. Открываем Eclipse.
  5. Переходим «Help» -> «Install New Software…».
  6. В открывшемся окне нажимаем на «Add…».
  7. В еще одном открывшимся окне в пункте «Name:» пишем, например, «ARM» (название не важно), а в строку «Location:» вставляем скопированную нами с сайта ссылку.
  8. Нажимаем «ОК»
  9. Окно закроется и в списке строк появится пустой чекбокс с надписью «Pending…».
    Далее в случае, если вы встретитесь с ошибкой, представленной ниже, то перейдите к пункту «Патчим JRE», а затем вернитесь и повторите всё с пункта 4.
    Unable to read repository at http://gnuarmeclipse.sourceforge.net/updates/content.xml.
    Unable to read repository at http://gnuarmeclipse.sourceforge.net/updates/content.xml.
    Received fatal alert: handshake_failure

    В случае, если ошибки не возникло или вы ее уже исправили, продолжаем дальше.
  10. После того, как появится строка «GNU ARM C/C++ Cross Development Tools», необходимо выбрать чекбокс слева от нее и нажать «Next».
  11. После еще раз «Next».
  12. Далее принимаем лицензионное соглашение и нажимаем «Finish». Начнется процесс установки.
  13. В процессе установки появится предупреждение о безопасности. Жмем «ОК».
  14. По окончании установки потребуется перезагрузить Eclipse, для этого нажимаем «Yes» в появившемся окне.
  15. На этом установка этого плагина завершена.

Патчим JRE (если в пункте выше произошла ошибка)

Так уж случилось, что в JRE есть неприятный баг, мешающий нам нормально установить плагин. Не вдаваясь в природу сея явления, делаем следующие действия.

  1. Переходим на сайт с патчем.
  2. Выбираем пункт «Accept License Agreement».
  3. Скачиваем «.zip» архив.
  4. Распаковываем. В архиве 2 файла («local_policy.jar» и «US_export_policy.jar») патча и текстовый файл. Копируем эти 2 файла с разрешением «.jar» и заменяем ими файлы по адресу установленной java. В случае 64-х битной windows 10, это путь
    C:Program FilesJavajre1.8.0_121libsecurity
    Путь может быть другим в случае, если выйдет новая версия jre или у вас ОС с другой разрядностью. Главное, что вы должны зайти в папку «libsecurity» и туда скопировать с заменой эти 2 файла. На этом патч можно считать завершенным. Можно снова запустить eclipse и установить плагин.

Устанавливаем GNU ARM Eclipse Windows Build Tools

Дело в том, что в windows по умолчанию команда «make» в командной строке не работает (хотя и в linux не во всех дистрибутивах данное приложение по умолчанию установлено). Для чего нам нужно приложение «make», мы поговорим ниже, а сейчас нам просто нужно поставить плагин, который добавит возможность пользоваться им. Для этого.

  1. Переходим в официальный репозиторий.
  2. Скачиваем «.exe» файл под свою платформу. На момент написания статьи самая актуальная версия «gnuarmeclipse-build-tools-win64-2.8-201611221915-setup.exe».
  3. Запускаем скаченный файл и просто жмем «Next», «A Agree», «Next», «Install», «Finish».

Скачиваем и устанавливаем GNU ARM Embedded Toolchain

  1. Переходим на официальный сайт
  2. Скачиваем последнюю актуальную версию, собранную в «.exe» файл для Windows (в столбце справа).
  3. Запускаем скаченный файл.
  4. Жмем «ОК».
  5. Затем «Далее»
  6. «Принимаю»
  7. «Установить» (вот тут поясню, что папку можно указать любую, но лучше все-таки оставить ту, что стоит по умолчанию, во избежание проблем с регистрацией компонентов во время установки).
  8. По окончании установки снимаем галочку с «Показать файл ReadMe.». Остальные оставляем по умолчанию.
  9. «Готово»

Следующие действия несут информативный характер и могут быть пропущены. В этом случае, открывшуюся командную строку можно закрыть.

  1. В открывшейся командной строке пишем «cd bin», без кавычек (именно тут лежат «.exe» файлы всех компонентов toolchain-а).
  2. Набираем «arm-none-eabi-gcc —version», без кавычек.
  3. Убедившись, что gcc ответил, закрываем консоль.

Устанавливаем OpenOCD

Со средой и toolchain-ом разобрались. Далее нужно установить OpenOCD, с помощью которого Eclipse через arm-none-eabi-gdb будет рулить контроллером. Тут все просто.

  1. Переходим в официальный репозиторий.
  2. Скачиваем «.exe» файл под свою ОС. На момент написания статьи, самая актуальная версия «gnuarmeclipse-openocd-win64-0.10.0-201701241841-setup.exe».
  3. Запускаем скаченный «.exe». Установку производим не меняя ничего (в том числе и путь).

Устанавливаем драйвера на st-link v2

OpenOCD управляет контроллером, это верно, но для этого ему требуется драйвер на отладчик. В нашем случае, это st-link v2. В случае, если у вас другой отладчик, то эту часть можно пропустить.
Вне зависимости от того, поддельный у вас st-link или оригинальный, драйвера одни и те же. Начнем.

  1. Переходим на официальную страницу st-link v2
  2. Внизу страницы скачиваем файл «STSW-LINK009» с описанием «ST-LINK, ST-LINK/V2, ST-LINK/V2-1 USB driver signed for Windows7, Windows8, Windows10».
  3. При переходе на другую страницу нажимаем «Download» в нижней части страницы. Тут важно заметить, что если вы сидите в интернете не через VPN, то вам придется зарегистрироваться. Как это делать, я описывать не буду. После чего файл будет скачен.
  4. Разархивировав архив выбираем файл установки драйвера согласно разрядности ОС. В моем случае, это «dpinst_amd64.exe».
  5. Во время установки соглашаемся со всеми требованиями. И выбираем чекбокс «Всегда доверять программному обеспечению STMicroelectronics».

Разбираемся, как все это работает

Вот мы установили все необходимые компоненты, создали проект в Eclipse (о том, как создать и настроить проект, будет написано в следующей статье) и нажали «Ctrl+B». Получили готовый файл прошивки, который нажатием по иконке «отладка» можно загрузить в контроллер и начать непосредственно отладку. Но что скрывается за всеми этими действиями? А происходит следующее:

  1. После того, как вы нажимаете «Ctrl+B» — Eclipse анализирует дерево каталогов проекта (все созданные нами папки и файлы, находящиеся в них). Для этого он пользуется путями к файлам, которые мы укажем при создании проекта.
  2. После этого Eclipse создает makefile. Этот файл содержит в себе указания для программы make о том, какие файлы нужно компилировать (которые мы добавили в проект, указав при этом путь к каталогам, где они лежат), с какими параметрами (здесь Eclipse пользуется заполненными нами параметрами во вкладке «C/C++ Build») и как компоновать в итоговом файле прошивки скомпилированные ранее файлы.
    Заметка: makefile не имеет расширения.
  3. Далее Eclipse вызывает программу make с указанием пути к созданному makefile, а так же параметры сборки, указанные нами при настройке проекта (это, например количество потоков процессора, используемого для компиляции).
  4. Программа make проходит по всем файлам проекта, согласно указаниям в makefile-е и получает для каждого файла файл с расширением «.o». Эти файлы располагаются в папке Debug точно так же, как и в основном проекта (с сохранением иерархии дерева). Если в каком-то файле будет ошибка, вы получите уведомление об этом, выделенное красным в консоли компиляции (по умолчанию она располагается внизу экрана). При возникновении ошибки компиляции, дальнейшая компиляция и сборка прекращаются. Для компиляции файлов make использует указанный в makefile toolchain (вернее сказать, его компоненты: gcc/g++). Путь к toolchain-у Eclipse берет, опять же, из настроек проекта.
  5. После создания всех «.o» файлов из «.c», «.cpp», «.S» (прошу заметить, файлы с ассемблерным кодом обязательно должны иметь расширение большой буквы «S», иначе при создании makefile данные файлы будут просто проигнорированы, что ведет к трудно уловимым ошибкам) make вызывает компоновщик (arm-none-eabi-ld из установленного нами toolchain-а) с указанием путей к файлам компоновки из проекта (файлы с расширением «.ld», которые мы добавим в проект). Тут компоновщик, опираясь на указанные в файлах компоновки с расширением «.ld» указания (правила) пытается собрать из кучи «.o» файлов один объектный файл с разрешением «.elf» (и, если есть такие указания в makefile, «.hex» и «.map»). Важно заметить, именно linker (компоновщик) решает, какие куски кода и данных можно выкинуть из программы (если сочтет, что они нигде не используются и просто занимают место). Таким образом, если мы создадим 1000 глобальных переменных, из которых будем использовать в коде только 2, то остальные (если явно не задано, что их нельзя исключать из проекта ключевым словом «volatile» или указанием «положить в секцию, из которой ничего нельзя убирать») будут исключены из конечного объектного файла, что даст нам больше свободной памяти.
  6. После того, как мы получили конечный объектный файл, мы можем его «зашить» в контроллер и провести отладку. Для этого Eclipse вызывает программу OpenOCD с указанием пути к файлу «openocd.cfg» (имя может быть любое, с расширением «.cfg», но в случае, если вам придется когда-нибудь отлаживаться из командной строки, а не из под IDE, то вы ощутите, что правильно названный файл для OpenOCD позволяет вам не писать имя файла конфигурации (т.к. в случае, если файл конфигурации был не указан, то автоматически ищется файл с таким именем)).
    В случае, если указанный файл существует, OpenOCD, согласно параметрам в файле, попытается соединиться с микроконтроллером. В случае, если подключение верно, вы получим уведомление о том, что связь установлена, отладчик контроллера работает.
    Для того, чтобы связаться с контроллером, OpenOCD использует драйвер для st-link-а, установленный нами в начале.
  7. После того, как OpenOCD смог установить связь с контроллером, он открывает telnet соединение. Если не вдаваться в подробности, это нужно для того, чтобы arm-none-eabi-gdb мог успешно управлять контроллером.
  8. После того, как telnet соединение установлено, Eclipse запускает arm-none-eabi-gdb с указанием порта, к которому нужно подключиться (тот, что открыл OpenOCD).
  9. Далее Eclipse посылает в gdb команды инициализации (стереть flash, записать файл прошивки, установить точку остановки на main, и еще несколько нобязательных параметров).
  10. После этого в Eclipse мы видим указатель на первую строку кода в файле main и можем начать отладку.

Чисто технически, все проделанные тут операции можно делать каждый раз вручную, но, согласитесь, куда удобнее просто нажать на клавишу и наслаждаться запущенной отладкой.

Заключение

В этой статье я постарался подробно описать процесс конфигурации сборки под Windows. В случае, если у вас появятся вопросы — пишите в личку, постараюсь помочь и добавить в статью проблему + ее решение.
В следующей статье я расскажу, как настроить Eclipse под конкретный контроллер, собрать демонстрационный проект и настроить отладку.

Release v1.7.0

Release date: 2021-04-25

This release drops support for the STLINK/V1 programmer on macOS 10.13.

Features:

  • Extended set of cmd line arguments for st-info and st-util (#332, #990, #1091, #1114)
  • Extended support for STM32H7 & rework of software reset (#532, #801, #868, #1008, #1059, #1063, #1071)
  • Added support for STM32H742/743/753 (#671, #793, #823, #998, #1052)
  • Official support for STLINK-V3 programmers (commit #5e0a502, #820, #1022, #1025)
  • Added preliminary support for STM32L5x2 (#904, #999)
  • Option bytes on the STM32F767 ZIT6 Nucleo-144 (#968, #997)
  • Use SetConsoleCtrlHandler for Windows (#1021)
  • Increase STM32L0 option_size to 20 (#1046)
  • st-util: Add specialized memory map for STM32H7 devices (#1060)
  • Support for STM32F4 option bytes (#1062)
  • Link for WIN32 & APPLE with stlink-static (#1069)
  • ITM functionality for STLink/V2 and STM32Fxx chipsets (#136, #179, #815, #1072)
  • Included ITM functionality for building with MSVC (#1080)
  • Update for CI integration (commit #0eebc9a, #1118)

Updates & changes:

  • [doc] Added tutorial section on unknown chip id error (commit #229c721, #107, #568)
  • [doc] Updated documentation on target resetting (#261, #533, #1107)
  • [doc] Added note on (gdb) run command (commit #03793d4, #267)
  • [doc] st-flash --reset parameter (one solution for #356) (#642)
  • [refactoring] General maintenance (#864. #978)
  • Imported debian pkg-settings (#986)
  • Add support for FreeBSD’s libusb reimplementation (#992, #993)
  • [doc] Added explanation about STM32F103 fake chips (commit #a66557a, #1024)
  • [doc] Added example for output of st-info --probe (#1007, #1049)
  • [refactoring] Correctly handle endianness without reference to host platform (#1081)
  • Check format string for log messages (#1093)
  • Removed abort() from stlink-lib (#1116)

Fixes:

  • Improvements and fixes of the flash loaders, unification of the reset function (#244, #382, #705, #724, #980, #995, #1008, #1115, #1117, #1122, #1124)
  • Flash loader rework (#356, #556, #593, #597, #607, #612, #638, #661, #690, #724, #807, #817, #818, #854, #868, #967, #979, #1008, #1043, #1054, #1092, #1105, #1113)
  • Fixed old DFU serial number for STLINK programmers (#417, #494, #1106, #1121)
  • Improvements for Chip_ID read (#620, #1008, #1120)
  • Use vl flashloader for all STM32F1 series (#724, #769, #1041, #1044)
  • [regression] Changed timeout on flash write (#787, #981, #987)
  • cmake compile failure with external CMAKE_MODULE_PATH set (#962)
  • doc/man: Fixed installation directory (#970)
  • Fixed installation path for desktop-file and icons (#972)
  • Fix for static linking of libssp (#973, #974)
  • [regression] Fixed wrong formatting for library install path (#978, #1089, #1277)
  • Fixed installation of header files needed for compiling with libstlink.so.1.6.1 (commit #31b1fa1, #982)
  • Fixed connect under reset for st-flash and st-util (#983)
  • Fix for mmap() size_t overflow in st-flash (#988, #989)
  • [regression] stlink-gui installation issue on Ubuntu-18.04 (#1001, #1004, #1006)
  • st-util: wrong register values passed to gdb (STLink/V2) (#1002, #1011, #1026, #1027, #1038, #1064, #1065)
  • GDB: Fixed problems with target description (#1013, #1088, #1109)
  • [doc] Fi…

Release v1.6.1

Release date: 2020-06-01

This release drops support for some older operating systems. Check project README for details.

Features:

  • Basic compatibility for STLink/V3 programmer (#271, #863, #954, #1023)
    • Added support for JTAG command API v2 & distinguish protocol versions v1 and v2
    • Compatibility with the STLink/V3 firmware which dropped support for the previous API v1
    • As of firmware version J11 the STLink/V1 programmer supports API v2 commands as well
  • Display programmer serial when no target is connected (#432, #933, #943)
  • Added connect under reset to stlink_open_usb( ) (#577, #963)
  • Support for STM32L1, SM32L4 option bytes write (#596, #844, #847)
  • Added CMAKEFLAGS and install target (#804, #935)
  • Support for STM32G4 (#822)
  • Added aliased SRAM2 region in the L496 memory map (#824)
  • Improved support for STM32G0 (#825, #850, #856, #857)
  • Added postinst script with depmod -a for make package (#845, #931)
  • Calculate checksums for flash operations (#862, #924)
  • Adjust the JTAG/SWD frequency via cmdline option (#893, #953)
  • Added usb PID and udev rules for STLink/V2.1 found on Nucleo-L432KC and Nucleo-L552ze boards (#900)
  • STM32G0/G4 improvements (#910)
    • Enable mass erase with a flash programming check
    • Handle G4 Cat3 devices with configurable dual bank flash by using a helper

Updates & changes:

  • [doc] Updated compiling instructions (#113, commit #10ae529)
  • Defined libusb version compatibility for supported systems via LIBUSB_API_VERSION (#211, #782, #895)
  • Improved argument parsing for CLI tools (#378, #922)
  • [doc] Updated tutorial: macOS STLink/V1 detection (#574, #587)
  • Enhanced error log with file path for map_file() (#650, #879, #921)
  • Enhanced output for error msg addr not a multiple of pagesize, not supported (#663, #945)
  • Updated STLink/V1 driver for macOS (#735, #964)
  • Package distribution: Provide Windows binaries via Debian-based cross-build (#738, #795, #798, #870, #955)
    • [refactoring] Update, corrections & cleanup for build settings (see #955 for details)
    • New cpack package-config for DEB and RPM build
    • Update for travis build configuration: builds for clang -m32, clang-9, MinGW-cross on linux
    • Updated steps for release preparation
    • Project contributors now listed in separate file
    • Test files & gui now use shared stlink-library
  • [doc] Verify correct udev configuration for device access (#764)
  • Added more error info to WLOGs during probe (#883)
  • [doc] Added missing documentation for stlink-gui (#884)
  • Added check for libssp during compilation (#885)
  • Silenced unnecessary messages (#886)
  • [doc] Defined libusb & cmake version compatibility (#896, #897, #899, commit #27aa888)
  • Update for STM32G471/473/474/483/484 devices (#901)
  • [doc] st-flash --flash=n[k][m] command line option to override device model (#902)
  • [refactoring] Improved cmake build process (#912)
    • Set up a libusb log level accordingly to verbosity (#894
    • [compatibility] Updated libusb to v1.0.23 ([#895](#895, #1089)
    • Updated compiling doc & version support (#896, #897, #899)
    • Version requirements & pkg-maintainer
    • Fixed install paths in build script
    • Updated C-flag -std=gnu99 to gnu11)
    • Added cmake uninstall target (#619, #907)
    • Integrated module GNUInstallDirs.cmake (#557)
    • [doc] Defined version compatibility and installation instructions for macOS
    • [refactoring] libusb detection
    • Deprecated old appveyor-mingw script
  • [refactoring] BSD-License-compliant rewrite of flashloader source files (#915, #932)
  • [refactoring] Overall option code rework (#927)
  • [refactoring] Build settings / GUI-Build on UNIX-based systems if GTK3 is detected (#929)
  • [refactoring] Reconfiguration of package build process (#931, #936, #940, commit #9b19f92)
  • [refactoring] st-util: Removed now useless v1/v2 STLink version stuff (#934)
  • [refactoring] Cleanup for option bytes and flash settings (#941)
  • Added compilation guideline for MSVC toolchain (#942)
  • [refactoring] Cleanup of cmake build process (#944, #946, #947)
    • libusb package extraction no longer requires 7zip as an external unarchiver

Fixes:

  • Fixed wait-loop for flash_loader_run() (#290)
  • Better argument parsing for CLI tools: stlink_open_usb can address v1, v2, v3 (#378, #922)
  • Clear the PG bit before setting the PER bit (#579, #876)
  • Fixed compilation issues with int length on 32-bit platforms (#629, #908)
  • Fixed st-info --probe mechanism (#679, #918)
  • [regression] Fixed sign-compare (size != rep_len) in usb.c (#772, #869, #872, #891)
  • Fixed dead loop after an unexpected unplug (#780, #812, #913)
  • Avoid re-define of O_BINARY on Windows (#788)
  • Fixed stlink lock-up when not connected to a device via JTAG / SWD (#835, [#9…

Release v1.6.0

Release date: 2020-02-20

Major changes and added features:

  • Initial support for STM32L41X (#754, #799)
  • Verified support for CKS32F103C8T6 and related CKS devices with Core-ID 0x2ba01477 (#756, #757, #805, #834, Regression-Fixes: #761, #766)
  • Added preliminary support for some STM32G0 chips (#759, #760, #797)
  • Added support for mass erasing second bank on STM32F10x_XL (#767, #768)
  • Added call to clear PG bit after writing to flash (#773)
  • Added support to write option bytes for the STM32G0 (#778)
  • Added support for STM32WB55 chips (#786, #810, #816)
  • Added STLink V3SET VID:PIDs to the udev rules (#789)
  • Support for STM32+Audio v2-1 firmware (#790)
  • Build for Windows under Debian/Ubuntu (#802)
  • Allow for 64 bytes serials (#809)
  • Added full support for STLINK CHIP ID L4RX (#814, #839)
  • Added support for the STLink/V2.1 when flashed with no mass storage (PID 0x3752) (#819, #861)
  • Added support for writing option bytes on STM32L0xx (#830)
  • Added support to read and write option bytes for STM32F2 series (#836, #837)
  • Added support to read and write option bytes for STM32F446 (#843)

Updates and fixes:

  • Fixed an issue with versioning stuck at 1.4.0 for versions cloned with git (#563, #762, #772)
  • Fixed unkown chip id, piped output and st-util -v (#665, #763)
  • Updated STM32F3xx chip ID that covers a few different devices (#685, #758)
  • Made udev rules and modprobe conf installation optional (#741)
  • Fixed case when __FILE__ doesn’t contain either / nor \ (#745)
  • Fixed double dash issue in doc/man (#746, #747)
  • Compiling documentation: package is called libusb-1.0-0-dev on Debian (#748)
  • Only do bank calculation on STM32L4 devices with dual banked flash / Added chip-ID 0x464 for STM32L41xxx/L42xxx devices (#751)
  • Added O_BINARY option to open file (#753)
  • Fixed versioning when compiling from the checked out git-repo (#762, #772)
  • win32: move usleep definition to unistd.h (#765)
  • Fixed relative path to the UI files needed by stlink-gui-local (GUI) (#770, #771)
  • Added howto for sending NRST signal through GDB (#774, #776, #779)
  • Fixed package name devscripts in doc/compiling.md (#775)
  • Fixed few potential memory/resource leaks (#803, #831)
  • Updated Linux source repositories in README.md: Debian and Ubuntu (#821, #835, #859)
  • Do not issue JTAG reset on STLink/V1 (#828)
  • Fixed flash size of STM32 Discovery VL (#829)
  • Updated documentation on software structure (#851)

General project updates:

  • Updated README.md, CHANGELOG.md and issue templates (Nightwalker-87)
  • Fixed travis build config file (Nightwalker-87)
  • Added CODE_OF_CONDUCT (Nightwalker-87)
  • Archived page from github project wiki to doc/wiki_old.md (Nightwalker-87)

Release v1.5.1

Release date: 2018-09-13

Major changes and added features:

  • Added reset through AIRCR (#254, #540, #712)
  • Added creation of icons for .desktop file (#684, #708)
  • Added desktop file for linux (#688)
  • Added button to export STM32 flash memory to a file (#691)
  • Updated libusb to 1.0.22 (#695) — (related Bugs: #438, #632)
  • Added icons for stlink GUI (#697)
  • Added support for STM32L4R9 target (#694, #699)
  • Added memory map for STM32F411RE target (#709)
  • Implemented intel hex support for GTK GUI (#713, #718)

Updates and fixes:

  • Fixed missing flash_loader for STM32L0x (#269, #274, #654, #675)
  • Fix for stlink library calls exit() or _exit() (#634, #696)
  • Added semihosting parameter documentation in doc/man (#674)
  • Fixed reference to non-exisiting st-term tool in doc/man (#676)
  • Fixed serial number size mismatch with stlink_open_usb() (#680)
  • Debian packaging, cmake and README.md fixes (#682, #683)
  • Disabled static library installation by default (#702)
  • Fix for libusb deprecation (#703, #704)
  • Renamed STLINK_CHIPID_STM32_L4R9 to STLINK_CHIPID_STM32_L4RX (#706)
  • [regression] stlink installation under Linux (Debian 9) is broken since #695 (#700, #701, #707)
  • Fixed flash memory map for STM32F72xxx target (#711)
  • Proper flash page size calculation for STM32F412xx target (#721)
  • Return correct value on EOF for semihosting SYS_READ (#726, #727, #728, #729, #730, #731, #732)
  • FreeBSD defines LIBUSB_API_VERSION instead of LIBUSBX_API_VERSION (#733)

Release v1.5.0

Release date: 2018-02-16

Major changes and added features:

  • Added support of STM32L496xx/4A6xx devices (#615, #657)
  • Added unknown chip dummy to obtain the serial of the STlink by a call to st-info --probe (#641)
  • Added support for STM32F72xx (chip-ID: 0x452) devices (commit #1969148)

Updates and fixes:

  • Fixed verification of flash error for STM32L496x device (#617, #618)
  • Updated Linux source repositories in README.md: Gentoo, Fedora and RedHat/CentOS (#622, #635)
  • Updated changelog in debian package (#630)
  • Added LIB_INSTALL_DIR to correct libs install on 64-bit systems (#633, #636)
  • Fixed write for microcontroller with RAM size less or equal to 32K (#637)
  • Fixed memory map for STM32L496xx boards (#639)
  • Fixed __FILE__ base name extraction (#624, #628, #648)
  • Added debian/triggers to run ldconfig (#664)
  • Fixed build on Fedora with GCC 8 (#666, #667, #668)

Release v1.4.0

Release date: 2017-07-01

Major changes and added features:

  • Allow building of debian package with CPack (#554, commit #5b69f25)
  • Added support for STM32L011 target (#564, #565, #572)
  • Added support for flashing second bank on STM32F10x_XL (#592)
  • Initial support to compile with Microsoft Visual Studio 2017 (#602)
  • Added support for STM32L452 target (#603, #608)

Updates and fixes:

  • Added --flash=n[k][m] command line option to override device model (#305, #516, #576)
  • Updated libusb to 1.0.21 for Windows (#562)
  • Fixed low-voltage flashing on STM32F7 devices (#566, #567)
  • Fixed building with mingw64 (#569, #573, #578, #582, #584, #610, #846)
  • Fixed possible memory leak (#570, #571)
  • Fixed installation path for shared objects (#581)
  • Fixed a few -Wformat warnings (#582)
  • Removed unused defines in mingw.h (#583)
  • Skip GTK detection when cross-compiling (#588)
  • Fixed compilation with GCC 7 (#590, #591)
  • Fixed flashing to F0 device targets (#594, #595)
  • Fixed wrong counting when flashing (#605)

Release v1.3.1

Release date: 2017-02-25

Major changes and added features:

  • Added support for Semihosting SYS_READC (#546)
  • Added support for STM32F413 (#549, #550, #758)
  • Added preliminary support for STM32L011 to see it after probe (chip-ID 0x457) (#558, #598)

Updates and fixes:

  • cmake/CPackConfig.cmake: Fixup OSX zip filename
  • Updated source repositories in README.md: Windows, macOS, Alpine Linux
  • Compilation fixes (#547, #551, #552)
  • Stripped full paths to source files in log (#548)
  • Fixed incorrect release folder name in docs (#560)
  • Fixed compilation when path includes spaces (#561)

Release v1.3.0

Release date: 2017-01-28

Major changes and added features:

  • Deprecation of autotools (autoconf, automake) and fixed build with MinGW (#83, #431, #434, #465)
  • Added intel hex file reading for st-flash (#110, #157, #457, #459)
  • Added support for ARM semihosting to st-util (#147, #227, #454, #455)
  • Added manpages (generated with pandoc from Markdown) (#208, #464, #466, #467)
  • Removal of undocumented st-term utility, which is now replaced by st-util ARM semihosting feature (#228, #507, commit #3fd0f09)
  • Support serial numbers argument for st-util and st-flash to probe and control multiple connected programmers (#318, #398, #541)
  • Added ‘k’ (kill) command to gdb-server, which resets the connection (#358, #525, #527, #528)
  • Merge st-probe tool into st-info (#398)
  • Added support for native debian packaging (#444, #472, #473, #482, #483, #484, #485)
  • Rewritten commandline parsing for st-flash (#459)
  • Added --reset command to st-flash (#505)

Chip support added for:

  • STM32F401XE: Added memory map for device (#460)
  • STM32F410RBTx (#418)
  • STM32F412 (#537, #538)
  • STM32F7xx (#324, #326, #327, #337)
  • STM32F7x7x (#433, #435, #436, #509)
  • STM32L0xx Cat2 devices (chip-ID: 0x425) (#414)
  • STM32L0xx Cat5 devices (chip-ID: 0x447) (#387, #406)
  • STM32L4xx (#321)
  • STM32L432 (#500, #501)

Updates and fixes:

  • Do a JTAG reset prior to reading CPU information when processor is in deep sleep (#291, #428, #430, #451)
  • Fixed unaligned addr or size when trying to write a program in RAM (#323)
  • Fixed flashing on STM32_F3_SMALL (#325)
  • Fixed STM32L-problem with flash loader (#390, #407, #408)
  • Don’t read the target voltage on startup, because it crashes STM32F100 (#423, #424)
  • Added a useful error message instead of [!] send_recv (#425, #426)
  • Fixed STM32F030 erase error (#442)
  • Fixed memory map for STM32F7xx (#453, #456)
  • Redesign of st-flash commandline options parsing (#459)
  • Set SWDCLK and fixed jtag_reset bug (#462, #475, #534)
  • doc/compiling.md: Add note about installation and ldconfig (#478, commit #be66bbf)
  • Fixed Release target to generate the man-pages with pandoc (#479)
  • Fixed Cygwin build (#487, (#506)
  • Reset flash mass erase (MER) bit after mass erase for safety (#489)
  • Wrong extract command in FindLibUSB.cmake (#510, #511)
  • Fixed compilation error on Ubuntu 16.10 (#514, #525)

Release v1.2.0

Release date: 2016-05-16

Features added:

  • Added multiple stlink probing (st-info --probe, st-info --hla-serial) with printing serial in hex and OpenOCD hla_serial format (Jerry Jacobs)
  • Added stlink usb probe API functions (Jerry Jacobs)
  • Added parameter to specify one stlink v2 of many (Georg von Zengen)

Updates and fixes:

  • Refactoring/fixes of flash loader (Maxime Coquelin)
  • Synchronized cache for STM32F7 (Tristan Gingold)
  • Allow flashing of STM32L4 down to 1.71 V (Greg Meiste)
  • Fix on STM32L4 to clear flash mass erase flags on CR (Bruno Dal Bo)
  • Proper writing of page 0 of second bank for STM32L476xe (Tobias Badertscher)
  • Trace the read data in stlink_read_debug32 and not the address of the variable (Tobias Badertscher)
  • Mac OS X El Capitan platform support confirmation (Nikolay)
  • Do not send a NULL at end of packets to gdb (Tristan Gingold)
  • Correctly compute flash write size for partial pages (Dave Vandervies)
  • _stlink_usb_reset use hardreset (mlundinse)
  • Make sure MCU is halted before running RAM based flashloaders (mlundinse)
  • Could not flash STM32_F3_SMALL (Max Chen)
  • STM32F4 8-bit support for 1.8v operation (Andy Isaacson)
  • Fixed STM32F2xx memory map (Nicolas Schodet)
  • Memory map for STM32F42xxx and STM32F43xxx devices (Craig Lilley)
  • Stm32l0x flash loader (Robin Kreis)
  • Modified determination of erased byte pattern when flashing (#193, #377)
  • Use libusb synchronous api (#194, #225, #374)
  • Fixed segfault when programmer is already busy and NULL pointers are in the list (#256, #394)
  • Fixed gdb-server: Cortex M0 chips have no FP_CTRL register for breakpoints (#266, #273, #341)
  • Fixed issue where «unknown chip id!» was seen every other time (#352, #367, #381)
  • Send F4 memory-map and features for STM32F429 (#188, #196, #250, #251) (Release v1.1.0)
  • Added AHB3 Peripherals definition for STM32F4 (#218, #288) (Release v1.1.0)
  • Reset: st-flash does not work when CPU is in sleep mode (#62) (Release v1.0.0)
  • Ensure USB device search succeeds if the matched device is at index 0 (#126, #151) (Release v1.0.0)
  • Corrected flash size register address for STM32F2 devices (#278) (Release v1.0.0)

Chip support added for:

  • STM32L053R8 (Jean-Luc Béchennec)
  • STM32F7 Support (mlundinse)
  • Added STM32L4 to CHIPID #defines and devices[], flash driver and loader (Dave Vandervies)
  • Basic support for STM32F446 (Pavel Kirienko)
  • STM32F303 High Density
  • STM32F469/STM32F479 (#345, #555) (Release v1.2.0)
  • STM32L1xx Cat.2 devices (Nicolas Schodet)
  • STM32L1xx (chip-ID 0x427) (#152, #163, #165) (Release v1.0.0)
  • Added SIGINT handler for stlink cleanup (#31, #135) (Release v1.0.0)

Board support added for:

  • Nucleo-F303RE (Kyle Manna)
  • Nucleo-F411RE (texane)

Build system:

  • Travis: Initial support for Travis continues integration on Linux & Mac OS X (Jerry Jacobs)
  • CMake: Document in README.md and add extra strict compiler flags (Jerry Jacobs)
  • CMake: First stab at a cmake build (Josh Bialkowski)

Допустим, копая просторы Интернета, нашли мы очень интересное электронное устройство на микроконтроллере STM32, причем и все схемы, и прошивка прилагается. Но вот незадача, никогда мы не занимались загрузкой прошивки в STM32, раньше работали только с AVR-ками. Не беда! В этой статье мы разберемся в этом вопросе, ведь загружать готовую прошивку в STM32 не сложнее, чем в старые добрые AVR-ки, а может даже и проще! 😉 Итак, поехали! Предыдущая статья здесь, все статьи цикла можно посмотреть тут: http://dimoon.ru/category/obuchalka/stm32f1.

Программатор

В предыдущей части мы познакомились с несколькими вариантами программатора ST-Link. В данном примере в качестве программатора я буду использовать отладочную плату stm32f4discovery, просто потому, что она у меня есть. Для того, чтобы использовать эту отладочную плату в качестве программатора, нужно сделать 2 вещи:

  1. Снять перемычки, соединяющие линии программирования встроенного ST-Link-а с микроконтроллером, распаянным на плате
  2. С помощью гребенки, на которую выведена шина SWD, подключить сигнальные линии программатора к внешнему микроконтроллеру

На картинке, приведенной далее, показана распиновка разъема SWD:

На китайских отладочных платах с микроконтроллером stm32f103c8 имеется соответствующий разъем, через который можно загрузить прошивку в МК. Эти платы выглядят примерно так:

Пины на разъеме программирования подписаны как GND, CLK, DIO, 3V3. Соединение с программатором выполняется вот таким образом:

  • GND — GND
  • CLK — SWCLK
  • DIO — SWDIO

У меня макеты выглядят вот так:

В данном случае отладочная плата с 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

Once you have your ST board that may be either discovery, Nucleo, or any other board from ST, which is based on ST-Link in-circuit debugger and programmer, then in order to talk to the board successfully, you have to install the ST-Link drivers.

The ST-Link driver means the driver for the ST-Link in-circuit debugger and programmer interface shown in Figure 1.

ST-Link in-circuit debugger and programmer

Figure 1. ST-Link in-circuit debugger and programmer.

ST-LINK Driver for Windows 32/ 64-bit version 7, 8, and 10:

It is available on the STs website.

You can directly go there. Just go to the link shown in Figure 2. You will get a USB driver for those boards with ST-LINK/V2 and ST-LINK/V2-1 ST-Link circuitry. At the end of the website, you will find the driver (Figure 3). Just download this.

ST-Link Driver Installation

Figure 2. ST-Link driver installation link for Windows.
ST-Link driver for Windows.
Figure 3. ST-Link driver for Windows.

Once you download this driver, go to that folder where you have downloaded it. There you will see 2 applications (Figure 4). One for 32 bit and another for 64-bit.

Downloaded applications.

Figure 4. Downloaded applications.

Now connect your board.

It could be either discovery or Nucleo and just run this software. You will get a popup window shown in Figure 5. Now let’s click next.

Popup window.

Figure 5. Popup window.

It will install the WinUSB driver (Figure 6), which is required in order to talk to the ST-Link, and it also installs other drivers. Once you install the application, click finish (Figure 7).

WinUSB driver installed on the computer

Figure 6. WinUSB driver installed on the computer.
ST-Link Driver Installation
Figure 7. Installation completion.

See your device manager. Now, currently, the Nucleo board is connected. You will see the COM port under the port, and in USB devices, you will find the STMicroelectronics STLink dongle option (Figure 8).

ST-Link Driver Installation

Figure 8. Device manager.

In order to communicate with the board over UART, you use the ST-Link Virtual COM Port interface, and your host application or host IDE uses STMicroelectronics STLink dongle interface, which is an interface used for debugging.

Remember that the ST-Link driver installation is very, very important. Once you have your board, you have to do this.

ST-LINK Driver for Ubuntu:

For Ubuntu, you just have to run the commands shown in Figure 9 on your command prompt to install all the packages. ST doesn’t give any drivers specifically for Ubuntu or MAC. So, ubuntu guys, just install all the packages shown in Figure 9.

ST-Link Driver Installation

Figure 9. Commands for installation of packages in Ubuntu.

ST-LINK Driver for MAC:

For MAC, no driver installation is required.

In the following article, let’s learn ST Link Firmware Upgrade.

FastBit Embedded Brain Academy Courses

click here:https://fastbitlab.com/course1

Содержание

  1. Делаем ST-Link V2.1 из китайского ST-Link V2
  2. Предисловие
  3. Приступаем к работе
  4. Вскрываем.
  5. Прошивка
  6. Обновление до ST-Link V2.1
  7. Завершающая часть
  8. Настраиваем бесплатную сборку для написания и отладки программ под микроконтроллеры на основе ядра ARM под Windows 10
  9. Оглавление
  10. Постановка задачи
  11. Выбор программных средств реализации
  12. Ставим Eclipse Neon 3
  13. Stm32 st link v2 driver windows 10
  14. Кто сейчас на форуме

Делаем ST-Link V2.1 из китайского ST-Link V2

Привет, Хабр!

В данной статье расскажу как модифицировать ST-Link V2 до ST-Link V2.1.

Возможно для кого-то это не будет новостью, но особой инфы по данной теме в инете не нашел.

Кому интересно — прошу под кат.

Предисловие

Так уж случилось, что мне надоели лишние провода.

Немного подумав я вспомнил что на платах Nucleo и Discovery — ST-Link совмещает в себе SWD и VCP (Virtual Com Port).

Первое что пришло в голову — купить самую дешевую из подобных плат, попытаться сдампить прошивку в обход защиты и залить в программатор из китая, либо же развести новую плату.
Однако мне подсказали ссылку на GitHub с уже вытянутым загрузчиком, в итоге получилось то что получилось.

Приступаем к работе

Модификацию можно произвести только на версии софта под Windows, кроссплатформенная версия софта отказывается обновлять девайс!

Есть несколько вариантов модификации, и часть из них нельзя сделать если чип не подходящий (не хватит памяти).

Например, модификацию STM32+MSD+VCP можно сделать только если чип STM32F1xxCBxx, однако у нее есть аналог STM32+Audio, который даст STM32+VCP (в принципе что нам и требуется).

— Паяльник;
— Мультиметр с прозвонкой;
— ПК с ОС Windows (может получится через Wine, не пробовал);
— Архив с нужным софтом и бутлоадером (PASS: QWK2tn+fM.EdjX6z).
— Китайский клон ST-Link V2;
— USB-UART адаптер либо второй ST-Link.

Вскрываем.



w5uivds6cw1i kmzkk7zmaks4i4

Прошивка

Есть два пути — USB-UART (немного сложнее) либо второй ST-Link.

image loader

1) Прозвонкой находим резистор который подключен к BOOT0.
Делаем перемычку от стороны этого резистора которая подключена к BOOT0 к 3.3v.

PA9(TX) может быть подключен к светодиоду или резистору рядом с ним, потому прозваниваем.

Так же подпаиваем питание.

Прошиваем загрузчик Protected-2-1-Bootloader.bin с помощью STM32 Flash loader demonstrator.

После прошивки отпаиваем перемычку, PA9 и PA10 (PA10 оставляем если хотим вывести SWO).

image loader
На платах есть по 4 контакта, в некоторых случаях они уже промаркированы, в противном же случае прозваниваем их относительно PA13(SWDIO) и PA14(SWCLK), подпаиваемся вторым ST-Link.

fknhqltfmmh5bugrivgwt6b7nvs

Так же подпаиваем питание.

Устанавливаем STM32 ST-LINK Utility V4.3 из архива, снимаем защиту от записи и прошиваем загрузчик Protected-2-1-Bootloader.bin.

Для снятия защиты в программе STM32 ST-LINK Utility жмем Target > Option Bytes, переключаем Read Out Protection в Disabled и жмем Apply.

Обновление до ST-Link V2.1

После прошивки подключаем прошитый ST-Link (уже почти V2.1) к ПК.

В программе STM32 ST-LINK Utility V4.3 жмем ST-LINK > Firmware update.

Жмем Device Connect — получаем список возможных модификаций:

image loader

Выбираем нужную вам модификацию, в моем случае STM32+MSD+VCP, жмем Yes >>>>.

Ждем пока завершится обновление…

Завершающая часть

Так как SWIM и RST после такой модификации не работают — отрезаю их.

Так же отрезаю дублирующие 5V и 3.3V.

Получается 4 свободных пина.

На них подпаиваюсь проводками к чипу:

Вывожу все на основной разъем, на оставшиеся свободные пины.

Получилась такая распиновка:

image loader

w5uivds6cw1i kmzkk7zmaks4i4

Накарябал скальпелем маркировку на корпусе:

Не забываем отмыть плату после пайки!

В итоге, в ПК девайс определяется так:

image loader

image loader

Я без понятия чему равен объем виртуальной флешки (в данном случае к ST-Link V2.1 был подключен F103C8).

Если на нее закинуть файл прошивки — программатор прошьет чип без программ.

image loader

Спасибо за внимание!
При копировании попрошу оставлять ссылочку на первоисточник.

С вопросами обращайтесь в комментарии, чем смогу — помогу.

Источник

Настраиваем бесплатную сборку для написания и отладки программ под микроконтроллеры на основе ядра ARM под Windows 10

Идея написать статью (которая войдет в цикл статей для новичков, остро жаждущих создавать что-то на микроконтроллерах при почти нулевых знаниях в области программирования в принципе) пришла мне после того, как мне пришлось немного отвлечься от своих основных дел, чтобы помочь другу настроить рабочую среду для написания софта под его небольшой домашний проект на основе board-а с stm32f103 на борту. Я рассчитывал, что это займет около получаса, максимум час, но ноутбук друга был на Windows 10 x64, что для меня уже непривычно (сам работаю в Ubuntu). По итогу мы потратили практически 8 часов на настройку и создание простого проекта, борясь с многими не очевидными вещами.

Параллельно с этим мне пришлось подробно объяснять, какой элемент сборки для чего нужен, а так же, как эти элементы взаимодействуют между собой, поскольку друг до этого никогда ранее с микроконтроллерами не сталкивался (от слова «видел Arduino в магазине»).

Данный материал призван помочь начинающим быстро и без проблем настроить полностью бесплатную инфраструктуру для работы с микроконтроллерами, а так же понять, каким образом происходит сборка итогового бинарного файла. Производитель и модель микроконтроллера на этапе настройки этой инфраструктуры неважны. Главное, чтобы в его основе лежало ядро ARM.

Оглавление

Постановка задачи

Выбор программных средств реализации

Ставим Eclipse Neon 3

Как говорилось выше, для того, чтобы писать код, нам нужен текстовый редактор, в котором было бы удобно писать (различные методы авто-дополнения, поиска по проекту, навигация по файлам и т.д). А после того, как мы написали код, было бы неплохо, чтобы его компиляция, сборка и исполнение — были бы делом пары комбинаций клавиш (или кликов мышью, кому как удобно).
Для этих целей я использую Eclipse. Помимо редактора, он представляет еще возможность подключения различных расширений, которые значительно упрощают жизнь разработчика, сводя всю рутинную работу (сборку, компоновку, загрузку программы в контроллер) к паре кликов/нажатий.

Источник

Stm32 st link v2 driver windows 10

Все началось с того, что я купил себе отладочную плату STM8S-Discovery. Купил, поставил IAR для STM8, и. Ничего не завелось. IAR говорит, что ST-Link не обнаружен.

Известно, что ST-LINK конфликтует с Daemon Tools. Однако я никогда не ставил оного софта. Тем не менее, при вдумчивом курении реестра обнаружились ключи Daemon Tools Lite и Daemon Tools Pro (. ). ХЗ откуда, видимо подтянула какая-то программа.

Снес ключи (проверив, что самих файлов драйверов тоже не существует), снес весь мало-мальски подозрительный софт, включая VMWare, почистил реестр, переустановил IAR заново. Тот же результат, нифига не работает.

Решение найдено.

Discovery лечится так: втыкаем флешку, ждем, пока определится, втыкаем Discovery. Все работает, флешку можно вынуть.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.

Последний раз редактировалось YS Вт июн 12, 2012 15:04:41, всего редактировалось 3 раз(а).

spacer

hybroid folder lock
Друг Кота
file.php?avatar=27628 1331750139

Карма: 45
Рейтинг сообщений: 623
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Сообщений: 8007
Откуда: Лукалэнд
Рейтинг сообщения: 0

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/cwc

spacer
YS folder lock
Друг Кота
file.php?avatar=10627

Карма: 69
Рейтинг сообщений: 1208
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7457
Рейтинг сообщения: 0

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.

spacer
ibiza11 folder lock
Мудрый кот
file.php?avatar=9766

Карма: 21
Рейтинг сообщений: 143
Зарегистрирован: Сб фев 21, 2009 13:11:40
Сообщений: 1898
Откуда: Москва
Рейтинг сообщения: 0

этот файлик и перезапустить среду IAR. Мне помогло.

Навигационные модули позволяют существенно сократить время разработки оборудования. На вебинаре 17 ноября вы сможете познакомиться с новыми семействами Teseo-LIV3x, Teseo-VIC3x и Teseo-LIV4F. Вы узнаете, насколько просто добавить функцию определения местоположения с повышенной точностью благодаря использованию двухдиапазонного приемника и функции навигации по сигналам от MEMS-датчиков. Поработаем в программе Teseo Suite и рассмотрим результаты полевого тестирования.

spacer
YS folder lock
Друг Кота
file.php?avatar=10627

Карма: 69
Рейтинг сообщений: 1208
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7457
Рейтинг сообщения: 0

Спасибо, сейчас попробую.

Но сейчас попробую и Ваш драйвер.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.

Компания Infineon представила 40-вольтные MOSFET семейства OptiMOS 5. Данные транзисторы относятся к категории Normal Level MOSFET и имеют повышенное значение порогового напряжения (по сравнению с другими низковольтными MOSFET), что обеспечивает защиту от ложного срабатывания при работе в средах с высоким уровнем шума.

spacer
YS folder lock
Друг Кота
file.php?avatar=10627

Карма: 69
Рейтинг сообщений: 1208
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7457
Рейтинг сообщения: 0

Попробовал. Нет, к сожалению, с ним при попытке начала отладки IAR просто вылетает с ошибкой.

MSP430-FET у меня не работал потому что, стыдно сказать, в угаре я забыл поставить джамперы, отвечающие за программирование на LaunchPad’е.

STM8S-Discovery лечится так, как описано выше: втыкаем флешку, ждем, пока определится, втыкаем STM8S-Discovery. Все работает, флешку можно вынуть.

Спасибо всем, кто откликнулся. И надеюсь, что результаты моего мозгового штурма пригодятся кому-нибудь с аналогичной проблемой.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.

22

spacer
AlekseyLotorev folder lock

Зарегистрирован: Вт июн 12, 2012 07:57:40
Сообщений: 1
Рейтинг сообщения: 0

f03

spacer
YS folder lock
Друг Кота
file.php?avatar=10627

Карма: 69
Рейтинг сообщений: 1208
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7457
Рейтинг сообщения: 0

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.

f01

spacer
metcenger folder lock

Зарегистрирован: Ср ноя 17, 2010 01:03:44
Сообщений: 54
Рейтинг сообщения: 0

spacer
misterixxx folder lock
Открыл глаза
file.php?avatar=101553 1421939714

Зарегистрирован: Вс ноя 23, 2014 15:53:58
Сообщений: 58
Рейтинг сообщения: 0

spacer
YS folder lock
Друг Кота
file.php?avatar=10627

Карма: 69
Рейтинг сообщений: 1208
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7457
Рейтинг сообщения: 0

В смысле? Я втыкал обычную флешку, ничего необыкновенного. Ну, за исключением того, что этот способ работает.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.

spacer
dosikus folder lock
Друг Кота
file.php?avatar=6533

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0

Все давно починили, танцы уже не нужны.

spacer
misterixxx folder lock
Открыл глаза
file.php?avatar=101553 1421939714

Зарегистрирован: Вс ноя 23, 2014 15:53:58
Сообщений: 58
Рейтинг сообщения: 0

spacer
BOB51 folder lock
Друг Кота
file.php?avatar=20529 1271045884

Карма: 88
Рейтинг сообщений: 1081
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 12432
Откуда: ДОНЕЦК (ЮГО-ВОСТОК ua/DPR)
Рейтинг сообщения: 0

spacer

Часовой пояс: UTC + 3 часа

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Источник

Adblock
detector

Утилита позволяет программировать микроконтроллеры STM32. Есть возможность очистить память устройства и записать новую прошивку. Поддерживается формат HEX и BIN.

Дата обновления:

01.02.2021

Разработчик:

STMicroelectronics

Версия Windows:

Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10

  • STM32 ST Link Прошивка

STM32 ST Link – приложение для Windows, с помощью которого можно программировать микроконтроллеры. Есть возможность запустить утилиту в режиме командной строки или использовать графический интерфейс. Поддерживается функция автоматического распознавания подключенного устройства. Для работы приложения требуется наличие специального программатора.

Подключение

После установки необходимо подключить контроллер к компьютеру и запустить утилиту. Далее следует выбрать порт и дождаться распознавания устройства. Затем на экране появится информация о модели микроконтроллера и текущей версии прошивки, а также идентификационный номер. Кроме того, есть возможность узнать размер внутренней памяти.

Программирование

Перед тем, как записать программное обеспечение, необходимо выполнить очистку. Для этого следует перейти в меню Target и выбрать пункт Erase Chip. Затем нужно выбрать прошивку в формате HEX или BIN. Утилита позволяет просматривать содержимое файла и редактировать его.

Для записи информации в память микроконтроллера требуется нажать кнопку Program. Поддерживается функция автоматического поиска ошибок в процессе программирования. Также есть возможность сравнить между собой старую и новую версию прошивки.

Особенности

  • приложение можно скачать и использовать бесплатно;
  • как и SinaProg, данная утилита предназначена для программирования микроконтроллеров;
  • поддерживаются устройства семейства STM32;
  • есть возможность выполнить поиск ошибок в прошивке;
  • пользователи могут работать с Flash, RAM, OTP и другими типами внутренней памяти;
  • программа совместима с актуальными версиями Windows.

25,3 Мб (скачиваний: 3863)

ChatGPT ChatGPT

Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатно

Чат бот от компании OpenAI, способный вести диалог, искать ошибки в программном коде, шутить и спорить на разные темы. Сервис создан на основе модели GPT 3,5.

ver 3.5

EA app EA app

Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатно

Приложение представляет собой платформу, позволяющую приобретать, скачивать и запускать компьютерные игры. Есть возможность обмениваться достижениями с друзьями.

ver 12.21.0.5278

Мой спорт Тренер Мой спорт Тренер

Бесплатно

Сервис представляет собой цифровую платформу, предназначенную для спортивных школ и организаций. С его помощью тренеры могут составлять расписание занятий.

ver

BUFF Game BUFF Game

Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатно

Приложение позволяет геймерам получать баллы за выполнение игровых заданий. Есть возможность обменять бонусы на реальные товары или цифровые подарочные карты.

ver 0.5.0.45

Toncoin Toncoin

Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатно

Утилита представляет собой криптовалютный кошелек, позволяющий хранить средства и совершать переводы. Можно получить информацию о балансе и список транзакций.

ver 1.0

Ton Place Ton Place

Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатно

Социальная сеть, разработанная на основе блокчнейна TON. Пользователи могут публиковать новости, создавать сообщества по интересам и общаться с друзьями.

ver 1.0

PokerStars PokerStars

Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатно

Официальный клиент одноименного покер рума. Программа позволяет принимать участие в турнирах и играть на деньги. Есть возможность получить бонус на первый депозит.

ver 7.46703

SmartThings SmartThings

Windows 10 Бесплатно

Приложение предназначено для управления смарт телевизорами, кондиционерами, холодильниками и другими приборами от Samsung. Можно контролировать статус устройств.

ver 1.21192.2.0


  1. Главная

  2. Драйверы

  3. Сетевые устройства

  4. Сетевые устройства STM

  5. STM STLink dongle


Установить драйверы автоматически

Бесплатное ПО

Доступные драйверы (1)

  • STM STLink dongle

    Тип драйвера:

    USBDevice

    Производитель:

    STMicroelectronics

    Версия:

    2.01
    (08 июн 2017)

    Файл *.inf:
    stlink_dbg_winusb.inf


    Установить драйвер


    Скачать драйвер




    Windows Vista, 7, 8, 8.1, 10

    • USBVID_0483&PID_3748

    • USBVID_0483&PID_374A&MI_00

    • USBVID_0483&PID_374B&MI_00

    • USBVID_0483&PID_374E&MI_00

    • USBVID_0483&PID_374F&MI_00

В каталоге нет драйверов для STM STLink dongle под Windows.
Скачайте DriverHub для автоматического подбора драйвера.

Драйверы для STM STLink dongle собраны с официальных сайтов компаний-производителей и других проверенных источников.
Официальные пакеты драйверов помогут исправить ошибки и неполадки в работе STM STLink dongle (сетевые устройства).
Скачать последние версии драйверов на STM STLink dongle для компьютеров и ноутбуков на Windows.

Скачать и обновить нужные драйверы автоматически


Скачать DriverHub


Версия: 1.3.7.1452 для Windows 7, 8, 10 и 11

Бесплатное ПО


Скачивая программу, Вы принимаете условия Пользовательского соглашения и Политик конфиденциальности.

В комплекте идет опциональное ПО

В комплекте идет опциональное ПО

  • Yandex Browser
  • Opera Browser
  • Avast Free Antivirus
  • World of Tanks
  • World of Warships

Понравилась статья? Поделить с друзьями:
  • Stm usb vcp drivers windows 10 скачать
  • Stm electronics virtual com port driver windows 7
  • Stlpmt45 dll скачать для windows 7
  • Stlab usb to serial adapter driver windows 10
  • Stlab usb sound box driver windows 10