Открыть список
Как стать автором
Обновить

Комментарии 34

Блок схема у вас очень красивая, можно поинтересоваться в чем приготовлена?
Спасибо.
https://www.lucidchart.com/
Спасибо за статью. Как вариант — DFU bootloader из проекта Maple для stm32.
Но usb mass storage конечно удобнее!
И вам спасибо!
Кажется, DFU bootloader требует некоторую внешнюю программу на стороне ПК (я не использовал никогда DFU)?
Специально хотелось уйти от этого.
Мне удобнее было не отводить память для MSD, а сделать её виртуальной. Со стороны хоста диск отформатирован и содержит файл APP.BIN. Если его считать — это содержимое флэша. Я просто копирую файл APP.bin (до 496K) и образ сразу записывается во флэш.
То есть размер APP.bin = MCU Flash Size — BOOTLOADER Size (16K у меня)
Вот тут не факт, что ОС будет писать в те же самые сектора, а не попытается пересоздать файл. Тогда уж надо реализацию MTP делать.
Мне за MS сложно отвечать, но работает.
Примерно так же работает во всех дебаггерах с поддержкой MSD с одной стороны и SWD/SWC с другой стороны (NUCLEO и ещё 100500).
НЛО прилетело и опубликовало эту надпись здесь
Описанное в статье и правда избыточно, я так изначально и задумывал — не вдаваться в оптимизацию алгоритма работы прежде, чем все не будет работать. Лично я не планирую использование бута в том виде, в котором он описан — это скорее учебный вариант. В дальнейшем я просто буду его модифицировать отдельно под очередной проект. Где флешка будет внешняя, где — принимающий интерфейс не ЮСБ, и т.д.
Вы имеете ввиду, что нужно отдать USB_MSD всю флешку, кроме той, где хранится бутлоадер? А потом при перезагрузке прыгать по тому адресу, где лежит файл APP.BIN (ОС его туда положила — и этот адрес не сложно вычислить без монтирования файловой системы, а вручную, по таблице FAT)?
Тут проблема в том, что я не могу предугадать действия ОС. Вдруг она разобьет файл на куски, и разбросает их по диску. Это вполне возможно, если на MSD диске лежат какие-то другие файлы (например, несколько разных прошивок, или файлы настройки чего-то внутри МК). Поэтому я и пользуюсь FatFS — что бы легко получить доступ к файлу невзирая на то, что ОС с ним творила.
а если предполагается что устройство уже является win-совместимым и сразу определяется системой, как тогда можно использовать Ваш бут лоадер?
Его, как минимум, можно использовать для обучения :-)
Что значит " устройство уже является win-совместимым"? То есть у него уже есть какой-то USB интерфейс (и он настоящий, не usb-uart конвертор)? Тогда можно прошить этот бут на ваше устройство и потом через него обновлять вашу прошивку. Нужна только кнопка, которая при включении устройства выбирает — грузится в режиме бута или же в режиме исполнения вашей программы.

Я пробовал через этот бутлоадер заливать приложения, использующие USB (CDC или MSD). Удачно все.
В моем случае есть MIDI-USB устройтсво, на STM32, так же задумывался о бутлоадере, в виде MS, но руки не дошли. И вот интересует как использовать бутлоадер в данном случае. Копки «Update» не придвидится… вы не думали реализовать бутлоадер в виде композит устройтва, в возможностью выбора режима при подключении устроятва к USB?
PS. Насколько я понимаю, такое устройство должно поддерживать две конфигурации, одна из которых — как раз и будет ваш кастомный бутлоадер для перепрошивки.
Ну хоть какая-нибудь кнопка будет в вашем устройстве? Этот бут можно завести на вообще любую кнопку.
Нет, в виде композита не думал, т.к. у всего, для чего я буду использовать этот бут — есть хотя бы одна кнопка.
Где-то на electronix.ru рекомендуют переход на основную прошивку выполнять после полного ресета, иначе возможны фокусы. Ну а определить что грузить — по флагу во флеш или в BkpSram.
Да, я тоже так изначально думал делать. Но не стал — забыл, почему. Вспомню — напишу.
Дороги под часовым кварцем — плохая идея.
Я не так давно написал бут для STM32F373, когда оказалось, что вызвать встроенный DFU-бут на F3 невозможно (баг в буте).
На F4 семействе кстати работает без проблем.

У меня бут прошивает с SD-карты, но на будущее — это не удобно.
Бут занял 27 КиБ, это Nil + HAL + FatFS + tinf (zlib inflate) + RIOT CBOR + SHA1.
Красивая плата. А что за TVS'ы между USB разъемами? Можно где то увидеть всю схему/плату?
Это шоттки по питанию, они есть на схеме в публикации.
Большая часть платы приведена тут, кстати. Остальное — карта памяти uSD, радиомодуль nRF24L01+, аналоговый датчик света, EEPROM память и сокеты для дочерних плат
А что за L4, L5 и для чего они?
Судя по схеме нельзя запаять ничего кроме F10x.
Жаль. Если бы было расчитано на F20x/F40x, я бы даже спросил где купить.
Очень аккуратная плата у Вас получилась! Правда, что-то мне подсказывает, что можно было обойтись и двумя слоями)

Кстати, форм-фактор — это кредитная карта?
И что это за интересные крепежные винты такие?
Спасибо.
Обойтись было можно, но не было смысла — я просто подкидываю платы для хобби к другим заказам с более сложными платами.
Форм фактор свой, не кредитный, просто так вышло.
Это очень клевые стойки от Wurth Electronics
Спасибо, стойки возьму на вооружение!

Еще вопросик — вскрытие маски на антенне хоть как-то влияет на ее характеристики?
Не знаю. Думаю, что не очень сильно, но не готов это грамотно обосновать.
Подскажите, у вас ВЧ тракт от нордика собран на компонентах типоразмера 0805? В даташите рекомендуют использовать 0402. Есть ли разница в качестве сигнала? И какова дальность у вашего устройства?
Сам нордик оригинальный?
На плате ни одного 0805, все 0603. Действительно, на отладке фирменной от нордик (правда, MCU — nRF51) стоят 0402.

Я лично не проверял с 0402, не знаю. Дальность особо не тестил, но по квартире метров 20 с парой не несущих стен работает.

Купил в китае на Али по 30р/шт, так что вряд ли.
Мне больше нравятся антенны на самой плате (ну или SMD керамические, хотя это дороже и менее эффективно). Я понимаю, у них разные области применения и где-то нужны внешние, но у меня таких задач не было…
Ориентировался вот на эти аппноты от TI:
swra351a.pdf, swra228c.pdf, swru120b.pdf, swra161b.pdf.

Ну и не всегда есть под рукой приборы, которые позволяют оценить, как ваша, только что придуманная антенна работает. Однажды у меня в питании nRF24L01 стоял DC-DC и все работало вроде, но не очень. А когда дошли руки посмотреть анализатором спектра — был неприятно удивлен:

image

Такую несущую он выдавал

А вот такую должен (при питании от LDO):

image

Подскажите, а какой минимальный размер MSD может быть. Я пытаюсь соорудить для опытов с внешним ЕЕПРОМ на 60кБайт — винде не удается отформатировать диск…
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.