Top.Mail.Ru

STM32VLDiscovery. Программирование отладочной платы.

Решил я написать статью про подключение отладочной платы STM32VLDiscovery (еще одна статья учебного курса по STM32). Казалось бы это вообще элементарно, воткнул провод и вперед, но на деле можно наступить на огромное количество граблей. Поэтому нельзя оставлять этот вопрос неосвещенным.

Программирование STM32VLDiscovery через Keil.

Подключаем нашу платку к USB, и ждем пока она определится как внешний носитель. Если Windows не увидел вашу плату (как было у меня), то советую проверить в первую очередь кабель и разъем для него на плате. У меня, например, отошел контакт на Discovery, и я очень долго пытался понять, почему же плата не работает )

Но чаще всего подключение проходит без проблем, так что двигаемся дальше. Идем в папку с Keil’ом и находим драйвер для USB. Он лежит вот тут:

  • ARM\STLink\USBDriver (это в папке, куда установлен Keil)

Запускаем ST-Link_V2_USBdriver.exe и устанавливаем его. Возвращаемся чуть назад – в папку C:\Keil\ARM\STLink и видим там файл STLinkUSBDriver.dll размером около 65 кб. Его надо заменить на файл - STLinkUSBDriver.dll (подменять файл следует только в том случае, если ST-LINK завести не удается (!) ).

Первый этап позади!

Запускаем Keil и открываем там проект, который будем заливать в железку. Идем в меню Flash-Configure Flash Tools. Во вкладке Debug выбираем Use ST-Link Debugger и ставим галочку Run to main():

Настройка отладки в Keil

Теперь открываем вкладку Utilities и тоже выбираем ST-Link Debugger.

Выбор отладчика для STM32

Думаете все? А вот и нет, продолжаем настройку. Нажимаем кнопку Settings и в появившемся окне нужно добавить Programming algorithm для нашего девайса:

Настройка SWD в Keil

В этом же окне открываем вкладку Debug, находим поле Port и вместо JTAG ставим SW:

Выбор SWD отладчика в Keil

С настройкой закончили, но и это еще не все. Открываем файл stm32f10x.h и находим в районе 45-55 строк такой текст:

#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL) 
	/* #define STM32F10X_LD */            /* STM32F10X_LD: STM32 Low density devices */
	/* #define STM32F10X_LD_VL */         /* STM32F10X_LD_VL: STM32 Low density Value Line devices */  
	/* #define STM32F10X_MD */            /* STM32F10X_MD: STM32 Medium density devices */
	/* #define STM32F10X_MD_VL */         /* STM32F10X_MD_VL: STM32 Medium density Value Line devices */  
	/* #define STM32F10X_HD */            /* STM32F10X_HD: STM32 High density devices */
	#define STM32F10X_XL                  /* STM32F10X_XL: STM32 XL-density devices */
	/* #define STM32F10X_CL */            /* STM32F10X_CL: STM32 Connectivity line devices */
#endif

Надо чтобы тут обязательно была раскомментирована строка #define STM32F10X_MD_VL и закомментированы все остальные, иначе программа зашьется, но не заведется.

Не забываем в настройках проекта попросить компилятор генерировать hex:

Генерация hex-файла в Keil

Собираем проект и нажимаем кнопку Load. В случае удачной прошивки видим строки:

Load "Здесь путь к файлу прошивки"
Erase Done.
Programming Done.
Verify OK.

Если все-таки почему-то у вас не вышло прошить плату через Keil, то есть второй способ.

Время традиционной вставки: поскольку компания STMicroelectronics прекратила поддержку библиотеки SPL, которая использовалась в этом курсе, я создал новый, посвященный работе уже с новыми инструментами, так что буду рад видеть вас там - STM32CubeMx. Кроме того, вот глобальная рубрика по STM32.

Программирование STM32VLDiscovery через STM32 ST-Link Utility.

Ну, здесь все намного проще, чем в Keil’e. Просто скачиваем утилиту, устанавливаем (скачать можно по этой ссылке - ST-Link Utility). Как и в первом случае заменяем файл STLinkUSBDriver.dll. Он лежит здесь:

  • STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility

В принципе, это все! Запускаем утилиту, ну а дальше все прозрачно – кнопка Connect для подключения, меню Open File – для выбора файла прошивки. В общем, все понятно.

Итак, мы рассмотрели два способа прошивки STM32VLDiscovery, выбирайте любой на свой вкус! )

Подписаться
Уведомить о
guest

20 комментариев
Старые
Новые
Межтекстовые Отзывы
Посмотреть все комментарии
Mike
Mike
11 лет назад

Хорошая статья. только не понятно, зачем подменять STLinkUSBDriver.dll вашим вариантом? интересно:вижу,что размер ее много больше родной, а что там? и еще вопрос: можно ли слить hex-файл с отладочной платы?

Mike
Mike
11 лет назад

Спасибо за быстрый ответ 🙂 Курю STM32L Discovery. Хочу для начала слить тестовый hex, зашитый при покупке. Установил ST-LINK Utility, подменил драйвер STLinkUSBDriver.dll , диспетчер устройств винды видит "STMmicroelectronics STLink dongle" при включении ST-LINK Utility ругается "No STLink detected" в settings-connection protocol стоит SWD (неактивна, серым цветом) ниче поменять не дает. Плата подключена, блымает свой тест на ЖКИ, посмеивается, наверное)) Куда копнуть, посоветуйте?

