Загрузчик загрузки только для серий

JCW
Солнце 01 ноября 2015 г. 15:51
Кто -нибудь исследовал это только серийный USB -загрузочный загрузчик, в качестве альтернативы для подхода DFU?

Оригинальный репозиторий: https: // github.com/leaflabs/maple-bootloader
Дальнейшие события, но все еще относительно старые: https: // github.com/j1rie/maple-bootloader

Интересно, что это может избежать сложности DFU против VCP (серийного). В частности, похоже, что этот подход позволяет избежать необходимости любых файлов настройки драйверов и конфигурации в Windows, Mac OSX и Linux, и что даже пульсирование D+ для reattach больше не потребуется, так как USB -соединение остается одним и тем же типом. Наконец, использование протокола Atmel Stk в этом драйвере означает, что «Avrdude» может быть всем, что нужно для загрузки Firware.

Если все это действительно так, это может быть очень интересным проспектом для изучения IMO, но по какой -то причине, похоже, в этой области, похоже, нет никакого развития, по крайней мере, я не смогу найти.

-JCW

Uodate - Только что нашел эту ветку: http: // www.STM32duino.com/viewtopic.PHP?F = 32&t = 31
Кажется связанным. Чтение сейчас. Извинения за шум. Фильм в одиннадцать.

JCW
Вт 3 ноября 2015 г. 11:00 утра
Исследование продолжается. Я хотел бы попробовать расширить или внедрить серийный загрузочный загрузочный загрузчик на основе CDC ACM.
Это прыгнет к загруженному эскизу, который продолжает использовать тот же драйвер - избегая проблем сброса / передачи.

Рассматривали LiboPencm3 в качестве отправной точки, но, насколько я могу судить, это только USB в режиме опроса?
Это исключило бы это для эскизов в IDE. Демоверсии от Libopencm3-examples работают из коробки.

Есть текущая реализация Libmaple, но я не уверен, каков его статус.
Работая, ясно, но не используя недавние заголовки STM и конвенции, кажется, что это?
Для будущей консолидации было бы хорошо использовать один и тот же базовый код для всего кода времени выполнения IDE.

Существует много проектов для STM32 и USB :) - Если у кого -то есть предложение для хорошей отправной точки для небольшой серийной реализации USB, управляемой прерыванием для STM32 (F1 на данный момент), скажите, пожалуйста...

-JCW

Mrburnette
Вторник 03 ноября 2015 г. 13:23
JCW написал:Исследование продолжается. я'D хотел бы попробовать расширить или реализовать серийный загрузочный загрузчик на основе CDC ACM.
Это прыгнет к загруженному эскизу, который продолжает использовать тот же драйвер - избегая проблем сброса / передачи.
<...>

JCW
Вторник 03 ноября 2015 г. 15:10
Луча,

Моя мысль была: низкая флэш -память 8 кб и низкая 2 КБ ОЗУ для серийного USB -загрузчика. Загружает записи в флэш -память выше, которая.

Эскиз скомпилируется с смещением Flash 0x2000 и ОЗУ ОЗМ: 0x0800, он не содержит драйвер USB и не касается USB -оборудования. Вместо этого загрузчик загрузчика имеет векторную таблицу в известном месте, в которую затем используется эскиз, чтобы вызвать, для простых последовательных ввода/выводов на основе символов над USB.

С прерываниями записи векторов эскизов для USB (3, насколько я понимаю), должны будут указывать на тот же загрузочный код после повторного выселения.

Поэтому, что касается USB, не существует прерывания обслуживания между тем, когда заканчивается загрузочный загрузчик (с поддельным и работающим USB -устройством), и начинается эскиз - так как нет µc или сброса устройства между ними между ними. Драйвер USB в загрузчике может повторно использовать трюк Leaflabs Maple для обнаружения специального запроса «самостоятельного урегулирования».

Пока это в основном догадка и фантазия. Но было бы неплохо узнать как можно скорее, если такой подход не имеет смысла каким -либо образом.

-JCW

Mrburnette
Вторник 03 ноября 2015 г. 15:52
JCW написал:Луча,

Моя мысль была: низкая флэш -память 8 кб и низкая 2 КБ ОЗУ для серийного USB -загрузчика. Загружает записи в флэш -память выше, которая.

Эскиз скомпилируется с смещением Flash 0x2000 и ОЗУ ОЗМ: 0x0800, он не содержит драйвер USB и не касается USB -оборудования. Вместо этого загрузчик загрузчика имеет векторную таблицу в известном месте, в которую затем используется эскиз, чтобы вызвать, для простых последовательных ввода/выводов на основе символов над USB.
<...>

JCW
Вторник 03 ноября 2015 г., 16:05
Это то, что предназначена для векторной таблицы - указатели, которые разрешают косвенные вызовы в код загрузчика загрузчика.

Вот пример от NXP для LPC µCS, используемый в одном из моих проектов: https: // github.com/jeelabs/emello/blob ... #L156-L170 - Структура определяет указатели на код в ПЗУ, и эта структура расположена по фиксированному известному адресу.

Чтобы выразить это по -другому: подключение выполняется во время выполнения, а не во время компиляции/ссылки.

Rogerclark
Вт 3 ноября 2015 г., 8:04 вечера
Жан-Клод

Я должен признать, я все еще не уверен, почему вы хотите серийный загрузчик или тот, который не перечисляет USB?

Это для использования с последовательными обновлениями OTA.

Хотя текущий загрузчик не идеален, большинство людей, похоже, могут его использовать.
(Я знаю, что у вас есть проблемы с этим в OSX, но я знаю, что это работает для многих людей на OSX, поэтому я думаю, что у вас есть конкретная проблема конфигурации с вашим Mac).

КСТАТИ. Использовать OTA
Я думаю, что лучше использовать внешний процессор / радиомодуль, e.глин. ESP8266 или NRF51822, затем STM32 может быть прошит с помощью SWD со стороны соавтора или даже с помощью внутреннего серийного аппаратного загрузчика.

Но я знаю, что диапазон на BLE и Wi -Fi не так хорош, как 433 МГц.
Однако вы могли бы использовать NRF9E5, так как я думаю, что у кого -то есть работа с компилятором с открытым исходным кодом. (Я знаю, что 9e5 - это неясное устройство и мало используется, но, возможно, кто -то другой делает устройство 433 МГц с MCU)

JCW
Вт 3 ноября 2015 г., 23:14
Все станет яснее, я надеюсь, что после того, как код существует, и я могу описать рабочий процесс, который приводит к.

Нет, это не для загрузки OTA через Wireless, которые действительно на моем радаре. Это также потребуется загрузчик, но я буду использовать совершенно другой механизм для этого. Этот код существует, но все же должен быть адаптирован к STM32. На данный момент мне сначала нужно узнать, как работают загрузки на STM32, и стараюсь понять достаточно (но не более) USB, чтобы заставить вещи работать.

Похоже, что драйвер USB LiboPencm3 (такой же, как и в BMP), вероятно, может быть использован в режиме прерывания, так что я собираюсь придерживаться этого на данный момент.

