Загрузка программ через Wi -Fi

Фотисл
Солнце 21 мая 2017 г. 18:42
Привет,

Я являюсь автором Miniwifi, небольшой библиотеки Arduino/STM32Duino и прошивки для устройств ESP8266. Вся связь между двумя устройствами происходит через последовательный порт с использованием пользовательского протокола. Прошивка ESP8266 имеет некоторые функции, но я думал о добавлении удаленной загрузки программ. Подключив штифт GPIO из ESP8266 к выводу сброса платы STM32 Я могу сбросить плату, а затем загрузить программу через сериал. Что вы думаете? Что лучше всего ссылаться на серийный протокол и загрузку программ?

Фотис

AG123
Солнце 21 мая 2017 г. 18:52
Я думаю, это интересно и возможно :)
http: // www.ул.com/content/ccc/resource/ ... 264342.PDF
Другие альтернативные способы могут включать в себя использование другой программы в самой STM32, которая взаимодействует с ESP8266 для загрузки и программирования вспышки из STM32 ;)

Фотисл
Солнце 21 мая 2017 г. 18:58
Я нашел эту записку вместе с AN2606, которая описывает загрузчик. Есть ли какой -нибудь документ, описывающий точный алгоритм и места, где все должно быть написано? Остальное должно быть довольно легким и простым.

Фотис

AG123
Солнце 21 мая 2017 г., 19:17
Я думаю, что другой SOC в серии STM32
http: // www.ул.com/content/ccc/resource/ ... 167594.PDF
Имеет некоторые (небольшие) различия в конфигурациях загрузки, в частности, штифты загрузки и поток загрузки
Для STM32F103 я думаю, что нужно установить Boot0 (High) и просто сбросить
в AN2606 12.2 P54 (ссылка выше) Существует блок -схема, которая показывает, что после сброса просто отправьте 0x7F на UART, а загрузчик/флэш -загрузчик начнется

Flash обычно начинается с 0x8000000, разместите место для загрузчика STM32Duino загрузчика и смещения до 0x8002000 и для загрузки Stock Maple 0x8005000.
Я думаю, что последовательность будет сначала стирать, а затем написать

Фотисл
Солнце 21 мая 2017 г., 19:40
Я не так уверен в точном алгоритме, и если это так просто. Например, в загрузчике STM32Duino, если Altset равен 1, то используется поведение загрузчика Maple, программа записана по телефону 0x8005000, а страница на 0x8002000 стирается. Это деталь, которая должна быть реализована. Кроме того, вспышка разблокирована. То же самое и с командой write onprotect?
Я предполагаю, что источники STM32Flash - очень хороший ресурс, но мне было интересно, есть ли документ об этом.

Фотис

victor_pv
Солнце 21 мая 2017 г. 22:09
Фотисл написал:Я не так уверен в точном алгоритме, и если это так просто. Например, в загрузчике STM32Duino, если Altset равен 1, то используется поведение загрузчика Maple, программа записана по телефону 0x8005000, а страница на 0x8002000 стирается. Это деталь, которая должна быть реализована. Кроме того, вспышка разблокирована. То же самое и с командой write onprotect?
Я предполагаю, что источники STM32Flash - очень хороший ресурс, но мне было интересно, есть ли документ об этом.

Фотис

Rogerclark
Солнце 21 мая 2017 г. 22:27
Страшивание через MCUS встроенный серийный загрузчик будет самым простым вариантом.

Вам понадобится 4 контакта, сброс, Boot0, TX и RX.

Помимо кода C для загрузчика, есть также версия Python, которая потенциально проще для порта.

Вы также можете программировать через SWD, но выводы SWD отключены в некоторых сборках эскиза, поэтому вам также нужно сбросить процессор, так что вы все еще не Meed 3 Pins.
В Интернете есть источник для программирования через SWD, E.глин. Посмотрите на Blackmagic Grese, но перенос бит этого кода, вероятно, потребует гораздо больше усилий.



Как отмечалось ранее @victor_pv, USB -загрузчик поддерживает только загрузку через DFU через USB, добавление дополнительного кода для поддержки других протоколов и т. Д

Фотисл
Пн 22 мая 2017 г., 7:20 утра
Да, я забыл о Boot0, мне тоже нужно будет тянуть так высоко. Мой чертеж не разбивает это, так что я думаю, это должно быть сделано над прыгунами.

Вы случайно знаете, где я могу найти версию Python?

Фотис

Rogerclark
Пн 22 мая 2017 г. 10:07
Фотисл написал:Да, я забыл о Boot0, мне тоже нужно будет тянуть так высоко. Мой чертеж не разбивает это, так что я думаю, это должно быть сделано над прыгунами.

Вы случайно знаете, где я могу найти версию Python?

Фотис

Фотисл
Чт 25 мая 2017 г. 14:25
Я довольно близок к тому, чтобы закончить это, я думаю. Одна незначительная нота для вас, Роджер, не должна https: // github.com/rogerclarkmelbourne/ ... эр.Py#L216 быть:
Wire.beginTransmission(0x60); result = Wire.endTransmission();

Rogerclark
Чт 25 мая 2017 г., 21:21
Фотисл написал:Я довольно близок к тому, чтобы закончить это, я думаю. Одна незначительная нота для вас, Роджер, не должна https: // github.com/rogerclarkmelbourne/ ... эр.Py#L216 быть:
#include SoftWire SoftWire1; void setup(){ SoftWire1.begin(); SoftWire1.beginTransmission(0x60); SoftWire1.write(0x0C); // Adding a false will add a "repeated start". SoftWire1.endTransmission(false); SoftWire1.requestFrom(0x60, 1); // result will return 196 the correct value result = SoftWire1.read();