Mike
Mike
11 лет назад

Решил попробовать родной STLinkUSBDriver.dll - тот, что 65 кб весит. Девайс определился сразу ( кстати, win7 ultimate, 32 bit) и порекомендовал мне firmware upgrade, подождет)). Загрузился код с адреса 0х8000000 размером 0х1000, слово 32бит. Смог сохранить в hех. Опять же вопрос: чтобы слить всю прошивку "100%" какой стартовый адрес и длину блока выставить? Заранее спасибо 🙂

Дмитрий
Дмитрий
10 лет назад

Здравствуйте. Пожалуйста подскажите как сделать следующее в Keil. Пример для PIC PORTB=0x10010001; установка сигналов на порту B. Спасибо.

Дмитрий
Дмитрий
10 лет назад

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

Дмитрий
Дмитрий
10 лет назад

Поздравляю всех с праздником великой победы!

Андрей
Андрей
10 лет назад

Так что за версию STLinkUSBDriver.dll вы продвигаете и где Вы ее взяли?
В IAR6.5 - 64KB,
В IAR7.0 - 84KB.
Это фирменные драйверы, отлично работают кстати у меня на разных компьютерах.
Почему у Вас размер 381 КБ, объяснитесь!

Aндрей
Aндрей
10 лет назад

ок, скорее всего это файл от старой версии железа.

Вопрос, можно ли с помощью st-linka от stm32f4discovery прошивать чипы с питанием 1.8 вольт? (LIS331EB) Достаточно ли поставить пару резисторов для падения напряжения в разрыв swdio и swclk ?

Alex
Alex
10 лет назад

Добрый день.
Может можете подсказать.
При программировании stm32LVDiscovery получилась опечатка в задаче частоты генератора. На порядок кажется ошибся. После прошивки видно, что работает микросхема, но перестала прошиваться, стираться через внутренний программатор. Что можно сделать? На ATMega -х в таком случае можно было собрать и подключить внешний тактовый генератор - спасало.

Александр
Александр
10 лет назад

Проблема решается легко:

1.Подключить дискавери к компу.
2.Отключить usb шнур от дискавери.
3.Закоротить вывод boot0 и Vdd.
4.Подключить usb шнур к дискавери.
5.Снять перемычку с boot0 и Vdd.
6.Утилитой или из Keil дать команду Erase.

После этого все видится и St-Link и "камень" на борту дискавери.

Алексей
Алексей
10 лет назад

Спасибо! Действительно помогло!

Вячеслав
Вячеслав
8 лет назад

17.03.2016
Вопрос связан с подключением платы STM32VL Discovery и связи её с STM32 ST-LINK Utility v3.8.0.
Сначала о том, что у меня получается. Купил STM32VL Discovery, подключил к компьютеру с ОС WindowsXP: в проводнике появляется съёмный диск объёмом 31 Мв, в котором содержатся три ссылки (не рабочие) на сайт http://www.st.com. Запустил дистрибутив stm32_st-link_utility.exe; прошла установка самой программы и драйвера. Программа оказалась версии 2.5.0. и рабочей, контроллер на плате читается и пишется.
Захотелось установить последнюю версию, STM32 ST-LINK Utility v3.8.0, скачанную с сайта http://www.st.com/web/catalog/tools/FM146/CL1984/SC720/SS1454/PF219866?sc=internet/evalboard/product/219866.jsp#. Во время установки дистрибутив предлагает установить два драйвера. Программа отказалась работать: не находит нужного драйвера. Заставил работать программу так: запустил дистрибутив v3.8.0, отказался от установки драйверов. В «Диспетчере устройств» удалил виртуальный нерабочий СОМ-порт (он не нужен), появляющийся при установке программы v3.8.0. Установил драйвер, взяв для него дистрибутив ST-Link_V2_USBdriver.exe из директории установленной программы версии 2.5.0. Программа STM32 ST-LINK Utility v3.8.0 получилась рабочей. Когда в ней открываю закладку «Инструменты», в окне, где выводится номер СОМ-порта, вижу: «ST-Link/1_on_I». I это – буква съёмного диска объёмом 31 Мв, появляющегося, когда втыкаешь кабель от платы STM32VL Discovery в USB-порт компьтера. Эту ситуацию я понимаю так: плата при её подключении к компьютеру, создаёт виртуальный диск в оперативной пямяти компьютера (вместо виртуального СОМ-порта) и работает через этот диск с программой STM32 ST-LINK Utility v3.8.0. Щелкаю по кнопке, включающей связь программы с платой, вижу код, зашитый в контроллер, объём которого около 2/3 от объёма памяти контроллера (128 кВт).
Теперь вопросы: что за программа зашита производителем в микроконтроллер и что она мне может дать? И второй: всё ли я сделал правильно при установке программы STM32 ST-LINK Utility v3.8.0 или надо делать что-то по-другому?
С уважением, Вячеслав.

Ярослав
8 лет назад

Доброго дня! Есть ли возможность слить прошивку с контроллера stm32f100 VDT6B. Если да, то как это сделать? нужна помощь специалиста с щедрой оплатой!

20
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x