Rogerclark
Ср. 04 ноября 2015 г. 12:34
Похоже, что драйвер USB LiboPencm3 (такой же, как и в BMP), вероятно, может быть использован в режиме прерывания, так что я собираюсь придерживаться этого на данный момент. Libopencm3 гораздо более обновлен, чем код, который использует текущий загрузчик, поэтому я думаю, что это хороший выбор

JCW
Чт, 05 ноября 2015 г. 12:01
Я сообщаю об этом здесь, хотя это затрагивает другую ветку, о необходимости называть сериал.начинать () в эскизе - ViewTopic.PHP?f = 3&t = 703

Да, серийный USB должен работать & Прилагается, чтобы он взял запрос на сброс (я назову его «трюком на клено»). Это также может означать, что любой, кто использует другой режим USB, такой как HID или MEM Disk, столкнется с этой же проблемой.

Это одна из проблем, которые, как я надеюсь, может решить загрузочный загрузочный загрузчик, не вытекающий в решающем номере

* При сбросе загрузочный загрузчик устанавливает USB -сериал
* Когда заработает эскиз, он продолжает использовать USB -драйвер загрузчика загрузчика
* Мы установили сторожевой плетение и запускаем его основным, сразу после каждого вызова top (), например, например,
* Таким образом, застрявший набросок будет сброшен, может быть, даже периодически
* Каждый раз загрузчик загружается и повторно входит в USB-сериал, и в течение некоторого времени ждайте запросов на загрузку
* Серийный драйвер USB продолжает реализовать трюк Maple

Что это сделало бы, так это то, чтобы время от времени входила в последовательный режим USB, даже если эскиз вылетает. С временем ожидания на стороже от 5 секунд, и с загрузчиком, ожидающим по крайней мере одну секунду для входящей загрузки-/Reset-REQ, это означает, что плата должна быть в состоянии заменить неисправный набросок не менее 20% случаев. Наконец, если бы загружатель на стороне ПК продолжил бы пытаться в течение не менее 6 секунд, это гарантированно будет успешным.

По -прежнему существуют режимы отказа, где это может быть недостаточным (поддерживать сторожевой пейзаж, пока драйвер USB не функционирует должным образом), но, надеюсь, это будет значительно меньше. В этом конечном случае, постоянный трюк режима загрузки все еще понадобится, но это могло бы быть ручным джамперским вилочным действием, как и последнее средство.

Двумя ключевыми моментами, которые сделают эту работу, являются: 1), что загрузочный загрузчик сначала получает управление и не может быть легко поврежден (так как это не является частью загруженного кода), и 2), что сброс сторожевого пса начинается за наброски, которые находятся в серьезные проблемы (e.глин. разбитый, прерывает отключен, бесконечный петлей).

Все это на данный момент. Во -первых, должен быть работающий серийный процесс загрузки. Я все еще много шагов от этого.

Rogerclark
Чт, 05 ноября 2015 г. 1:10
@JCW

Я думаю, что добавление WDT вызовет всевозможные проблемы, если только люди не знают, что он работает, и вам не нужно кормить его.

я.E вам нужно было бы накормить функцию WDT в функции Delay () (я должен был сделать это в какой -либо другой прошивке, поскольку я понял, что первоначальный автор не принял во внимание, что кто -то назвал бы свою функцию задержки со значениями как большие как 1 секунда). Я знаю, что это легко добавить.


Кроме того, вы полагаетесь на людей, использующих Setup () и Loop () в предписанном манере. Я лично не всегда удосужиюсь использовать цикл, я иногда просто ставлю
while(1) { // mycode goes here }

Mrburnette
Чт, 5 ноября 2015 г. 1:34
JCW написал: <...> * При сбросе загрузочный загрузчик устанавливает USB -сериал
* Когда заработает эскиз, он продолжает использовать USB -драйвер загрузчика загрузчика
* Мы установили сторожевой плетение и запускаем его основным, сразу после каждого вызова top (), например, например,
* Таким образом, застрявший набросок будет сброшен, может быть, даже периодически
* Каждый раз загрузчик загружается и повторно входит в USB-сериал, и в течение некоторого времени ждайте запросов на загрузку

JCW
Чт 5 ноября 2015 г. 1:38 утра
Я просто пытаюсь придумать решение, чтобы сбежавший эскиз можно заменить новым, когда USB не работает. Это кажется одним из способов сделать это.

Идея состоит не в том, чтобы подавать IWDG в коде пользователя (лучше не на самом деле, чтобы избежать «ложной» безопасности), но на заднем плане. Arduino Loop () сработает, даже если вы оставите его пустым, особенно в сочетании с задержкой () в остальной части кода. Другие полезные места могут быть доступны для сериала + read + write. Все это не требует изменений в набросках пользователей.

Есть несколько способов держать IWDG в страхе, я.эн. Мы могли бы накормить его из USB -прерывания или из прерывания Systick (после того, как он проверил столько, сколько может, чтобы USB работает должным образом).

Я не думаю, что трудно объяснить людям, что им нужно периодически вызывать либо «задержка ()», либо «доход ()» в любом коде, который может занять более 2..3 секунды. Большинство людей в любом случае будут использовать задержку () повсюду. И иметь контроль над сторожей - это хорошая практика, стоит разоблачить, ИМО.

Mrburnette
Чт 5 ноября 2015 г. 1:46 утра
JCW написал: <...>
Я не думаю, что трудно объяснить людям, что им нужно периодически вызывать либо «задержка ()», либо «доход ()» в любом коде, который может занять более 2..3 секунды. Большинство людей в любом случае будут использовать задержку () повсюду. И иметь контроль над сторожей - это хорошая практика, стоит разоблачить, ИМО.

JCW
Чт 5 ноября 2015 г. 1:55 утра
Да, я понимаю риск. Но весь код делает что -то, и наивный код будет все время называть библиотечные материалы (даже просто цифровой писатель) - возможно, мы сможем определить несколько мест, где мы вставляем доход () во время выполнения сами?

Если ничего не удастся, это предупреждение, возможно, может быть добавлено в раздел устранения неполадок:
«Если ваш код продолжает начинать без веской причины, вставьте hield () в основные циклы в вашем коде»

Я не говорю, что это тривиально. Но я не понимаю, почему было бы невозможно разрешить под капюшоном.

JCW
Чт, 5 ноября 2015 г., 1:58 утра
Mrburnette написал:Обдумывая изменения в функциональности, я настоятельно рекомендовал бы не забрать парадигму Arduino слишком далеко от материнского корабля.

JCW
Чт, 05 ноября 2015 г., 2:07
Хорошо, вот вариант Bare Cones из моих оригинальных примечаний: обработчик Systick держит IWDG в страхе.

Это само по себе должно справляться с самыми серьезными авариями и такими вещами, как отключение прерываний слишком долго. Затем, когда мы получаем больше понимания, мы можем добавить в Systick больше Smarts, так что, скажем, однажды за секунду, это проверяет, действительно ли управляющий USB -драйвер работает как предполагаемое.

Механизм Systick является частью текущего фольклора Arduino (ну, прерывание прерываемого времени), а сторожевой пейзаж не добавляет ощутимых эффектов времени выполнения, если он не уволен.

Mrburnette
Чт, 05 ноября 2015 г., 2:20 утра
JCW написал:Хорошо, вот вариант Bare Cones из моих оригинальных примечаний: обработчик Systick держит IWDG в страхе.
<...>
Механизм Systick является частью текущего фольклора Arduino (ну, прерывание прерываемого времени), а сторожевой пейзаж не добавляет ощутимых эффектов времени выполнения, если он не уволен.

Стевех
Чт, 5 ноября 2015 г., 6:45
Можно избежать боли загрузчика, используя STM32FXXX, который имеет загрузчик в ROM, E.глин., F3, F4 может загружаться из серийного, USB, а в некоторых случаях Can и SPI.

Rogerclark
Чт, 5 ноября 2015 г. 8:41
F1 может загружать через последовательный загрузчик (аппаратный загрузчик), но для этого требуется внешнее оборудование.

F3 и F4 имеют USB DFU Bootloaders в своем оборудовании, но, поскольку большинство низких / (экономичных) плат основаны на F103, это обычно исключает использование аппаратного загрузчика

JCW
Чт 05 ноября 2015 г., 16:45
Хорошо, я совсем не уверен, что это лучший путь, но вот пример того, как STMF103 принял шестнадцатеричный файл Intel, отправленный в него через «Avrdude» над USB -сериалом, используя формат STK:
$ avrdude -p m328p -c arduino -VeF -U test.hex -P /dev/cu.usbmodem2441 avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x141516 avrdude: Expected signature for ATmega328P is 1E 95 0F avrdude: erasing chip avrdude: reading input file "test.hex" avrdude: input file test.hex auto detected as Intel Hex avrdude: writing flash (464 bytes): Writing | ################################################## | 100% 0.61s avrdude: 464 bytes of flash written avrdude: safemode: Fuses OK (E:01, H:19, L:19) avrdude done. Thank you.

Рик Кимбалл
Чт, 05 ноября 2015 г., 17:03
:) .. это просто неправильно ...

