Модернизация STM32VL DISCOVERY STlink в STM32F103 DISCOVERY Stlink/V2

    Одной из первых отладочных плат от STMicroelectronics была выпущена плата STM32VLDISCOVERY с процессором STM32F100RB и программатором  STlink. Недостатком данного программатора является отсутствие процесса трассировки. И кроме того в качестве отлаживаемого  применен не очень быстрый процессор, работающей на предельной тактовой частоте 24 Мгц.
    Данную плату довольно легко можно модернизировать. Процессор, стоящий на плате без каких либо изменений можно заменить на например STM32F103RB или другой подобный из 103 серии в корпусе QFTP64. Данная замена оправдана тем, что данная линейка процессоров полностью поддерживается в отладчике Keil. Кроме того существует огромное количество примеров для работы с этим типом процессоров.
    Для переделки STlink в STlink/V2 необходимо сделать следующее:

1. Необходимо заменить прошивку микросхемы STM32F103C8 на которой  собран программатор. Для этого можно воспользоваться Flash loader demonstrator которая позволяет с помощью штатного загрузчика изменить прошивку в самом программаторе. Для этого нам необходимо подключиться к выводам USART1_TX она же PA9 (30 вывод) и USART1_RX она же PA10 (31 вывод) — по ним будет осуществляться программирование процессора. А также к выводам BOOT0 (44 вывод) для перехода в режим встроенного загрузчика в системной памяти процессора и RST (7 вывод). Выводы 31 и 30 лучше всего подсоединить к пустым выводам (NC) на плате соответственно слева и справа (2-е выводы сверху). Процедура программирования описывалась тут и тут. Вывод BOOT1(PB2) подключаем к земле (после прошивки не забываем убрать это соединение) — для того, чтобы заставить процессор после старта перейти на запуск встроенного в системную память загрузчика. Прошивку для заливки в процессор программатора можно скачать тут. А саму программу Flash loader demonstrator тут.
2. После этого необходимо на процессоре программатора соединить PB12 (вывод 25)  и PB14 (вывод 27).
3. Соединить вывод PB3 он же JTDO (вывод 55 отлаживаемого процессора STM32F103RB) и PA10 он же TSWO (вывод 31 процессора программатора).
    В результате данной модернизации в среде Keil данный программатор определяется как STlink/V2.

Комментарии (25)

RSS свернуть / развернуть
Как по мне не целесобразно. В серии 103 есть апаратная поддержка усб и если отлажевать усю, прийдется навесом монтировать обвес…
Да и стоит платка из 103 не так уж и много. Если уж совсем из финансами туго, можна прикупить б/у, как это сделал я.
0
К большому сожалению, встроенный загрузчик микроконтроллеров STM32F103 не поддерживает загрузку программ через USB. Можно загружать программы через UART, а также через отладочные интерфейсы SWD и JTAG.
0
Недостатком данного программатора является отсутствие процесса трассировки.
Эм, как так? Речь о той плате, что EVB раздавали? Иди еще о чем-то? Ибо вроде как все там трассируется…
0
  • avatar
  • N1X
  • 11 мая 2014, 15:50
Процедура программирования описывалась тут и тут.
Поправьте ссылки, сейчас ведут на одну страницу.

