8-900-374-94-44
[email protected]
Slide Image
Меню

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ù.

Vai al tuo feed

申し訳ありません。お探しのページが見つかりません。前のページに戻るか、ヘルプセンターで詳細をご確認ください

フィードに移動

원하시는 페이지를 찾을 수 없습니다. 이전 페이지로 돌아가거나 고객센터에서 자세히 알아보세요.

홈으로 가기

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 и т.д.)

Содержание

  1. Плата STM32F103RB загрузчик на STM32
  2. Загрузка Flash Loader
  3. Программирование флэш-памяти STM32
  4. Выполнение кода микроконтроллера после сброса

Плата 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.