JCW
Чт, 05 ноября 2015 г., 18:22
Хех. Что ж, учитывая, что серийные загрузки в стиле ROM для STM32 уже поддерживаются в IDE, вероятно, имеет больше смысла реализовать нативный протокол STM для USB и для USB. Я просто хотел попробовать это...

Mrburnette
Чт, 5 ноября 2015 г., 19:25
Я видел взломан на днях для другого не AVR UC, ESP8266, я думаю, но не задумывался в то время.

Луча

Rogerclark
Чт, 5 ноября 2015 г., 20:52
RedBearlab Используйте технику Avrdude, но Они используют внешний (Freescale) процессор.

Я думаю, это экономит их необходимость поддерживать загрузку S/W.

Но так как все наши загрузки S/W работает нормально, я лично предпочитаю DFU, потому что Afik это бинарный протокол

JCW
Чт, 5 ноября 2015 г., 21:21
Rogerclark написал:... Потому что Afik это бинарный протокол

Rogerclark
Чт, 5 ноября 2015 г., 21:26
В любом случае, я, вероятно, переключусь на серийный протокол STM. Есть код для этого в исходном загрузке Maple Bootloader. Последовательная загрузка ветви - но вы, вероятно, уже знаете, что

JCW
Пт 06 ноября 2015 г. 12:09
Да, спасибо. Хорошо, протокол STM на самом деле немного проще. Похоже на базовые тестовые работы (на самом деле не сохранение на вспышке, а в буфер для тестирования):
$ stm32loader.py -p /dev/tty.usbmodem1421 -ewvX test.bin Reading data from test.bin Bootloader version 0x20 Chip id 0x410, STM32F1, performance, medium-density Writing 27 bytes to start address 0x8000000 Write 256 bytes at 0x8000000 Read 256 bytes at 0x8000000 Verification OK Writing to Reset Register

Рик Кимбалл
Пт 06 ноября 2015 г. 12:16
JCW написал:Да, спасибо. Хорошо, протокол STM на самом деле немного проще. Похоже на базовые тестовые работы (на самом деле не сохранение на вспышке, а в буфер для тестирования):

JCW
Солнце 8 ноября 2015 г. 12:36
Отчет о прогрессе. И позвольте мне повторить, что LiboPencm3 хорошо разработан, IMO - прочная основа для строительства.

Теперь у меня есть первое грубое приближение загрузчика, которое распознает серийный протокол USART STM32 и обрабатывает стирание, мигание и чтение обратно. На данный момент он мигает в фиксированную неиспользованную область, поэтому он на самом деле не может запустить то, что сохранилось, но все основные части, похоже, работают: USB -серийный ввод -вывод в режиме опроса, правильная обработка протокола STM и написание флэш -память. Код только 6.До сих пор 5 кб, поэтому я ожидаю, что окончательный загрузочный погрузчик все еще подойдет в течение 8 КБ.

Еще не опубликовал источник по той глупой причине, что я не могу принять решение о том, как его назвать и где его выразить. Но я уверен, что эти препятствия могут быть преодолены с некоторыми дополнительными усилиями :)

С этим ботитным лидером, той же STM32Upload.Скрипт PY (или какой-то эквивалент) в принципе может быть использован для «реальных» загрузок на основе USART и для этого USB, но есть небольшая заглушка... Если этот загрузочный загрузчик находится в более низкой вспышке 8 кб, то наброски должны быть скомпилированы с базовым адресом выше, я.эн. 0x8002000 - как и с загрузчиком загрузки Maple. Это означало бы еще один вариант инструмента загрузки, чтобы добавить в меню IDE. Выносливый.

Это может быть разрешено с помощью загрузчика в верхней части флэш -памяти, я думаю. Но это что -то на потом.

Rogerclark
Солнце 8 ноября 2015 г. 1:01 утра
@JCW

Похоже, вы делаете потрясающий прогресс.

Я не уверен, что мы можем сделать много, чтобы преодолеть проблему меню загрузчика, но, возможно, какой -то плагин Arduino может сделать это.

Я заметил, что команда ESP8266 (IGGR), похоже, разработала плагин для управления их загрузками.

JCW
Солнце 8 ноября 2015 г. 13:04
Больше прогресса: загрузочный загрузчик теперь правильно сохраняет и запускает эскизы. Это определенно поместится в 8 кб.

Я еще не могу загрузить с IDE, хотя. По какой -то причине я получаю эту ошибку: stm32flash 0.4 Error probing interface "serial_posix" http://stm32flash.googlecode.com/ Cannot handle device "/dev/cu.usbmodemUSU1" Failed to open port: /dev/cu.usbmodemUSU1 Using Parser : Raw BINARY the selected serial port does not exist or your board is not connected