На мой взгляд есть смысл первый пункт расписать более детально по шагам, нежели как сейчас навалено в кучу.
0
спасибо за замечание, ссылку поправил
0
можно было бы описать процесс смены прошивки программатора более детально,
но для Flash loader demonstrator в пакете с программой идет очень подробный
и понятный help.
0
Не совсем Вы меня поняли. Речь в сущности шла не про Flash loader demonstrator, а про коммутации и соединения.
Как пример, пишете-пишете и вдруг появляется фраза
Вывод BOOT1(PB2) остается подключенным к земле.
Когда он оказался подключенным? Когда отключать или не отключать…
Одним словом кривая инструкция, у меня на STM32VLDISCOVERY чип 103 распаян, но использую его вместе с ST-Link, подумал обновить по Вашей инструкции, не вышло.
0
Учел Ваши справедливые замечания относительно ВООТ1. Очень жаль, что у Вас не получилось обновить прошивку. Напишите, что именно не получается, постараюсь помочь.
0
Спасибо за инструкцию, попробую перепрошить ST-Link на STM32VLDISCOVERY указанным Вами способом.
Но есть один вопрос: вывод ВООТ1 в схеме STM32VLDISCOVERY уже притянут на общий провод, то есть его нужно поднять или оставить так, как он припаян изначально?
Спасибо за ответ
0
Подтверждаю. Прошить удалось. После прошивки обновил до последней версии. Все работает.
На плату до этого вместо STM32f100 был запаян STM32f405, работает, определяется, прошивается.
Комментарии по статье:
немного все запутанно расписано, а если кратко, то:
1) подпаяться к 30-ой и 31-ой ноге STM32f103(103!!!), завести их на COM-port переходник на RX, TX.
2) кинуть перемычку между выводом R7(со стороны контроллера) и 3.3V питания
3) включить питание платы и COM-port переходника
4) прошить контроллер и снять все напайки
5) соединить 25 и 27 ногу контроллера STM32F103(не разбирался зачем, но раз автор статьи советует:)
..)…
PROFIT!!!
P.S.: всю схематику ST-Link'a с платы и номера ног и вообще все можете глянуть в официальном полном мануале к плате.
0
Спасибо автору за статью.
Таки удалось обновить ST-LINK до версии 2. Система его видит. Обновил микропрограмму до последней версии.

Но были при этом некоторые чудеса.
Программируемая микросхема STM32f100RBT не виделась программатором. Видимо, её немножко покалечил в результате предыдущих экспериментов.
Случайно вылечил с помощью программы CoFlash, перед тем, как нажать на кнопку Erase в окне данной программы, пришлось перед этим нажать и удерживать кнопку RST на плате. После нажатия кнопки Erase, которая в окне программы, отпускал RST на плате, в итоге процесс стирания программируемой микросхемы прошёл успешно и работоспособность микросхемы восстановилась.

Но это ещё не всё.
Доработанная плата успешно работает с программами CoFlash и ST-LINK UTILITY в Виндовс. А в ОС Ubuntu успешно работает с openocd, если программирование запускать из командной строки или при выполнении прописанного в Makefile сценария.
Но радость заканчивается, когда дело доходит до использования System Workbench for STM32 IDE (SWSTM32).
По какой-то причине не формируется сигнал RST и микроконтроллер не переходит на режим программирования, так как не происходит останова. В этом случае перед началом программирования микроконтроллера приходится нажимать кнопку RST на плате и приходится отпускать эту кнопку, когда процесс программирования запущен. В этом случае микросхема программируется и производится проверка содержимого памяти микроконтроллера. Записанная программа запустится на исполнение только полсе повторного нажатия кнопки RST на плате.
Чудеса и только.
Трудно грешить на программируемую микросхему, но была мысль её поменять на более крутую, например STM32f105RBT. Причина должна быть не в ней, но почему-то помогал принудительный сброс нажатием на кнопку RST на плате, что, заметьте, весьма странно.
0
Так выгляит плата STM32VLDISCOVERY после доработки.
Доработанный ST-LINK на плате STM32VLDISCOVERY

Проблема, похоже, в среде System Workbench for STM32 IDE (SWSTM32). У пользователя нет возможности делать настройки режимов openocd, который идёт в комплекте с данной средой разработки. В этом вся трудность.

