Stm32 bootloader: Микроконтроллер STM32 и Bootloader. Пример реализации.
Содержание
LinkedIn
選擇語言Bahasa Indonesia (Bahasa Indonesia)Bahasa Malaysia (Malay)Čeština (Czech)Dansk (Danish)Deutsch (German)English (English)Español (Spanish)繁體中文 (Chinese (Traditional))Français (French)한국어 (Korean)Italiano (Italian)简体中文 (Chinese (Simplified))Nederlands (Dutch)日本語 (Japanese)Norsk (Norwegian)Polski (Polish)Português (Portuguese)Română (Romanian)Русский (Russian)Svenska (Swedish)Tagalog (Tagalog)ภาษาไทย (Thai)Türkçe (Turkish)العربية (Arabic)
عفواً، لم نتمكن من العثور على الصفحة التي تبحث عنها. برجاء المحاولة مرة أخرى للصفحة السابقة أو الانتقال لـمركز المساعدة للمزيد من المعلومات
الإنتقال لموجزك الرئيسي
Omlouváme se, nemůžeme najít stránku, kterou hledáte. Zkuste se vrátit zpátky na předchozí stránku, nebo se podívejte do našeho Centra nápovědy pro více informací
Přejít do informačního kanálu
Vi kan desværre ikke finde den side, du leder efter.
Gå tilbage til den forrige side, eller besøg Hjælp for at få flere oplysninger Gå til dit feed
Die gewünschte Seite konnte leider nicht gefunden werden. Versuchen Sie, zur vorherigen Seite zurückzukehren, oder besuchen Sie unseren Hilfebereich, um mehr zu erfahren.
Zu Ihrem Feed
Uh oh, we can’t seem to find the page you’re looking for. Try going back to the previous page or see our Help Center for more information
Go to your feed
Vaya, parece que no podemos encontrar la página que buscas. Intenta volver a la página anterior o visita nuestro Centro de ayuda para más información.
Ir a tu feed
Nous ne trouvons pas la page que vous recherchez. Essayez de retourner à la page précédente ou consultez notre assistance clientèle pour plus d’informations
Ouvrez votre fil
Maaf, sepertinya kami tidak dapat menemukan halaman yang Anda cari.
Coba kembali ke halaman sebelumnya atau lihat Pusat Bantuan kami untuk informasi lebih lanjut Buka feed Anda
Non abbiamo trovato la pagina che stai cercando. Prova a tornare alla pagina precedente o visita il nostro Centro assistenza per saperne di più.
원하시는 페이지를 찾을 수 없습니다. 이전 페이지로 돌아가거나 고객센터에서 자세히 알아보세요.
홈으로 가기
Harap maaf, kami tidak dapat menemui laman yang ingin anda cari. Cuba kembali ke laman sebelumnya atau lihat Pusat Bantuan kami untuk maklumat lanjut
Pergi ke suapan
De pagina waar u naar op zoek bent, kan niet worden gevonden. Probeer terug te gaan naar de vorige pagina of bezoek het Help Center voor meer informatie
Ga naar uw feed
Vi finner ikke siden du leter etter.
Gå tilbake til forrige side eller besøk vår brukerstøtte for mer informasjon Gå til din feed
Nie możemy znaleźć strony, której szukasz. Spróbuj wrócić do poprzedniej strony lub nasze Centrum pomocy, aby uzyskać więcej informacji
Przejdź do swojego kanału
A página que você está procurando não foi encontrada. Volte para a página anterior ou visite nossa Central de Ajuda para mais informações
Voltar para seu feed
Ne pare rău, nu găsim pagina pe care o căutaţi. Reveniţi la pagina anterioară sau consultaţi Centrul nostru de asistenţă pentru mai multe informaţii
Accesaţi fluxul dvs.
Не удаётся найти искомую вами страницу. Вернитесь на предыдущую страницу или посетите страницу нашего справочного центра для получения дополнительной информации.
Перейти к ленте
Sidan du letar efter hittades inte.
Gå tillbaka till föregående sida eller besök vårt Hjälpcenter för mer information Gå till ditt nyhetsflöde
Naku, mukhang hindi namin mahanap ang pahina na hinahanap mo. Subukang bumalik sa nakaraang pahina o tingnan ang aming Help Center para sa higit pang impormasyon
Pumunta sa iyong feed
Aradığınız sayfa bulunamadı. Önceki sayfaya geri dönün veya daha fazla bilgi için Yardım Merkezimizi görüntüleyin
Haber akışınıza gidin
抱歉,无法找到页面。试试返回到前一页,或前往帮助中心了解更多信息
前往动态汇总
我們好像找不到該頁面。請回到上一頁或前往說明中心來進一步瞭解
前往首頁動態
программ для прошивки STM32. Embedded Bootloader
Пост обновлен новыми скринами и актуальной информацией (2020)!
От пользователей поступило несколько запросов на разъяснения по поводу загрузки программ во флэш-память микроконтроллеров STM32. Есть несколько способов, как выполнить программирование флэш-памяти stm32.
Вы можете войти в загрузчик STM32 напрямую через интерфейс USART и загрузить бинарники.
Более продвинутый и гибкий метод — использование утилиты ST-LINK — адаптера на основе ST, который подключается к плате STM32 через интерфейс JTAG. Эта функция уже включена во многие платы разработки ST. В противном случае вы можете соединить провода от одного к другому или приобрести специальный портативный адаптер ST-Link.
Также вы можете использовать стандартные сторонние инструменты JTAG, такие как J-Link.
Наконец, вы можете прошить загрузчик, который работает с любым интерфейсом (USART, USB, SPI и т.д.)
Содержание
Плата STM32F103RB загрузчик на STM32
Загрузка Flash Loader
Программирование флэш-памяти STM32
Выполнение кода микроконтроллера после сброса
Плата STM32F103RB
Любой из этих методов хорош, если он выполняет свою работу. В этом разделе давайте сосредоточимся на том, как выполнить перепрошивку STM32 с помощью загрузчика. На сегодняшний день, наверное, ни один производитель не выпускает платы с интерфейсом RS232. Тем не менее, у вас, как и у меня, наверняка есть десяток старых плат с последовательным портом. Это отличные доски, которые можно использовать во многих проектах.
В моем примере я использую проектную плату LC STUDIO, которая включает такие электронные компоненты, как:
M3 STM32F103RBT6 ARM Cortex processor
Flash – 128KB
SRAM – 20KB
Three 16-bit timers
1 SysTick timer
SPI 2 (up до 18 Мбит/с)
I2C 2 (поддержка SM Bus 2.0/PM Bus)
USART 3 (один до 4,5 Мбит/с, два других до 2,29 Мбит/с)0008
USB 1 (совместим с USB Full-speed 12 Мбит/с)
CAN 1 (до 1 Мбит/с)
A 1 2 канала ADC 904-bit 12-12-канальный
1 RTC
DMA: 7 каналов
Внутренний датчик температуры: 1 (внутренне подключен к входному каналу ADC_IN16)
Разработка LC STUDIO
плата имеет следующие характеристики:
1 Последовательный Разъем RS232 (преобразователь уровня микросхемы MAX3232, USART1 или USART2 выбираются перемычкой J4)
1 Разъем USB (сопоставлен с контактами PA11 и PA12)
×
1 Разъем JTAG 2 (2 разъема) )
Сброс Push-Button
1 Светодиод
2 Пользовательский толкание пуш-буттоны (на карту с PC0 и PC1)
2 LEDS (PB8 и PB9 PINS)
j59040 (PB8 и PB9)
J. 5
J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. J5. выбор источника питания (от разъема USB или разъема JTAG)
J6 Перемычка для активация USB Pull-up резистор (R18=1.5k)
BOOT0 и BOOT1 перемычки для выбора режима загрузки 80 Фильтрация LC для VDDA (L1 и C6)
Использование последовательного кабеля или адаптера USB-последовательный порт
Возможно, у вас более новый компьютер, который может не иметь последовательного интерфейса. Есть два пути решения этой проблемы.
Проверьте материнскую плату на наличие разъема последовательного интерфейса. Таким образом, вы можете получить дешевый внешний разъем расширения, который подключается к материнской плате.
В качестве альтернативы вы можете использовать последовательный кабель USB, который работает так же, как последовательный порт, но подключается к порту USB.
Большинство кабелей USB-последовательный порт автоматически распознаются операционными системами, и никаких дополнительных действий не требуется. Там могут быть какие-то странные кабели с нераспознанными микросхемами преобразователя. Таким образом, вам понадобится драйвер от производителя. Лучший совет — держаться подальше от подозрительных дешевых кабелей и использовать известные бренды.
Встроенный загрузчик на STM32
Все микроконтроллеры STM32 поставляются со встроенными загрузчиками, которые прошиваются во время производства.
В зависимости от типа устройства флэш-память можно прошить с помощью одного из интерфейсов, таких как USART1 или USART2, USB, CAN.
В основном мы имеем дело с устройствами низкой, средней и высокой плотности для доступа к загрузчику с использованием интерфейса USART1. К USART1 можно получить доступ напрямую через интерфейс RS232 или USART к микросхеме драйвера USB, такой как FT232.
Пара специальных контактов MCU должна быть настроена на правильные логические значения для входа в загрузчик. Контакты называются BOOT0 и BOOT1 на микроконтроллере STM32. Загрузочные пины могут выбирать несколько режимов работы загрузчика:
Как видите, есть три случая:
Первый случай, когда пин BOOT0 завязан на землю, а BOOT1 разомкнут или находится в логическом состоянии 0 после выполнения программы сброса из основной флэш-памяти. Заземленные контакты BOOT являются стандартной конфигурацией при выполнении программ в полевых условиях.
Второй случай (BOOT1=0; BOOT0=1) означает, что после сброса выполнение начинается с системной памяти, встроенной в загрузчик. Это тот случай, когда нам нужно залить бинарники через USART1.
Третий случай означает, что выполнение программы выполняется в SRAM.
Остановимся на втором случае — системной памяти. На большинстве макетных плат вы найдете пару перемычек, с помощью которых можно выбрать конфигурации BOOT0 и BOOT1. В нашем случае плата STM32F103RBT6 выглядит так:
На изображении выше видно, что перемычка уже выбрана для запуска внутреннего загрузчика после перезагрузки.
Загрузка Flash Loader
Для доступа к загрузчику требуется специальное программное обеспечение под названием Flash Loader Demonstrator, также известное как FLASHER-STM32. Обязательно получите последнюю версию, чтобы иметь надлежащую поддержку новейших операционных систем, таких как Windows 10.
Установите ее и запустите. Вы увидите экран, где вы сможете выбрать параметры USART. Обязательно выберите правильный COM-порт:
Подключите плату к ПК с помощью предпочитаемого кабеля и нажмите кнопку Reset перед дальнейшими действиями. Возможно, вам потребуется найти рабочую скорость передачи данных, которая для моего STM32F103R равна 9600. После нажатия кнопки Next открывается следующий экран.
Это подтверждает, что вы успешно вошли в загрузчик.
Флэш-загрузчик определяет размер флэш-памяти устройства, что в моем случае
составляет 128 КБ. Нажмите Next , чтобы перейти к устройству.
экран выбора.
Как видите, целевое устройство выделяется автоматически. Если нет – выберите нужный из выпадающего списка. Ниже вы также можете увидеть другую информацию, такую как версия протокола загрузчика (2.2) и сопоставление флэш-памяти. Нажмите Next , если выбранное устройство выглядит нормально.
Программирование флэш-памяти STM32
flash_loader_dmonstrator_programming_screen
Наконец, вы попадаете на экран, где вы можете делать все что угодно:
Вы можете стереть все или выбрать страницы памяти. Загрузите .hex (.bin или .x19) во флэш-память микроконтроллера STM32.
Выберите Перейти к программе пользователя , если хотите
выполнить код сразу после
скачать.
Дополнительно можно выбрать Проверить после загрузки , чтобы убедиться, что загрузка
Был успешен.
Вы также можете Загрузить
с устройства существующий двоичный файл из флэш-памяти устройства в файл и создать его резервную копию для последующего использования.
Есть возможность включить или отключить защиту Flash
от чтения или письма.
Наконец, вы можете пойти дальше с Edit option bytes для установки уникальных байтов настроек, защиты от записи или чтения выбранных страниц памяти. Эти настройки часто используются на этапе производства с целью защиты от копирования кода.
Давайте загрузим двоичный файл .hex во флэш-память устройства STM32. Вам необходимо найти бинарный файл в поле Скачать из файла . В диалоговом меню выберите проверку после загрузки и перейдите к пользовательской программе следующим образом:
Нажмите кнопку Next , чтобы начать программирование и проверку.
Через несколько секунд все будет готово. Время загрузки может зависеть от
двоичный размер. В моем примере размер двоичного файла составляет 2804 байта, и мне потребовалось 9 секунд, чтобы
загрузить и проверить.
Выполнение кода микроконтроллера после перезагрузки
По завершении прошивки, если был установлен флажок Перейти к программе пользователя , ваша программа выполняется немедленно. Чтобы ваш код нормально работал после сброса платы, вам нужно вернуть BOOT0 контакт микроконтроллера на массу путем перемещения перемычки.
Узнайте больше о методах прошивки ST-Link и J-Flash stm32 flash.
Загрузчик STM32 · Руководство разработчика PX4 v1.9.0
Код загрузчика PX4 доступен в репозитории Github Bootloader.
После этого шага ряд файлов elf для всех поддерживаемых плат присутствует в каталоге Bootloader.
Перепрошивка загрузчика
Правильная последовательность питания имеет решающее значение для некоторых плат, чтобы разрешить доступ JTAG/SWD. Выполните эти шаги точно так, как описано.
Приведенные ниже инструкции действительны для зонда Blackmagic/Dronecode.
Для других зондов JTAG потребуются другие, но похожие шаги.
Разработчики, пытающиеся прошить загрузчик, должны обладать необходимыми знаниями.
Если вы не знаете, как это сделать, вам, вероятно, следует еще раз подумать, действительно ли вам нужно что-то менять в загрузчике.
Последовательность
Отсоедините кабель JTAG
Подключите кабель питания USB
Подключите кабель JTAG
Зонд Black Magic / Dronecode Использование правого последовательного порта
В LINUX: /dev/serial/by-id/usb-Black_Sphere_XXX-if00
В MAC OS: обязательно используйте порт cu. xxx, а не порт tty.xxx: tar ext /dev/tty.usbmodemDDEasdf
рука-нет-eabi-gdb
(gdb) tar ext /dev/serial/by-id/usb-Black_Sphere_XXX-if00
(gdb) пн swdp_scan
(gdb) прикрепить 1
(gdb) mon стереть опцию
(gdb) пн стирание_массы
(gdb) загрузить tapv1_bl.elf
...
Скорость передачи: 17 КБ/с, 828 байт/запись.
(gdb) убить
J-Link
Эти инструкции предназначены для сервера J-Link GDB.
Предпосылки
Загрузите программное обеспечение J-Link с веб-сайта Segger и установите его в соответствии с их инструкциями.
Запустите сервер JLink GDB
Приведенная ниже команда используется для запуска сервера для полетных контроллеров, использующих SoC STM32F427VI:
JLinkGDBServer — выберите USB = 0 — устройство STM32F427VI — если SWD-DP — скорость 20000