JCW
Солнце 8 ноября 2015 г. 13:32
Вот как может работать цикл загрузки - может быть:

* Хост утверждает DTR Low
* Target USB -драйвер обнаруживает это и входит в загрузочный загрузчик
* Отключить все прерывания, останавливая все, что мог делать эскиз
* (Есть ли простой способ сбросить все периферийные устройства I/O + DMA, чтобы помешать им делать вещи?)
* Не повторно введите / повторно размер USB-устройства с нуля
* Хост начинает загружать, используя серийный протокол STM
* Target выполняет загрузку в соответствии с запросом, защищая загрузочный загрузчик от перезаписи
* Хост заканчивается с помощью запроса сброса/начала
* Target выполняет самостоятельную сдачу (с некоторым флагом в RAM для обнаружения этого случая?)
* Цель запускается с загрузчика снова
* Целевое устройство снова устанавливает USB-устройство (вероятно, будет повторно вытекает)
* Поскольку это запрашиваемый сброс, загрузчик загружается и запускает эскиз пользователя

Есть некоторые потенциальные проблемы с этим, но я стараюсь обойти тот факт, что повторное возмещение занимает немного времени. Я не уверен, что полный сброс делает для процесса загрузки-было бы проще просто сбросить на DTR Assert, а затем повторно вытереть, дождитесь повторного применения, загрузки и запуска все в одной последовательности. Это так, как LPC21ISP работает для чипов NXP (только UART), и он позволяет загрузке одной утилиты, а также превратить себя в консоль терминала серийного порта.

Восстановка всегда находится от последовательной к последовательной конечной точке, поскольку здесь вообще нет режима DFU, но это все еще означает, что текущий сеанс терминала будет насильно закрыт. Что утомительно, когда у вас есть сеанс экрана/замазки, например, во время разработки, например,.

Если был способ повторно вводить все аппаратное обеспечение µc кроме USB, жизнь была бы намного проще. Вероятно, невозможно?

Mrburnette
Солнце 08 ноября 2015 г. 14:32
JCW написал: <...>
Интересное свойство заключается в том, что загрузочный погрузчик вообще не использует прерывания, ему нужно только инициировать и опросить USB, чтобы выполнить работу. Итак, по сути, эскиз начинается так, как будто выходит из сброса, за исключением того, что есть прикрепленное USB -устройство, которое, надеюсь, набросок может зацепиться - возможно, оно может проверить это и условно повторно использовать открытое соединение, или просто init usb как это всегда делалось до сих пор.
<...>

JCW
Солнце 8 ноября 2015 г., 18:58
Спасибо :)

Rogerclark
Солнце 8 ноября 2015 г. 8:08 вечера
Жанклад

Была проблема с STM32Flash, где ей не нравились имена некоторых серийных устройств.

Я думал, что я сделал исправление для этого. Я забыл, где он находится в коде, но он проверяет / проверяет имя порта (только имя)

Вы можете попробовать комментировать этот код и восстановить.

Редактировать.

Извини. Похоже, я уже достал этот чек

https: // github.com/rogerclarkmelbourne/ ... 550E3AFE01

Вы можете просто попробовать восстановить его.

(Я предполагаю, что вы используете двоичный файл в моем репо, а не в каком -то другом, так как у оригинальной версии также были и другие проблемы)

Rogerclark
Солнце 8 ноября 2015 г., 8:38 вечера
Смотрите эту ветку

ViewTopic.PHP?t = 376

JCW
Солнце 8 ноября 2015 г. 9:02 вечера
Ага, спасибо - это интересно. Я вижу что -то еще, что мешает моим предположениям: IDE звонит .../serial_upload на Mac OSX, который представляет собой сценарий оболочки, устанавливающий Baudrate на 230400 ISO 115200, и адрес загрузки на 0x08000000, тогда как этот новый механизм загрузки требует 0x08002000.

Это не вся проблема, но определенно также что -то актуальное для этого загрузчика.

Нет никакой гарантии, что у нас есть Python, доступный в IDE, я предполагаю.
Хм... Может, я переписаю загрузчик в ходе :)

JCW
Солнце 8 ноября 2015 г., 21:05
Rogerclark написал:(Я предполагаю, что вы используете двоичный файл в моем репо, а не в каком -то другом, так как у оригинальной версии также были и другие проблемы)

Rogerclark
Солнце 8 ноября 2015 г., 21:17
Вы можете пройти в параметрах из досок.TXT через платформу.TXT в сценарий.

(как вы, наверное, уже знаете ;-)

JCW
Солнце 8 ноября 2015 г., 21:48
Спасибо - все еще справляется с досками.текст & параметры.текст ...
Теперь я могу воспроизвести сбой из линии CMD.

Ну, кажется, что - в отличие от STM32Loader.py - STM32Flash вообще не любит виртуальный USB -порт:
$ ../../../macosx/stm32flash/stm32flash /dev/cu.usbmodemD5D4C5E3 stm32flash 0.4 http://stm32flash.googlecode.com/ Error probing interface "serial_posix" Cannot handle device "/dev/cu.usbmodemD5D4C5E3" Failed to open port: /dev/cu.usbmodemD5D4C5E3

Rogerclark
Солнце 8 ноября 2015 г., 22:13
В прошлый раз, когда я выглядел, STM32Flash не был активно поддерживается, он томился на исходном обеспечении целу.

Я забыл, если бы мне пришлось исправить что -то, кроме как принимая только порты с именем tty.

JCW
Солнце 8 ноября 2015 г. 22:30
Не беспокойся. Есть некоторые различия на параметрах управления TTY, когда я игнорирую одну из проверок, STM32Flash Доходы.
Он делает еще несколько запросов на загрузчик, чем то, что он поддерживает до сих пор, поэтому необходимо добавить немного больше функциональности в.
Попасть туда...

Rogerclark
Солнце 8 ноября 2015 г. 22:41
ХОРОШО.

Всегда то же самое с разработкой S/W... Вы всегда можете получить проблемы из области, которую вы меньше всего ожидаете.

JCW
Пн, 09 ноября 2015 г., 12:12
Хорошо, получил первую загрузку теста, проходящую через IDE, используя взломанную STM32Flash. В основном отключив несколько проверок и функций.

Утилита STM32FLASH значительно более сложная, чем нам нужно, чтобы быть здесь (и не только для этого USB -серийного загрузчика, я полагаю), я). Насколько я могу судить, все, что нам нужно,-это стирание + записать в смежную область флэш-памяти, необязательный считывающий считывание для проверки, а затем прыжок на базовый адрес. И это в системах Windows и Posix, по крайней мере, для реальных и виртуальных последовательных портов.

Таким образом: помимо необходимости нажать кнопку сброса, основы загрузки и запуска эскиза через этот новый загрузчик, кажется, работают. По крайней мере, в качестве доказательства концепции. Никакой передачи серийного USB от загрузчика до эскиза, это все еще большой тодо.

