Comments 34
Блок схема у вас очень красивая, можно поинтересоваться в чем приготовлена?
Спасибо за статью. Как вариант — DFU bootloader из проекта Maple для stm32.
Но usb mass storage конечно удобнее!
Но usb mass storage конечно удобнее!
И вам спасибо!
Кажется, DFU bootloader требует некоторую внешнюю программу на стороне ПК (я не использовал никогда DFU)?
Специально хотелось уйти от этого.
Кажется, DFU bootloader требует некоторую внешнюю программу на стороне ПК (я не использовал никогда DFU)?
Специально хотелось уйти от этого.
Все верно. Отдельный протокол, отдельная утилита.
Мне удобнее было не отводить память для MSD, а сделать её виртуальной. Со стороны хоста диск отформатирован и содержит файл APP.BIN. Если его считать — это содержимое флэша. Я просто копирую файл APP.bin (до 496K) и образ сразу записывается во флэш.
То есть размер APP.bin = MCU Flash Size — BOOTLOADER Size (16K у меня)
То есть размер APP.bin = MCU Flash Size — BOOTLOADER Size (16K у меня)
Вот тут не факт, что ОС будет писать в те же самые сектора, а не попытается пересоздать файл. Тогда уж надо реализацию MTP делать.
Мне за MS сложно отвечать, но работает.
Примерно так же работает во всех дебаггерах с поддержкой MSD с одной стороны и SWD/SWC с другой стороны (NUCLEO и ещё 100500).
Примерно так же работает во всех дебаггерах с поддержкой MSD с одной стороны и SWD/SWC с другой стороны (NUCLEO и ещё 100500).
UFO just landed and posted this here
Описанное в статье и правда избыточно, я так изначально и задумывал — не вдаваться в оптимизацию алгоритма работы прежде, чем все не будет работать. Лично я не планирую использование бута в том виде, в котором он описан — это скорее учебный вариант. В дальнейшем я просто буду его модифицировать отдельно под очередной проект. Где флешка будет внешняя, где — принимающий интерфейс не ЮСБ, и т.д.
Вы имеете ввиду, что нужно отдать USB_MSD всю флешку, кроме той, где хранится бутлоадер? А потом при перезагрузке прыгать по тому адресу, где лежит файл APP.BIN (ОС его туда положила — и этот адрес не сложно вычислить без монтирования файловой системы, а вручную, по таблице FAT)?
Тут проблема в том, что я не могу предугадать действия ОС. Вдруг она разобьет файл на куски, и разбросает их по диску. Это вполне возможно, если на MSD диске лежат какие-то другие файлы (например, несколько разных прошивок, или файлы настройки чего-то внутри МК). Поэтому я и пользуюсь FatFS — что бы легко получить доступ к файлу невзирая на то, что ОС с ним творила.
Тут проблема в том, что я не могу предугадать действия ОС. Вдруг она разобьет файл на куски, и разбросает их по диску. Это вполне возможно, если на MSD диске лежат какие-то другие файлы (например, несколько разных прошивок, или файлы настройки чего-то внутри МК). Поэтому я и пользуюсь FatFS — что бы легко получить доступ к файлу невзирая на то, что ОС с ним творила.
а если предполагается что устройство уже является win-совместимым и сразу определяется системой, как тогда можно использовать Ваш бут лоадер?
Его, как минимум, можно использовать для обучения :-)
Что значит " устройство уже является win-совместимым"? То есть у него уже есть какой-то USB интерфейс (и он настоящий, не usb-uart конвертор)? Тогда можно прошить этот бут на ваше устройство и потом через него обновлять вашу прошивку. Нужна только кнопка, которая при включении устройства выбирает — грузится в режиме бута или же в режиме исполнения вашей программы.
Я пробовал через этот бутлоадер заливать приложения, использующие USB (CDC или MSD). Удачно все.
Что значит " устройство уже является win-совместимым"? То есть у него уже есть какой-то USB интерфейс (и он настоящий, не usb-uart конвертор)? Тогда можно прошить этот бут на ваше устройство и потом через него обновлять вашу прошивку. Нужна только кнопка, которая при включении устройства выбирает — грузится в режиме бута или же в режиме исполнения вашей программы.
Я пробовал через этот бутлоадер заливать приложения, использующие USB (CDC или MSD). Удачно все.
В моем случае есть MIDI-USB устройтсво, на STM32, так же задумывался о бутлоадере, в виде MS, но руки не дошли. И вот интересует как использовать бутлоадер в данном случае. Копки «Update» не придвидится… вы не думали реализовать бутлоадер в виде композит устройтва, в возможностью выбора режима при подключении устроятва к USB?
PS. Насколько я понимаю, такое устройство должно поддерживать две конфигурации, одна из которых — как раз и будет ваш кастомный бутлоадер для перепрошивки.
PS. Насколько я понимаю, такое устройство должно поддерживать две конфигурации, одна из которых — как раз и будет ваш кастомный бутлоадер для перепрошивки.
Ну хоть какая-нибудь кнопка будет в вашем устройстве? Этот бут можно завести на вообще любую кнопку.
Нет, в виде композита не думал, т.к. у всего, для чего я буду использовать этот бут — есть хотя бы одна кнопка.
Нет, в виде композита не думал, т.к. у всего, для чего я буду использовать этот бут — есть хотя бы одна кнопка.
Где-то на electronix.ru рекомендуют переход на основную прошивку выполнять после полного ресета, иначе возможны фокусы. Ну а определить что грузить — по флагу во флеш или в BkpSram.
Дороги под часовым кварцем — плохая идея.
Я не так давно написал бут для STM32F373, когда оказалось, что вызвать встроенный DFU-бут на F3 невозможно (баг в буте).
На F4 семействе кстати работает без проблем.
У меня бут прошивает с SD-карты, но на будущее — это не удобно.
Бут занял 27 КиБ, это Nil + HAL + FatFS + tinf (zlib inflate) + RIOT CBOR + SHA1.
На F4 семействе кстати работает без проблем.
У меня бут прошивает с SD-карты, но на будущее — это не удобно.
Бут занял 27 КиБ, это Nil + HAL + FatFS + tinf (zlib inflate) + RIOT CBOR + SHA1.
Почему неудобно?
Красивая плата. А что за TVS'ы между USB разъемами? Можно где то увидеть всю схему/плату?
Судя по схеме нельзя запаять ничего кроме F10x.
Жаль. Если бы было расчитано на F20x/F40x, я бы даже спросил где купить.
Жаль. Если бы было расчитано на F20x/F40x, я бы даже спросил где купить.
Очень аккуратная плата у Вас получилась! Правда, что-то мне подсказывает, что можно было обойтись и двумя слоями)
Кстати, форм-фактор — это кредитная карта?
И что это за интересные крепежные винты такие?
Кстати, форм-фактор — это кредитная карта?
И что это за интересные крепежные винты такие?
Спасибо.
Обойтись было можно, но не было смысла — я просто подкидываю платы для хобби к другим заказам с более сложными платами.
Форм фактор свой, не кредитный, просто так вышло.
Это очень клевые стойки от Wurth Electronics
Обойтись было можно, но не было смысла — я просто подкидываю платы для хобби к другим заказам с более сложными платами.
Форм фактор свой, не кредитный, просто так вышло.
Это очень клевые стойки от Wurth Electronics
Подскажите, у вас ВЧ тракт от нордика собран на компонентах типоразмера 0805? В даташите рекомендуют использовать 0402. Есть ли разница в качестве сигнала? И какова дальность у вашего устройства?
Сам нордик оригинальный?
Сам нордик оригинальный?
На плате ни одного 0805, все 0603. Действительно, на отладке фирменной от нордик (правда, MCU — nRF51) стоят 0402.
Я лично не проверял с 0402, не знаю. Дальность особо не тестил, но по квартире метров 20 с парой не несущих стен работает.
Купил в китае на Али по 30р/шт, так что вряд ли.
Я лично не проверял с 0402, не знаю. Дальность особо не тестил, но по квартире метров 20 с парой не несущих стен работает.
Купил в китае на Али по 30р/шт, так что вряд ли.
Мне больше нравятся антенны на самой плате (ну или SMD керамические, хотя это дороже и менее эффективно). Я понимаю, у них разные области применения и где-то нужны внешние, но у меня таких задач не было…
Ориентировался вот на эти аппноты от TI:
swra351a.pdf, swra228c.pdf, swru120b.pdf, swra161b.pdf.
Ну и не всегда есть под рукой приборы, которые позволяют оценить, как ваша, только что придуманная антенна работает. Однажды у меня в питании nRF24L01 стоял DC-DC и все работало вроде, но не очень. А когда дошли руки посмотреть анализатором спектра — был неприятно удивлен:
Такую несущую он выдавал
А вот такую должен (при питании от LDO):
Ориентировался вот на эти аппноты от TI:
swra351a.pdf, swra228c.pdf, swru120b.pdf, swra161b.pdf.
Ну и не всегда есть под рукой приборы, которые позволяют оценить, как ваша, только что придуманная антенна работает. Однажды у меня в питании nRF24L01 стоял DC-DC и все работало вроде, но не очень. А когда дошли руки посмотреть анализатором спектра — был неприятно удивлен:
Такую несущую он выдавал
А вот такую должен (при питании от LDO):
Подскажите, а какой минимальный размер MSD может быть. Я пытаюсь соорудить для опытов с внешним ЕЕПРОМ на 60кБайт — винде не удается отформатировать диск…
Sign up to leave a comment.
STM32 USB Mass Storage Bootloader