Идея написать статью (которая войдет в цикл статей для новичков, остро жаждущих создавать что-то на микроконтроллерах при почти нулевых знаниях в области программирования в принципе) пришла мне после того, как мне пришлось немного отвлечься от своих основных дел, чтобы помочь другу настроить рабочую среду для написания софта под его небольшой домашний проект на основе board-а с stm32f103 на борту. Я рассчитывал, что это займет около получаса, максимум час, но ноутбук друга был на Windows 10 x64, что для меня уже непривычно (сам работаю в Ubuntu). По итогу мы потратили практически 8 часов на настройку и создание простого проекта, борясь с многими не очевидными вещами.
Параллельно с этим мне пришлось подробно объяснять, какой элемент сборки для чего нужен, а так же, как эти элементы взаимодействуют между собой, поскольку друг до этого никогда ранее с микроконтроллерами не сталкивался (от слова «видел Arduino в магазине»).
Данный материал призван помочь начинающим быстро и без проблем настроить полностью бесплатную инфраструктуру для работы с микроконтроллерами, а так же понять, каким образом происходит сборка итогового бинарного файла. Производитель и модель микроконтроллера на этапе настройки этой инфраструктуры неважны. Главное, чтобы в его основе лежало ядро ARM.
Оглавление
- Постановка задачи.
- Выбор программных средств реализации.
- Ставим Eclipse Neon 3.
- Скачиваем установщик Eclipse.
- Устанавливаем JRE.
- Устанавливаем Eclipse.
- Устанавливаем в Eclipse плагин GNU ARM Eclipse.
- Патчим JRE (на случай появления ошибки при установке плагина).
- Устанавливаем GNU ARM Eclipse Windows Build Tools.
- Скачиваем и устанавливаем GNU ARM Embedded Toolchain.
- Устанавливаем OpenOCD.
- Устанавливаем драйвера на st-link v2.
- Разбираемся, как все это работает.
- Заключение.
Постановка задачи
Требуется настроить связку таким образом, чтобы можно было:
- Скомпилировать проект, состоящий из C (C99), CPP (C++14) и ASM файлов.
- Собрать из скомпилированных файлов единый файл прошивки («.elf» и, при необходимости, «.hex», а так же «.map» файл для удобного анализа сборки).
Выбор программных средств реализации
Для решения поставленных задач нам потребуются следующие программные продукты:
- Eclipse Neon 3 для C/C++ (самая последняя версия на момент написания статьи). Будет использована нами как IDE (текстовый редактор с удобным авто дополнением + удобства по взаимодействию со средствами отладки), в которой мы будем писать код.
- JRE (на момент написания статьи, самая последняя версия 1.8.0). Без него не запустится установщик Eclipse (ну и сам Eclipse).
- GNU ARM Embedded Toolchain (на момент написания статьи, самой последней версией был 5_4-2016q3-20160926). Это комплекс нужных нам программных решений (таких как компилятор C кода «gcc», C++ кода «g++», линкер — «ld», средство загрузки и отладки финальной прошивки — «gdb» и многие другие), благодаря которым мы получим из наших файлов с исходным кодом файл с разрешением «.elf», представляющий из себя бинарный файл прошивки микроконтроллера, который в последствии будет загружен в микроконтроллер (об этом ниже).
- OpenOCD 0.10.0. С помощью него мы будем загружать наш «.elf» файл программы в микроконтроллер (на деле, OpenOCD предоставляет связь между gdb из указанного выше toolchain-а и отладчиком).
Помимо перечисленных средств, нам нужно будет поставить еще несколько небольших пакетов, о которых я скажу уже непосредственно в процессе установки.
Ставим Eclipse Neon 3
Как говорилось выше, для того, чтобы писать код, нам нужен текстовый редактор, в котором было бы удобно писать (различные методы авто-дополнения, поиска по проекту, навигация по файлам и т.д). А после того, как мы написали код, было бы неплохо, чтобы его компиляция, сборка и исполнение — были бы делом пары комбинаций клавиш (или кликов мышью, кому как удобно).
Для этих целей я использую Eclipse. Помимо редактора, он представляет еще возможность подключения различных расширений, которые значительно упрощают жизнь разработчика, сводя всю рутинную работу (сборку, компоновку, загрузку программы в контроллер) к паре кликов/нажатий.
Скачиваем установщик Eclipse
- Переходим на официальный сайт
- Справа вверху нажимаем download.
- В открывшейся окне слева выбираем download (x64/x32 должно подобраться автоматически).
- Ну и нажимаем download по центру, после чего начнется загрузка. При желании, можно про спонсировать создателей IDE…
Вот более наглядный процесс скачивания.
Устанавливаем JRE
Для того, чтобы запустить установщик, нужно сначала установить JRE. Последняя версия на момент написания статьи 1.8.0.
- Запускаем скаченный нами установщик. Получаем ошибку о том, что отсутствует JRE.
- Нажимаем «нет» и ждем перехода на сайт.
- На сайте выбираем пункт «Oracle JRE 1.8.0».
- Выбираем «Accept License Agreement».
- Скачиваем Offline версию, согласно разрядности вашей Windows.
- Запускаем скаченный файл. Дальнейшая установка проблем не вызывает.
Устанавливаем Eclipse
- Запускаем скаченный нами установщик.
- Выбираем версию для C/C++.
- Указываем путь установки (я оставил по умолчанию, и вам советую).
- Принимаем соглашение.
- Ждем окончания установки.
- Нажимаем «LAUNCH», чтобы запустить среду.
- Указываем путь, который будет использовать Eclipse для ваших проектов по умолчанию (я оставил по умолчанию), а так же ставим галочку, чтобы данное окно больше не появлялось.
- Убеждаемся, что IDE запустилась, закрываем.
- Во время закрытия можем поставить галочку, чтобы окно предупреждения о закрытии более не появлялось.
Устанавливаем в Eclipse плагин GNU ARM Eclipse
Как говорилось ранее, Eclipse позволят подключать различные плагины, упрощающие жизнь разработчика. Одним из таких плагинов является GNU ARM Eclipse. Благодаря нему мы получим возможность легко соединить все используемые нами программные компоненты при создании нового проекта под наш контроллер (как это делать, будет описано ниже).
- Переходим на официальный сайт.
- В правом столбце, под строкой «Downloads» выбираем «Plug-ins».
- Далее под строкой «The GNU ARM Eclipse plug-ins update site URL is still on SourceForge:» копируем ссылку на плагин. На момент написания статьи это была:
http://gnuarmeclipse.sourceforge.net/updates
- Открываем Eclipse.
- Переходим «Help» -> «Install New Software…».
- В открывшемся окне нажимаем на «Add…».
- В еще одном открывшимся окне в пункте «Name:» пишем, например, «ARM» (название не важно), а в строку «Location:» вставляем скопированную нами с сайта ссылку.
- Нажимаем «ОК»
- Окно закроется и в списке строк появится пустой чекбокс с надписью «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
В случае, если ошибки не возникло или вы ее уже исправили, продолжаем дальше. - После того, как появится строка «GNU ARM C/C++ Cross Development Tools», необходимо выбрать чекбокс слева от нее и нажать «Next».
- После еще раз «Next».
- Далее принимаем лицензионное соглашение и нажимаем «Finish». Начнется процесс установки.
- В процессе установки появится предупреждение о безопасности. Жмем «ОК».
- По окончании установки потребуется перезагрузить Eclipse, для этого нажимаем «Yes» в появившемся окне.
- На этом установка этого плагина завершена.
Патчим JRE (если в пункте выше произошла ошибка)
Так уж случилось, что в JRE есть неприятный баг, мешающий нам нормально установить плагин. Не вдаваясь в природу сея явления, делаем следующие действия.
- Переходим на сайт с патчем.
- Выбираем пункт «Accept License Agreement».
- Скачиваем «.zip» архив.
- Распаковываем. В архиве 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», мы поговорим ниже, а сейчас нам просто нужно поставить плагин, который добавит возможность пользоваться им. Для этого.
- Переходим в официальный репозиторий.
- Скачиваем «.exe» файл под свою платформу. На момент написания статьи самая актуальная версия «gnuarmeclipse-build-tools-win64-2.8-201611221915-setup.exe».
- Запускаем скаченный файл и просто жмем «Next», «A Agree», «Next», «Install», «Finish».
Скачиваем и устанавливаем GNU ARM Embedded Toolchain
- Переходим на официальный сайт
- Скачиваем последнюю актуальную версию, собранную в «.exe» файл для Windows (в столбце справа).
- Запускаем скаченный файл.
- Жмем «ОК».
- Затем «Далее»
- «Принимаю»
- «Установить» (вот тут поясню, что папку можно указать любую, но лучше все-таки оставить ту, что стоит по умолчанию, во избежание проблем с регистрацией компонентов во время установки).
- По окончании установки снимаем галочку с «Показать файл ReadMe.». Остальные оставляем по умолчанию.
- «Готово»
Следующие действия несут информативный характер и могут быть пропущены. В этом случае, открывшуюся командную строку можно закрыть.
- В открывшейся командной строке пишем «cd bin», без кавычек (именно тут лежат «.exe» файлы всех компонентов toolchain-а).
- Набираем «arm-none-eabi-gcc —version», без кавычек.
- Убедившись, что gcc ответил, закрываем консоль.
Устанавливаем OpenOCD
Со средой и toolchain-ом разобрались. Далее нужно установить OpenOCD, с помощью которого Eclipse через arm-none-eabi-gdb будет рулить контроллером. Тут все просто.
- Переходим в официальный репозиторий.
- Скачиваем «.exe» файл под свою ОС. На момент написания статьи, самая актуальная версия «gnuarmeclipse-openocd-win64-0.10.0-201701241841-setup.exe».
- Запускаем скаченный «.exe». Установку производим не меняя ничего (в том числе и путь).
Устанавливаем драйвера на st-link v2
OpenOCD управляет контроллером, это верно, но для этого ему требуется драйвер на отладчик. В нашем случае, это st-link v2. В случае, если у вас другой отладчик, то эту часть можно пропустить.
Вне зависимости от того, поддельный у вас st-link или оригинальный, драйвера одни и те же. Начнем.
- Переходим на официальную страницу st-link v2
- Внизу страницы скачиваем файл «STSW-LINK009» с описанием «ST-LINK, ST-LINK/V2, ST-LINK/V2-1 USB driver signed for Windows7, Windows8, Windows10».
- При переходе на другую страницу нажимаем «Download» в нижней части страницы. Тут важно заметить, что если вы сидите в интернете не через VPN, то вам придется зарегистрироваться. Как это делать, я описывать не буду. После чего файл будет скачен.
- Разархивировав архив выбираем файл установки драйвера согласно разрядности ОС. В моем случае, это «dpinst_amd64.exe».
- Во время установки соглашаемся со всеми требованиями. И выбираем чекбокс «Всегда доверять программному обеспечению STMicroelectronics».
Разбираемся, как все это работает
Вот мы установили все необходимые компоненты, создали проект в Eclipse (о том, как создать и настроить проект, будет написано в следующей статье) и нажали «Ctrl+B». Получили готовый файл прошивки, который нажатием по иконке «отладка» можно загрузить в контроллер и начать непосредственно отладку. Но что скрывается за всеми этими действиями? А происходит следующее:
- После того, как вы нажимаете «Ctrl+B» — Eclipse анализирует дерево каталогов проекта (все созданные нами папки и файлы, находящиеся в них). Для этого он пользуется путями к файлам, которые мы укажем при создании проекта.
- После этого Eclipse создает makefile. Этот файл содержит в себе указания для программы make о том, какие файлы нужно компилировать (которые мы добавили в проект, указав при этом путь к каталогам, где они лежат), с какими параметрами (здесь Eclipse пользуется заполненными нами параметрами во вкладке «C/C++ Build») и как компоновать в итоговом файле прошивки скомпилированные ранее файлы.
Заметка: makefile не имеет расширения. - Далее Eclipse вызывает программу make с указанием пути к созданному makefile, а так же параметры сборки, указанные нами при настройке проекта (это, например количество потоков процессора, используемого для компиляции).
- Программа make проходит по всем файлам проекта, согласно указаниям в makefile-е и получает для каждого файла файл с расширением «.o». Эти файлы располагаются в папке Debug точно так же, как и в основном проекта (с сохранением иерархии дерева). Если в каком-то файле будет ошибка, вы получите уведомление об этом, выделенное красным в консоли компиляции (по умолчанию она располагается внизу экрана). При возникновении ошибки компиляции, дальнейшая компиляция и сборка прекращаются. Для компиляции файлов make использует указанный в makefile toolchain (вернее сказать, его компоненты: gcc/g++). Путь к toolchain-у Eclipse берет, опять же, из настроек проекта.
- После создания всех «.o» файлов из «.c», «.cpp», «.S» (прошу заметить, файлы с ассемблерным кодом обязательно должны иметь расширение большой буквы «S», иначе при создании makefile данные файлы будут просто проигнорированы, что ведет к трудно уловимым ошибкам) make вызывает компоновщик (arm-none-eabi-ld из установленного нами toolchain-а) с указанием путей к файлам компоновки из проекта (файлы с расширением «.ld», которые мы добавим в проект). Тут компоновщик, опираясь на указанные в файлах компоновки с расширением «.ld» указания (правила) пытается собрать из кучи «.o» файлов один объектный файл с разрешением «.elf» (и, если есть такие указания в makefile, «.hex» и «.map»). Важно заметить, именно linker (компоновщик) решает, какие куски кода и данных можно выкинуть из программы (если сочтет, что они нигде не используются и просто занимают место). Таким образом, если мы создадим 1000 глобальных переменных, из которых будем использовать в коде только 2, то остальные (если явно не задано, что их нельзя исключать из проекта ключевым словом «volatile» или указанием «положить в секцию, из которой ничего нельзя убирать») будут исключены из конечного объектного файла, что даст нам больше свободной памяти.
- После того, как мы получили конечный объектный файл, мы можем его «зашить» в контроллер и провести отладку. Для этого Eclipse вызывает программу OpenOCD с указанием пути к файлу «openocd.cfg» (имя может быть любое, с расширением «.cfg», но в случае, если вам придется когда-нибудь отлаживаться из командной строки, а не из под IDE, то вы ощутите, что правильно названный файл для OpenOCD позволяет вам не писать имя файла конфигурации (т.к. в случае, если файл конфигурации был не указан, то автоматически ищется файл с таким именем)).
В случае, если указанный файл существует, OpenOCD, согласно параметрам в файле, попытается соединиться с микроконтроллером. В случае, если подключение верно, вы получим уведомление о том, что связь установлена, отладчик контроллера работает.
Для того, чтобы связаться с контроллером, OpenOCD использует драйвер для st-link-а, установленный нами в начале. - После того, как OpenOCD смог установить связь с контроллером, он открывает telnet соединение. Если не вдаваться в подробности, это нужно для того, чтобы arm-none-eabi-gdb мог успешно управлять контроллером.
- После того, как telnet соединение установлено, Eclipse запускает arm-none-eabi-gdb с указанием порта, к которому нужно подключиться (тот, что открыл OpenOCD).
- Далее Eclipse посылает в gdb команды инициализации (стереть flash, записать файл прошивки, установить точку остановки на main, и еще несколько нобязательных параметров).
- После этого в 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
forst-flash
andst-util
(#983) - Fix for
mmap() size_t overflow
inst-flash
(#988, #989) - [regression]
stlink-gui
installation issue on Ubuntu-18.04 (#1001, #1004, #1006) st-util
: wrong register values passed togdb
(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
tostlink_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
formake 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 viaLIBUSB_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
tognu11
) - 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
- Set up a
- [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 requires7zip
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
) inusb.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 andst-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
andREADME.md
fixes (#682, #683) - Disabled static library installation by default (#702)
- Fix for
libusb
deprecation (#703, #704) - Renamed
STLINK_CHIPID_STM32_L4R9
toSTLINK_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 semihostingSYS_READ
(#726, #727, #728, #729, #730, #731, #732) - FreeBSD defines
LIBUSB_API_VERSION
instead ofLIBUSBX_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 byst-util
ARM semihosting feature (#228, #507, commit #3fd0f09) - Support serial numbers argument for
st-util
andst-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 intost-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 tost-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 fixedjtag_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 OpenOCDhla_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 togdb
(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 вещи:
- Снять перемычки, соединяющие линии программирования встроенного ST-Link-а с микроконтроллером, распаянным на плате
- С помощью гребенки, на которую выведена шина 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 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.
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.
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.
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).
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).
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 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
Содержание
- Делаем ST-Link V2.1 из китайского ST-Link V2
- Предисловие
- Приступаем к работе
- Вскрываем.
- Прошивка
- Обновление до ST-Link V2.1
- Завершающая часть
- Настраиваем бесплатную сборку для написания и отладки программ под микроконтроллеры на основе ядра ARM под Windows 10
- Оглавление
- Постановка задачи
- Выбор программных средств реализации
- Ставим Eclipse Neon 3
- Stm32 st link v2 driver windows 10
- Кто сейчас на форуме
Делаем 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.
Вскрываем.
Прошивка
Есть два пути — USB-UART (немного сложнее) либо второй ST-Link.
1) Прозвонкой находим резистор который подключен к BOOT0.
Делаем перемычку от стороны этого резистора которая подключена к BOOT0 к 3.3v.
PA9(TX) может быть подключен к светодиоду или резистору рядом с ним, потому прозваниваем.
Так же подпаиваем питание.
Прошиваем загрузчик Protected-2-1-Bootloader.bin с помощью STM32 Flash loader demonstrator.
После прошивки отпаиваем перемычку, PA9 и PA10 (PA10 оставляем если хотим вывести SWO).
На платах есть по 4 контакта, в некоторых случаях они уже промаркированы, в противном же случае прозваниваем их относительно PA13(SWDIO) и PA14(SWCLK), подпаиваемся вторым ST-Link.
Так же подпаиваем питание.
Устанавливаем 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 — получаем список возможных модификаций:
Выбираем нужную вам модификацию, в моем случае STM32+MSD+VCP, жмем Yes >>>>.
Ждем пока завершится обновление…
Завершающая часть
Так как SWIM и RST после такой модификации не работают — отрезаю их.
Так же отрезаю дублирующие 5V и 3.3V.
Получается 4 свободных пина.
На них подпаиваюсь проводками к чипу:
Вывожу все на основной разъем, на оставшиеся свободные пины.
Получилась такая распиновка:
Накарябал скальпелем маркировку на корпусе:
Не забываем отмыть плату после пайки!
В итоге, в ПК девайс определяется так:
Я без понятия чему равен объем виртуальной флешки (в данном случае к ST-Link V2.1 был подключен F103C8).
Если на нее закинуть файл прошивки — программатор прошьет чип без программ.
Спасибо за внимание!
При копировании попрошу оставлять ссылочку на первоисточник.
С вопросами обращайтесь в комментарии, чем смогу — помогу.
Источник
Настраиваем бесплатную сборку для написания и отладки программ под микроконтроллеры на основе ядра 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 раз(а).
hybroid | |||
Карма: 45 |
Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/cwc |
||
YS | |||
Карма: 69 |
_________________ |
||
ibiza11 | |||
Карма: 21 |
этот файлик и перезапустить среду IAR. Мне помогло. Навигационные модули позволяют существенно сократить время разработки оборудования. На вебинаре 17 ноября вы сможете познакомиться с новыми семействами Teseo-LIV3x, Teseo-VIC3x и Teseo-LIV4F. Вы узнаете, насколько просто добавить функцию определения местоположения с повышенной точностью благодаря использованию двухдиапазонного приемника и функции навигации по сигналам от MEMS-датчиков. Поработаем в программе Teseo Suite и рассмотрим результаты полевого тестирования. |
||
YS | |||
Карма: 69 |
Спасибо, сейчас попробую. Но сейчас попробую и Ваш драйвер. _________________ Компания Infineon представила 40-вольтные MOSFET семейства OptiMOS 5. Данные транзисторы относятся к категории Normal Level MOSFET и имеют повышенное значение порогового напряжения (по сравнению с другими низковольтными MOSFET), что обеспечивает защиту от ложного срабатывания при работе в средах с высоким уровнем шума. |
||
YS | |||
Карма: 69 |
Попробовал. Нет, к сожалению, с ним при попытке начала отладки IAR просто вылетает с ошибкой. MSP430-FET у меня не работал потому что, стыдно сказать, в угаре я забыл поставить джамперы, отвечающие за программирование на LaunchPad’е. STM8S-Discovery лечится так, как описано выше: втыкаем флешку, ждем, пока определится, втыкаем STM8S-Discovery. Все работает, флешку можно вынуть. Спасибо всем, кто откликнулся. И надеюсь, что результаты моего мозгового штурма пригодятся кому-нибудь с аналогичной проблемой. _________________ |
||
AlekseyLotorev | |
Зарегистрирован: Вт июн 12, 2012 07:57:40 |
|
YS | |||
Карма: 69 |
_________________ |
||
metcenger | |||||||||||||||||||||||||||||||||||||||||||
Зарегистрирован: Ср ноя 17, 2010 01:03:44 |
|
Утилита позволяет программировать микроконтроллеры STM32. Есть возможность очистить память устройства и записать новую прошивку. Поддерживается формат HEX и BIN.
Дата обновления:
01.02.2021
Разработчик:
STMicroelectronics
Версия Windows:
Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10
STM32 ST Link – приложение для Windows, с помощью которого можно программировать микроконтроллеры. Есть возможность запустить утилиту в режиме командной строки или использовать графический интерфейс. Поддерживается функция автоматического распознавания подключенного устройства. Для работы приложения требуется наличие специального программатора.
Подключение
После установки необходимо подключить контроллер к компьютеру и запустить утилиту. Далее следует выбрать порт и дождаться распознавания устройства. Затем на экране появится информация о модели микроконтроллера и текущей версии прошивки, а также идентификационный номер. Кроме того, есть возможность узнать размер внутренней памяти.
Программирование
Перед тем, как записать программное обеспечение, необходимо выполнить очистку. Для этого следует перейти в меню Target и выбрать пункт Erase Chip. Затем нужно выбрать прошивку в формате HEX или BIN. Утилита позволяет просматривать содержимое файла и редактировать его.
Для записи информации в память микроконтроллера требуется нажать кнопку Program. Поддерживается функция автоматического поиска ошибок в процессе программирования. Также есть возможность сравнить между собой старую и новую версию прошивки.
Особенности
- приложение можно скачать и использовать бесплатно;
- как и SinaProg, данная утилита предназначена для программирования микроконтроллеров;
- поддерживаются устройства семейства STM32;
- есть возможность выполнить поиск ошибок в прошивке;
- пользователи могут работать с Flash, RAM, OTP и другими типами внутренней памяти;
- программа совместима с актуальными версиями Windows.
25,3 Мб (скачиваний: 3863)
ChatGPT
Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатно
Чат бот от компании OpenAI, способный вести диалог, искать ошибки в программном коде, шутить и спорить на разные темы. Сервис создан на основе модели GPT 3,5.
ver 3.5
EA app
Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатно
Приложение представляет собой платформу, позволяющую приобретать, скачивать и запускать компьютерные игры. Есть возможность обмениваться достижениями с друзьями.
ver 12.21.0.5278
Мой спорт Тренер
Бесплатно
Сервис представляет собой цифровую платформу, предназначенную для спортивных школ и организаций. С его помощью тренеры могут составлять расписание занятий.
ver
BUFF Game
Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатно
Приложение позволяет геймерам получать баллы за выполнение игровых заданий. Есть возможность обменять бонусы на реальные товары или цифровые подарочные карты.
ver 0.5.0.45
Toncoin
Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатно
Утилита представляет собой криптовалютный кошелек, позволяющий хранить средства и совершать переводы. Можно получить информацию о балансе и список транзакций.
ver 1.0
Ton Place
Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатно
Социальная сеть, разработанная на основе блокчнейна TON. Пользователи могут публиковать новости, создавать сообщества по интересам и общаться с друзьями.
ver 1.0
PokerStars
Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатно
Официальный клиент одноименного покер рума. Программа позволяет принимать участие в турнирах и играть на деньги. Есть возможность получить бонус на первый депозит.
ver 7.46703
SmartThings
Windows 10 Бесплатно
Приложение предназначено для управления смарт телевизорами, кондиционерами, холодильниками и другими приборами от Samsung. Можно контролировать статус устройств.
ver 1.21192.2.0
-
Главная -
Драйверы
-
Сетевые устройства
-
Сетевые устройства STM
- 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