Я немного размышляю вперед. Небольшой портативной среды сценариев, которая выполняет последовательный ввод -вывод, будет достаточно для этой простой задачи (E.глин. Луа, Джимткл). Основные текстовые манипуляции и запуск также могут помочь упростить доски/платформу.ситуация на TXT, хотя это немного натянут, чтобы начать менять все это. Я посмотрю на установку ESP-Aduino. Может мы сможем поделиться с ними некоторыми подходами. Жаль, что вся эта вещь Arduino Ide не немного более модульной.

Спасибо, Роджер, за вашу помощь, советы, указатели и справочную информацию - это было просто правильное микс, чтобы не дать мне застрять :)

Rogerclark
Пн, 09 ноября 2015 г., 1:03
Привет, Жан-Клод

Похоже, вы добились потрясающего прогресса.

Глядя на то, что делают парни ESP, хорошая идея. У них, кажется, есть плагин для загрузки для Arduino IDE.

JCW
Пн, 09 ноября 2015 12:27
Поговорим о протоколе загрузки на мгновение. У меня есть последовательный протокол STM32, работающий для загрузки, но это зависит от любого STM32Loader.PY (который требует установки Python) или STM32FLASH (который требует некоторых изменений, и необходимо будет переписать для Win/Mac/Lin32/Lin64).

Альтернатива состоит в том, чтобы загрузочный загрузочный загрузочный загрузчик, совместимый с STK500, как используется на чипах Atmega. Это будет означать, что «avrdude» можно использовать для загрузок, которые хорошо поддерживаются и поддерживаются, и часть стандартной установки Arduino IDE, следовательно, для нас легко для нас. Эмуляция немного сложна, так как загрузчик должен игнорировать такие вещи, как «предохранители», и сообщать о себе как о каком -то фальшивом avr µc, который будет принят Avrdude.

Инструменты, такие как Avrdude, STM32Flash и т. Д. Решение важной проблемы общения с последовательными устройствами в необработанном режиме, в Windows, Mac и Linux.

Оооочень... Что если загрузочный загрузчик действительно принял протокол STK500 для загрузки? Серьезно. Что будут недостатки?

И пока я в этом: почему мы не можем избежать всей проблемы выбора правильного типа чипа, размера памяти, модели платы, вручную? Почему мы не можем просто выбрать последовательный интерфейс и спросить прикрепленную плату, какой он тип µc и какой тип платы даже? Было бы тривиально для загрузчика сообщать об этом. Разве мы не должны выходить из каменного века уже? :)

Mrburnette
Пн, 09 ноября 2015 г., 13:37
JCW написал: <...>
И пока я в этом: почему мы не можем избежать всей проблемы выбора правильного типа чипа, размера памяти, модели платы, вручную? Почему мы не можем просто выбрать последовательный интерфейс и спросить прикрепленную плату, какой он тип µc и какой тип платы даже? Было бы тривиально для загрузчика сообщать об этом. Разве мы не должны выходить из каменного века уже? :)

JCW
Пн, 09 ноября 2015 г., 14:05
Спасибо, Рэй - много поддержки в ваших комментариях, откуда я стою...

Я сражался с цыпочками и яйцами в течение многих лет. Сначала на чипсах Atmega, и теперь весь цирк снова на STM32.

Если бы мы могли уладить, скажем, до 3 плат, чтобы люди могли бы использовать в качестве «установщиков загрузчика», а затем страница в Интернете с точной информацией о том, как подключить вещи, чтобы установить (над сериалом на основе ПЗУ) конкретный загрузочный загрузчик на а второй Правление было бы осуществимым. Это становится запутанным, но скажем, что вы принимаете стандартный Arduino Uno, подключите его с несколькими проводами с вашей собственной платой (STM32, LPC, что угодно), поместите свою собственную плату в режим серийной загрузки и загрузите специальный набросок установщика через IDE к Uno. После этого ваша собственная плата заканчивается подходящим загрузчиком (который может быть любым из многочисленных типов, Maple DFU, USB Serial, Wireless и т. Д.).

Я прошел через этот беспорядок несколько раз, важной задачей IMO является в конечном итоге с краткими и четкими инструкциями.

Единственное, что нам нужно, это легкий отправная точка, я.эн. Доска, поддерживаемая IDE, с несколькими запасными выводами ввода -вывода.
Это неизбежная часть: вам нужна одна плата для установки загрузчика на второй.
Но я хотел бы подчеркнуть, что им не нужно быть прежним. Оно может запрограммировать Maple Mini просто отлично.

Чтобы перефразировать: какие дешевые доски работают, которые работают в IDE вне коробки? Какие из них действительно распространены?

(Этот же подход также может быть использован для установки BMP Build Rick на большинстве STM32F103C8, кстати)

Рик Кимбалл
Пн, 09 ноября 2015 г., 16:52
Если загрузчик достаточно мал, возможно, вы могли бы сделать эскиз Arduino, который содержит двоичный файл загрузчика в виде массива байтов.

Эскиз займет эти двоичные байты и загрузит их через серийный загрузчик на основе ROM STM32. Поскольку это эскиз, который будет использовать только последовательную связь и контакты GPIO (чтобы переключить чип в режим загрузки), будет легко переносить на любую плату, работающую с портом Arduino. Это может быть доска Arduino, Teensy, STM32, Texas Instruments .. и т. д

-рик

JCW
Пн, 09 ноября 2015 г., 17:23
Да, точно. Мог бы сделать это с 2 долларами.30 Arduino Nano Clone от eBay, например,.
И необязательно изменить код немного, скажем, чтобы добавить идентификатор типа платы перед его прошивением.
Есть также уникальный H/W ID в каждом µC, его можно использовать для различения нескольких единиц.

Это 2 байта µc тип (0x410 и т. Д.), 2 байт идентификатор платы, 12 байтов H/W id = 16 байт "Tag".
Загрузчик может сообщить об этом для чтения с какого -то «невозможного» адреса, возможно,.

-JCW

Mrburnette
Пн, 09 ноября 2015 г. 8:10 вечера
JCW написал:Да, точно. Мог бы сделать это с 2 долларами.30 Arduino Nano Clone От eBay, например.
<...>

Rogerclark
Пн, 09 ноября 2015 г., 21:12
Мне удалось прошить загрузчик, используя UNO, но это было больше от Fluke, чем дизайна.

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

Я обнаружил, что если я установлю скорость бода на 56 тыс. И использую настройки по умолчанию в сериале программного обеспечения, я мог бы использовать UNO в качестве серийного моста.
Но медленнее или более высокие скорости не сработают.

Я подумал, что есть ли способ заставить ООН вести себя как зонд черной магии и подключиться через SWD, но у меня не было времени, чтобы продолжить изучать это.

Существует также возможность обновить загрузчик, используя эскиз, который содержит двоичный файл нового загрузчика (в качестве массива).

У нас это уже есть, но это работает (на данный момент), только если новый загрузчик не больше, чем старый. В противном случае вы в конечном итоге перезаписываете эскиз, который прошивает загрузчик.