Например, в этой среде разработки без затруднений программируется микросхема на плате STM32F4DISCOVERY с ST-LINK V2 на борту, отдалка тоже происходит без проблем.
Проблема с платой STM32VLDISCOVERY у которой уже ST-LINK V2 на борту после доработки. Вот с нею и происходят «чудеса», хотя их не должно быть по определению. Видимо, есть отличие между ST-LINK V2 на плате STM32F4DISCOVERY и на доработанной плате STM32VLDISCOVERY.
Поможет ли замена микросхемы STM32F100RBT на STM32F105RBT на доработанной плате STM32VLDISCOVERY? Или всё-же придётся дорабатывать дальше уже доработанный ST-LINK?
0
Похоже, причина начинает проясняться — скорее всего убитый микроконтроллер STM32F103C8T, на котором основан ST-LINK.
Во время прошивок в консоли пишется также напряжение питания, выводятся произвольные значения в диапазоне от 2,4 до 3,5 В. Причём на выводе 10 данного микроконтроллера должно быть напряжение, равное половине напряжения питания, но на выводе 10 всегда нуль, чего быть не должно. Вывод 10 соединён с резистивным делителем напряжения питания.
Брал заведомо исправную плату STM32F4DISCOVERY, то на выводе 10 того же самого микроконтроллера STM32F103C8T, на котором основан ST-LINK, присутствует напряжение, равное половине напряжения питания и во время прошивки на терминал выводится адекватное значение напряжения питания ьез скачков от малого значения до большого.
Из этого следует вывод — необходима замена микроконтроллера STM32F103C8T на исправный, поставлю лучше STM32F103CBT, который отличается бОльшим объёмом флэш-памяти, а по остальным параметрам не отличается от STM32F103C8T.
0
Зря выпаивал микроконтроллер STM32F103C8T, на котором основан ST-LINK. Он оказался живым. Вернул на место. Причиной неправильного отображения напряжения питания был заводской брак — резисторы R9 и R10 были неправильно расположены на плате. Пришлось их развернуть на 90 градусов. После этой доработки отображается истинное значение напряжения питания.
Плата STM32VLDISKOVERY после доработки. Резисторы R9 и R10 установлены в правильные позиции.
Проблема со средой System Workbench for STM32 IDE (SWSTM32) никуда не делась. Отладка в настоящее время невозможна — проблема, скорее всего, кроется в настройках openocd, программатор не выдаёт сигнал сброса. Из-за этого программируемый микроконтроллер не останавливает работу.
Но можно микроконтроллер всё-таки можно запрограммировать: для этого перед программированием нужно нажать кнопку RST, запустить процесс программирования, удерживать кнопку до тех пор, пока в консоли openocd не приостановит выдачу сообщений, после отпускания кнопки RST микроконтроллер будет запрограммирован и будет сделана проверка правильности программирования.
0
Прошивка V2.J16.S4, которая загружалась в микросхему STM32F103C8T при модернизации ST-LINK до версии 2, видимо, имеет какие-то особенности. Обновление до последней версии V2J28S7 без затруднений.
Для сравнения. Последняя версия прошивки для ST-LINK V2 на плате STM32F4DISCOVERY — V2J28S0.
0
Когда я изучал топик, где выковыряли прошивку ST-LINK'а (правда, вроде первого) — отмечали, что выковырянная прошивка выковырялась криво, но позволяет обновиться, после чего все работает.
+1
Обновлял прошивку для ST-LINK V2 до последней на настоящее время версии V2J28S7, как автор статьи и посоветовал. Это делалось обязательно перед тем, как начать загружать программы в микроконтроллер STM32F100RBT. С помощью встроенного загрузчика изначально загружалась версия V2.J16.S4, которую снял и любезно выложил добрый человек, за это ему спасибо.
0
Прочитал в аннотации к встроенным ст-линкам.
For example:
• V1J13S4 is a version for the ST-LINK standalone probe.
• V2J27S6 is a version for the ST-LINK/V2 standalone probe (STM32 and STM8 debug
interfaces).
• V2J27S0 is a version for the 32F401CDIS
COVERY board (STM32 debug interface, no
STM8 debug interface, no mass storage interface and no Virtual-COM-port).
• V2J27M15 is a version for Nucleo boards and other ST-LINK/V2-1, ST-LINK/V2-A, ST-
LINK/V2-B boards (STM32 debug interface, mass storage interface, Virtual-COM-port).

Это значит что изначальным оригинальным програматором был тот который standalone. То есть НЕ от дискаверей.
0
Нашлось-таки лекарство! Посмотрел в Интернете сообщения людей, которые сталкивались с невозможностью остановки микроконтроллера и решили данную проблему(не полностью).
В файле конфигурации платы необходимо:
строку reset_config srst_only
заменить на reset_config trst_only.
После этого проблема сброса и останова микроконтроллера частично решается.
Файл конфигурации для доработанной платы STM32VLDISCOVERY с ST-LINK V2 на борту