КСТАТИ. Кроме того, RedBearlab используйте Avrdude в качестве программы загрузки для своих совместимых с Arduino, и реализовать протокол в MCU (я не могу вспомнить, что они используют, но это не STM32)


У меня нет никаких проблем с использованием Avrdude, на самом деле это отличная идея, но заставить людей изменить предварительно установленный загрузчик в Maple Mini, может быть борьбой в гору.

JCW
Вт 10 ноября 2015 г. 10:20 утра
Чтобы продолжить свой собственный пост: Какие дешевые доски, которые работают в IDE вне коробки? Какие из них действительно распространены? Доски, которые я вижу как наиболее подходящие для превращения в «загрузку загрузчика» (Bolobo?) являются:

* Arduino uno
* Nucleo F103RB
* Maple Mini

Все они должны работать с Arduino IDE из коробки, поэтому, если у вас есть один из них, и загрузите к ним еще еще написанный набросок, вы сможете загрузить загрузчик в свою собственную цель выбора (по крайней мере, для STM32F10x мкс). Это будет использовать серийный загрузочный загрузчик на основе ПЗУ STM32.

Ему нужно 3 провода для целевой платы (RX/TX/GND) и описание, как вручную поместить целевую плату в соответствующий режим загрузки.

Было бы неплохо иметь несколько версий этого эскиза, E.глин. Один с текущим загрузочным загрузчиком Maple v2, и один с новым USB -серийным погрузчиком, над которым я работаю (оба менее 8 КБ). На досках с Flash не менее 128 КБ, третьим полезным вариантом IMO, была бы версия, которая мигает BMP Build Rick.

Приключение продолжается...

Rogerclark
Вт 10 ноября 2015 г. 10:31
UNO или его предшественник, вероятно, наиболее широко используются из Arduino Poards

Я бы порекомендовал вам сосредоточиться на получении надежного способа прошить загрузчик, используя эту плату.

Тем не менее, я не уверен, что это будет так просто из -за отсутствия контроля паритета с сериалом Software Serial.

Вы, конечно, можете использовать аппаратный сериал на UNO, но вы теряете отладка на ПК, если вам нужно это использовать.

Люди могут, конечно, купить USB в размере 3 доллара США, но я согласен, что если бы мы могли перепрофировать, используя аппаратные люди, которые уже есть, это было бы проще.

КСТАТИ. Если вы рассматриваете возможность использования Maple Mini, чтобы прошить другую плату, я думаю, что использование BMP может быть одним из вариантов.

Я смотрю на создание версии BMP, которая загружена существующим загрузчиком в Maple Mini в адрес 0x8005000 (на случай, если у них есть старый загрузчик в Maple Mini)

Я нахожусь в процессе разбивания BMP и добавления GD32, но выполнение мини -версии Maple будет следующей в моем списке, но векторный таблица и сценарий линкера должны быть изменены, и ее 3 -е место в моем списке приоритетов для BMP.

1) GD32 в моем репо
2) двоичные файлы для GD32 в моем репо
3) Generic STM32 в моем репо (на основе J66_coreboard Рика)
4) двоичные файлы для J66 в моем репо
5) Maple Mini без загрузки
6) Maple Mini с существующим загрузчиком


Однако у меня не было много времени, чтобы поработать над этим сегодня, так как сегодня я помог Рику с его вещами NRF51822 сегодня, и это был напряженный день с работой, и я не «ночная сова» ;-)

Так что нужно будет подождать до завтра

Но если вы сделаете Maple Mini Version of BMP, особенно та, которая работает с существующим загрузчиком, в ближайшие 10 часов, дайте мне знать, так как это спасет меня ;-)

JCW
Вт 10 ноября 2015 г. 12:40
Rogerclark написал:Тем не менее, я не уверен, что это будет так просто из -за отсутствия контроля паритета с сериалом Software Serial.

ZMEMW16
Вт 10 ноября 2015 г., 18:27
Почему это должно быть быстро для потенциально только когда -то?
После этого у вас есть яйцо.

Так что, может быть?

Стивен опускается за большую стену. : D

JCW
Вт 10 ноября 2015 г., 19:19
Бит-разбившаяся отправка легко, это прием, который более хитрый. И это именно то, что делает Softwareserial.

Я взломал модифицированную версию Softwareserial, которая посылает даже четность, и игнорирует входящий дополнительный бит паритета.
Получение этого в конце. Вот вывод из эскиза Atmega328:
[stm32f1init] boot-usbSerial-v01.h (When you see a question mark, RESET your TARGET board!) Connecting? .. OK Boot version: 0x22 Chip type: 0x410 Unprotecting: OK Resuming? ...... OK Erasing: OK Writing: ........................... OK Done: 6661 bytes uploaded.

JCW
Вт 10 ноября 2015 г., 19:40
Mrburnette написал:Только что сэкономил вам 0 долларов.40: http: // www.aliexpress.com/оптом?профиль ... 2341832857

Rogerclark
Вт 10 ноября 2015 г., 19:53
ммм

Эта ссылка просто приводит меня к поиску на aliexpress.

Продукт все еще активен?


@JCW

Молодец, чтобы взломать SW Serial, чтобы сделать даже паритет.

Я не думаю, что есть какое -то вред.
Единственная доска, которую я пришел, который был защищен !!

Но мне нужно было сделать это только один раз.

Я не уверен, что для кого -то так важно понадобиться USB для серийного преобразователя или даже Stlink.
Правление STM32 станет для них новой доской, и если они проводят какое -либо исследование, они будут знать, что если это не Maple Mini, им нужно прошить прошивку.

Ну, нет, я полагаю, у нас есть люди на этом форуме, которые купили синюю таблетку и т. Д., Поскольку поставщик заявил о совместимости Arduino, но без загрузки.

Но я не думаю, что это много, чтобы попросить купить USB для сериала.

Одна вещь, которую вы можете рассмотреть, это обновление загрузчика на Maple Mini через эскиз.
У нас уже есть это, чтобы обновить из старого загрузчика Maple Bootloader.

Но это сработало бы только в том случае, если бы вы новый загрузчик не был больше, чем существующий

JCW
Вт 10 ноября 2015 г., 8:14
Код здесь - https: // github.com/jeelabs/emello/ree ... tm32f1init - Документы следовать позже на этой неделе.
Одна вещь, которую вы можете рассмотреть, это обновление загрузчика на Maple Mini через эскиз.
У нас уже есть это, чтобы обновить из старого загрузчика Maple Bootloader.
Будет много разных способов обновления & Замените загрузки, я ожидаю. И еще больше, без сомнения.
Но мы должны быть осторожны, ИМО - это та «способность», которая может сильно запутать новичков.
Этот конкретный (теперь называемый «STM32F1Init») на самом деле подразумевается только как последнее средство или когда вы начинаете с ничего.

Впереди, на следующий уровень!

JCW
Вт 10 ноября 2015 г., 8:21 вечера
Rogerclark написал:Но я не думаю, что это много, чтобы попросить купить USB для сериала.

Рик Кимбалл
Вт 10 ноября 2015 г., 20:33
JCW написал:Код здесь - https: // github.com/jeelabs/emello/ree ... tm32f1init - Документы следовать позже на этой неделе.

JCW
Вт 10 ноября 2015 г., 20:47
Да, я обязательно опубликую это - но новый USB -серийный загрузчик не является эскизом, это проект LiboPencm3 с MakeFile.
И пока это только незначительный.

У меня есть небольшой инструмент "bin2h", чтобы превратить любой бинарный файл в .H Файл, подходящий для этой утилиты STM32F1Init.
Идея состоит в том, чтобы собирать файлы заголовков и вставить правильный в эскиз.
Я добавлю заголовок загрузчика Maple v3.

Вот "bin2h.C "Код, который я использую на OSX (также должен работать на Linux). Вставлено ниже на данный момент:
// Convert a binary file to a format usable as data inside C source code. // -jcw, 2015-11-09 #include int main (int argc, const char** argv) { if (argc != 2) { fprintf(stderr, "usage: bin2h infile >outfile\n"); return 1; } FILE* inf = fopen(argv[1], "rb"); if (inf == 0) { perror(argv[1]); return 2; } int width = 0; while (!feof(inf)) { width += printf("%d,", fgetc(inf)); if (width > 75 || feof(inf)) { putchar('\n'); width = 0; } } return 0; }

JCW
Вт 10 ноября 2015 г., 20:52
Ооо, MSP430 LaunchPad был бы хорош, тонны тех, кто в ящиках людей, я полагаю.
Сколько свободной вспышки у него? Если места достаточно, вы можете спрятать изображение BMP.

Рик Кимбалл
Вт 10 ноября 2015 г., 21:01
JCW написал:Ооо, MSP430 LaunchPad был бы хорош, тонны тех, кто в ящиках людей, я полагаю.

Rogerclark
Вт 10 ноября 2015 г., 21:24
Жанклад

На форуме определенно есть люди, которые способны создавать с помощью Makefile и т. Д

Я могу подумать, если по крайней мере 3 или 4 человека сразу.

Я могу проверить компиляцию в Windows 7, если хотите, как и моя основная ОС (хотя я запускаю OSX и Linux)

JCW
Вт 10 ноября 2015 г., 21:36
Ой - я не сомневался в этом на одну секунду! Извините, я слишком долго был в мышлении "для нуба".

Хорошо, я подумаю об имени и месте, чтобы выразить это. Каким -то образом, «USB -серийный загрузчик» не вырезал, я думаю :)
Я не пытался сохранить это при себе. Сообщит здесь, как только он в Интернете.

Между тем, я добавил двоичные данные для Maple Boot 2.0 к STM32F1Init. Непроверенный.

И да, у меня наконец-то есть доска, какая кленовые буготы, как и следовало бы здесь: Std "Baite" Maple Mini Mini, как предварительно загруженный.
Единственная причуда в том, что мне, кажется, нужно нажать кнопку сброса после загрузки. В противном случае хорошо, также сбрасывает/переплетение.

Обновлять - В этом есть нечто большее, чем USB -серийный загрузок, для того, чтобы заставить вещи на самом деле работать: ей также нужна новая запись для составления набросков при смещении 8 КБ (например, Maple, по крайней мере, на данный момент). И STM32Flash должен быть настроен, чтобы поговорить с устройством CDC-ACM. Хм... Отсутствие накапливается :(

Rogerclark
Вт 10 ноября 2015 г., 22:13
Хм... отставание накапливается :( Я знаю чувство ;-)

JCW
Ср 11 ноября 2015 г. 1:07
Эскиз STM32F1Init теперь также компилируется НА STM32F103 мкК, используя сериал H/W с четной паритетом H/W.
Хорошо... По крайней мере, он запускается на Maple Mini и Nucleo F103, что означает те, кто мог Также использоваться в качестве настройки загрузки загрузки.
Еще не пытался подключить ни одну из этих досок к цели, хотя.

Наконец, я преобразовал бинар BMP -JC66, так что с некоторой удачей это теперь также можно вспыхнуть - эскиз должен соответствовать F103XB.
Опять же, непроверенный, но это там для смелой/ранней/авантюрной души/птицы/усыновителя, который хочет попробовать.
Единственное недостающее звено - это выяснить соединения проводки между платами STM32F1Init и целевыми платами, я думаю.

Если вы попробуете это, дайте мне знать, как это происходит. Хотел бы задокументировать пару этих сценариев в ближайшие несколько дней.

JCW
Ср 11 ноября 2015 г. 14:12
Похоже, что сборки рук еще не совсем работают. Я пробую это на нукле F103:
[stm32f1init] boot-usbSerial-v01.h (When you see a question mark: RESET your TARGET board!) Connecting? . OK FAILED - got 0x1F

Рик Кимбалл
Ср 11 ноября 2015 г., 16:42
Вместо того, чтобы нажать кнопки пользователя, может ли эскиз переключать Boot0 и сброс контактов?

JCW
Ср 11 ноября 2015 г., 16:59
Я ожидаю, что STM32F1Init будет для использования в основном, но конечно.

Просто чтобы подтвердить: эскиз тянет B0 Low, кратко сбрасывается, загружается, вытягивает B0 и снова переключает сброс, чтобы начать цель?
Я, вероятно, могу справиться с этим :) - ему нужны еще два провода и соответствующая документация, но их использование может оставаться необязательным.

Рик Кимбалл
Ср 11 ноября 2015 г., 17:05
JCW написал:Я ожидаю, что STM32F1Init будет для использования в основном, но конечно.

Просто чтобы подтвердить: эскиз тянет B0 Low, кратко сбрасывается, загружается, вытягивает B0 и снова переключает сброс, чтобы начать цель?
Я, вероятно, могу справиться с этим :) - ему нужны еще два провода и соответствующая документация, но их использование может оставаться необязательным.

JCW
Ср 11 ноября 2015 г., 17:27
MSP430G2553, я предполагаю? Это не так много барана. Был бы аккуратно, хотя. Да, светодиоды тоже были бы полезны.

Рик Кимбалл
Ср 11 ноября 2015 г., 17:49
JCW написал:MSP430G2553, я предполагаю? Это не так много барана. Был бы аккуратно, хотя. Да, светодиоды тоже были бы полезны.

JCW
Ср 11 ноября 2015 г. 18:09
Отлично, я добавил светодиодную опцию и линии управления ISP + Reset. Последние в GitHub.
Буду рады добавить поддержку MSP в это, просто отправьте запрос на привлечение.

РЕДАКТИРОВАТЬ - СВОЙСТВЕННАЯ СВОБОДА МИРИНКА, В ATMEGA: 0.25 Гц = попытка подключиться, 1 Гц = Программирование, 5 Гц = ошибка, устойчиво = сделано.