# This is an vldiscovery_stlink-v2 board with a single STM32F100RBTx chip.
# Generated by System Workbench for STM32

source [find interface/stlink-v2.cfg]

set WORKAREASIZE 0x2000
transport select "hla_swd"

set CHIPNAME STM32F100RBTx

source [find target/stm32f1x.cfg]

# use hardware reset, connect under reset
reset_config trst_only

Этот файл можно назвать, например, «vldiscovery_stlink-v2.cfg» и поместить его в корневой каталог проекта. Затем, вызвав меню программирования (меню «Run As») или отладки (меню «Debug As»), примените опцию «Use local script» и выберите данный файл.
Удаётся выйти даже на режим отладки.
Предупреждаю, что могут быть сбои при запуске программирования (меню «Run As») или отладки (меню «Debug As»). Тогда попробуйте лечить следующим способом: нажмите кнопку RST, затем прошейте микроконтроллер, вызвав меню «Run As», отпустите кнопку, когда начнётся программирование.
Удачи!
0
Файл конфигурации для доработанной платы STM32VLDISCOVERY с ST-LINK V2 на борту

# This is an vldiscovery_stlink-v2 board with a single STM32F100RBTx chip.
# Generated by System Workbench for STM32

source [find interface/stlink-v2.cfg]

set WORKAREASIZE 0x2000
transport select "hla_swd"

set CHIPNAME STM32F100RBTx

source [find target/stm32f1x.cfg]

# use hardware reset, connect under reset
reset_config none
init_reset halt

Этот файл можно назвать, например, «vldiscovery_stlink-v2.cfg» и поместить его в корневой каталог проекта.
Программирует стабильно, но об отлаке следует забыть.
0
Проблема в том, что не совпадает разводка RESETа. В плате STM32VLDISCOVERY задействован 18 вывод (T_JRST) а в STM32F4DISCOVERY — 19 (T_NRST). Надо снять перемычку SB11 и прокинуть проводок от переходного отверстия до процессора программатора. Посмотрите внимательно по схемам. Все работает, и отладка тоже.
0
Спасибо!
Вы правы, придётся сделать ещё одну небольшую доработку. Появится свободное время, попробую доработать так, как Вы сказали.
0
Появилась возможность сделать доработку так, как предлагает scaler. Перемычку SB11 удалил, контакт 18 микроконтроллера STM32F103C8T соединил со штырьком RST(на фотографии появился новый проводничок золотистого цвета). ST-LINK теперь работает так, как и должен работать, чего раньше не было. Опознаётся как ST-LINK V2. С его помощью можно не только программировать флэш-память микроконтроллера на плате, но и отлаживать программу. Спасибо scaler за подсказку. Данная плата хороша тем, что много свободных выводов и без дополнительных устройств и датчиков, следовательно, можно быстро проверить идеи без опасения что-нибудь повредить на плате.Доработанный ST-LINK на плате STM32VLDISCOVERY
0
Модернизировал свой STM32VLDiscovery. У стартера топик написан сумбурно и с ошибками. Делал все по комментарию от geonicz.
Все здорово. Windows видит ST-Link v2.0, встроенный камень нормально шьется и вроде бы все нормально. НО! Если подключить внешнюю плату, то ST-Link Utility говорит что target не виден. Тоже самое говорят и другие программы. Описание:
1. 25 и 27 ноги соединил перемычкой. Хотя на схемах от других дискаверей между ними стоит резистор 100Ом.
2. Вторую ногу через 10кОм кинул на землю. Так предложили сделать на другом форуме и так сделано на F4Discovery.
3. Внешний камень подключил правильно: перемычки убрал, SWDCLK кинул на РА14, SWDIO кинул на РА13
4. Внешний камень нормально видится и нормально шьется с НЕ модернизированной VLDiscovery. То есть проблема НЕ в нем.

Может быть есть у кого-то идеи чего не хватает этой зарррразе??
0
scaler правильно заметил, что нужно перемычку SB11 удалить, а контакт 18 микроконтроллера STM32F103C8T соединить со штырьком RST. Тогда будет всё правильно работать.
Доработанный ST-LINK на плате STM32VLDISCOVERY
Удачи!
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.