Рик Кимбалл
Ср 11 ноября 2015 г., 18:25
Как насчет абстрагирования кода журнала... #ifdef __msp430__
#Define Target Serial
#define LED_PIN P1_6
#define reset_pin p1_5
#define isp_pin p1_4
#define log_begin (s)
#define log_print (s)
#define log_println (arg1, ...)
#define log_flush ()
#elif arduino_stm_nucleo_f103rb
#define log serial1
#Define Target Serial
... Реализуйте реальную регистрацию во втором устройстве
#еще
#define log serial
#define Target Serial1
... Реализуйте реальную регистрацию во втором устройстве
#endif

JCW
Чт 12 ноября 2015 г. 1:14
Первый коммит USB -серийного загрузчика теперь здесь: https: // github.com/jeelabs/emello/ree ... S/USBSerup
Нужно небольшое изменение в STM32Flash, которое будет представлено в качестве PR на GitHub позже.

Это требует дополнительной записи в досках.TXT (можно избежать, перемещая загрузчик на высокую вспышку, но это немного больше работы).
Текущий код эмулирует минимальное подмножество протокола загрузки STM USART, i.эн. Совместим с загрузчиком ROM's ROM.
Если это заменяется режимом Avrdude-STK500, то STM32Flash & Патч больше не понадобится.

JCW
Сб 14 ноября 2015 г. 9:30
Инструкции по сборке для USBERUP изменились. Вам больше не нужна старая копия Libopencm3, см. Readme.

Немного размышляя обо всех маленьких деталях, чтобы сделать этот новый загрузочный загрузчик практичным, вот ключ Todo, я думаю:

* Переключитесь на протокол STK500, поэтому загрузки можно сделать с помощью Avrdude
* Поместите загрузочный код в высокую панель, чтобы наброски можно загрузить по телефону 0x08000000, как обычно
* Слушайте низкий уровень DTR и RTS, чтобы действовать в качестве запроса на самоопределение (если возможно, необходимо расследовать)
* Найдите способ загруженного эскиза для повторного использования открытого серийного соединения

Этот последний на самом деле не является обязательным. С эскизом, который просто повторно внедряет USB-устройство, все уже работает. И если этот эскиз также включает в себя логику для прослушивания DTR+RTS, то он сможет самостоятельно снимать, как это делает загрузчик Maple Booter. Больше нет нажатия кнопок, что было одной из целей для всего этого.

С приведенными выше изменениями необходимо добавить новый метод загрузки, называемый «Serial (Avrdude)». Поскольку смещение нагрузки исчезнет, ​​тот же код может также быть загружен с использованием Serial, ST-Link или BMP. Единственная разница в IDE заключается в том, какой транспорт используется для получения кода в µC. Это сделает настройки сборки и настройки загрузки независимыми (ортогонально).

В Avrdude есть интересная функция подключиться к удаленному сетевому порту и загрузить эскиз там. Может, однажды мы тоже сможем сделать это. Я использовал загрузки на основе сокетов в других контекстах и ​​фактически «ESP-Link» (https: // github.com/jeelabs/esp-link) проект также поддерживает его.

JCW
Пт 27 ноября 2015 г. 14:46
Вот обновление с фронта серийного погрузчика USB.

Погрузчик "USBSerup" теперь находится в конце флэш -памяти. Это означает, что одни и те же наброски должны работать независимо от того, как они загружаются (серийный, USB -серийный или BMP), потому что все они могут быть скомпилированы одинаково: загружены на обычный базовый адрес Flash 0x08000000.

Есть какая -то хитрость, чтобы заставить эту работу, увидеть https: // github.com/jeelabs/emello/ree ... S/USBSerup

Другая часть головоломки в том, что вам нужен способ правильно установить USBERUP. Я написал небольшой эскиз, который делает это, смотрите https: // github.com/jeelabs/emello/ree ... nstallboot - Вы можете использовать любой метод загрузки, который у вас в настоящее время есть в вашем распоряжении.

В двух словах: с этой версией USBSerup вы можете нажать сбросить и загрузить свой эскиз по USB, используя метод «последовательного».

Это далеко не сделано. Черт возьми, это почти непроверено, даже. Необходимость нажимать сброс - это шаг назад w.ведущий.Т. Maple Loader, поэтому нет точки зрения использования этого загрузчика, если это работает для вас. Следующим в списке является разрешение запуска сброса через USB (я стремлюсь обнаружить рельем DTR-Low, как и в случае с платами AVR Type Arduino).

Хотел бы услышать от кого -то, кто пробует это (пожалуйста, имейте в виду, что Usbeserup будет заменять Какой бы загрузочный погрузчик у вас был!).

ZMEMW16
Пт 27 ноября 2015 г., 17:52
Я могу найти по одному из Mini Bate Mini, красные таблетки и синие таблетки, не установлены булавки, то есть еще не припаянный.
также то же самое снова, но припаянное, содержимое неизвестно.
У меня также может быть пара RBT/RCT, Vet и Zet Boards.

Я обычно использую SW-Link для программирования

Достаточно мрачный эскиз или есть еще что -нибудь еще нужно?

Каковы были бы ваши ожидания в отношении результатов?

Стивен

JCW
Пт 27 ноября 2015 г. 18:17
Да, мигай должен быть в порядке, как тест.

Пожалуйста, держи немного, хотя - это не совсем работает, как я думал. Кроме того, текущая конфигурация загрузчика загрузчика предназначена для вспышки 128 КБ, и, поскольку она живет там «там», размер вспышки имеет значение для текущего кода & настраивать. HM, я полагаю, я мог бы просто на Hardwire для 64 кб, тогда это будет работать на обоих.

Спасибо за предложение - я последую, как только у всего будет немного больше шансов на то, чтобы на самом деле работать...

Результат, на который я надеюсь: пройти установку «Невредимый», сброс нажмите, загрузите из IDE через последовательный направление на USB -порт, Blink!

JCW
Пт 27 ноября 2015 г. 18:58
Хорошо, тест должен работать одинаково как для 64K и 128K F103-MD сейчас (последний коммит).

Что -то еще плохое. Протокол работал в низком плане, но теперь, кажется, терпит неудачу: $ stm32loader.py -p /dev/cu.usbmodem421 -b 115200 -ew fader.bin Reading data from fader.bin Bootloader version 0x22 Chip id 0x410, STM32F1, performance, medium-density Writing 6268 bytes to start address 0x8000000 Write 256 bytes at 0x8000000 WRITE FAIL - try and recover WRITE FAIL - wait WRITE FAIL - retry Traceback (most recent call last):

Rogerclark
Пт 27 ноября 2015 г., 19:54
@JCW

Мы обнаружили, что у всей платы STM32F103C8 есть флэш -память 128K, даже если у них должно быть только 64K

Поэтому я думаю, что каждый должен быть в состоянии проверить это.

Однако в долгосрочной перспективе вам также нужно будет сделать версию 64K, в случае, если STM изменит их производственные процессы, а устройства C8 станут 64K

(КСТАТИ. GD32F103C8 составляет всего 64K, так как это совершенно другое устройство)