Прошивка Arduino по TX/RX

Есть Mega 2560 с подключенным SD ридером на CH340.
Стоит задача, чтобы был self-update. Вставили флешку с HEX прошивкой, она и обновилась.
Есть решения, но они связаны с прошивкой бутлоадера, а на CH340 бутлоадер не шьется. Поменять на другую Мегу никак, т.к. это pro версия, уменьшенная.

Возникла идея прикрутить ардуино поменьше, например Arduino Nano. К ней прикрутить в свою очередь SD ридер. Связать их обе по RX-TX. На Serial2 каком-нибудь обмен данными для SD карты. То есть получится, что Мега будет общаться с SD через Нано.

Вот, далее попытаться сделать таким образом, что если Нано видит UPDATE.HEX, она его берет в работу и шьет Мегу по RX-TX, на Меге само собой RX-TX для шитья будет на Serial0, где обычно USB висит. Вроде схема рабочая.

Вопрос в следущем, что-то я притупил, не понимаю как разобраться, чтобы вскрыть HEX и данные отправить по сериалу. Это возможно программно сделать? Может есть решения похожие, готовые, библиотеки. Благодарю за любую помощь

А писать протокол прошивки кто будет?

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

1 лайк

Загрузчики есть готовые, но их не прошить из-за CH340, в этом вся проблема. На Mega 2560 REV 3 оригинальной все работает прекрасно, обновляется со своей SD карты. Тут же я описал почему нельзя, — да, правильно, из-за CH340. Читайте внимательно, что написано, без обид.

А на “Mega 2560 REV 3 оригинальной” как и куда подключена SD карта?

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

1 лайк

Загрузчик надо прошивать в сам чип меги. То что на вашей меге вместо 16U4 стоит CH340 не мешает прошить загрузчик в саму мегу !

Всё же думается мне, что ТС как собака: всё понимает - только сказать не может. Под загрузчиком он скорее всего имеет ввиду прошивку через Flip саму16u2. Если осутствие на ПРО версии этого чипа единственное, что не устраивает ТС(опять ,блин, догадки, вот нахера приходить ,задавать ОЧЕНЬ важный вопрос и сливаться на сутки?), то могу предложить быстрый и дешёвый вариант. Берёте Мегу на которой у вас всё работает(ну та которая - “Mega 2560 REV 3 оригинальной” ) режете дорожки на обоих мегах и соединяете выход 16U2 с 2560 на PRO. Можно менее варварски: тупо замкнуть ресет на ведущей(она автоматом станет тупо конвертером) и прокинуть на RX/TX ведомой - может прокатит. Если это реально, то что вам надо, то можете ещё и сэкономить - на UNO также бывает чип 16U2. Возможно хватит и 8U2. А можно и самому собрать этот конвертер. Я вот на AT90USB162 делал и оригинальная прошивка для флипа вполне работает.

Бред какой-то.
Почему на клонах Нано тот же ch340 не мешает перешивать загрузчик?

Так, вот, да)
Вы имеете ввиду взять Уно, потом по ISCP прошить мегу? Например, с помощью dfu-programmer?
Надо пробовать. Да, вы правильно написали

Спасибо за ответы, сегодня попробую

Я имею ввиду, что никто из ответивших вам так и не понял в чём проблема. Вы либо не понимаете о чём пишете либо либо не можете сформулировать. Если хотите помощи - не надо сокращений и около программистских терминов. Всё должно быть чётко и по шагам. Никто до сих пор не знает как у вас подключена и что и куда прошивается в РАБОЧУЮ “Mega 2560 REV 3 оригинальной” (устал цитировать уже)

А зачем это все? Чтобы бутлоадер поменять? Что мешает сделать это через ICSP разъем?

Моя думать, что в 16U2 заливается какая то спец. прошивка позволяющая видеть внешние USB устройства (типа SDкарты через ридер). ТС тупо сформулировать не может. Загрузчик тут типа не причём, типа слово модное - бутьлодырь :slightly_smiling_face: (хотя его по идее тоже надо модифицировать)

Возможно… но тогда придется этот бутерброд из двух разных Мег так и оставить в девайсе. иначе прошивка не будет работать…
По мне так это вряд ли можно назвать приемлемым решением.

Зато биплатна. Он же пишет, что у него РАБОЧАЯ “Mega 2560 REV 3 оригинальной” есть(тьфу, опять блин)

Нет, речь именно про прошивку бутлоадера.
Решений куча, например вот

Посмотрел две первые ссылки - не нашел ни одного упоминания, что CH340 как-то мешает процессу
Прошивка бутлоадера в Мегу делается через программатор, Сериал (а значит и его драйвер - CH340) - никак в этом процессе не задействован.

@misterd - повторяю вопрос - если с CH340 нельзя перешить бутлоадер - как же это делают на Ардуино Нано. где установлен этот самый CH340 ?

Штатное решение

Нужен программатор

Но если человеку хочется помучаться, то кто ж ему запретит ))

1 лайк

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

Хуже то. что у автора наблюдается нехороший гонор и нежелание нормально обьяснить задачу.

1 лайк

Нет, я без гонора. Возможно криво объясняю. Давайте попробую еще раз. Я сейчас нахожусь на этом этапе.

У меня парк устройств на Mega2560 Pro, на CH340.

Мне нужно обновить там загрузчик на специальный. Ссылки что я давал выше, он имеется. Этот загрузчик нужен, чтобы обновлять прошивку с SD карты. Со штатным загрузчиком такое не работает.

Проблема в том, что если мы просто Мегу 2560 Pro CH340 подключим к Arduino IDE, то загрузчик мы записать не сможем, только скетч.

Да, можно программатор, можно использовать, например УНО.

Я сейчас нашел УНО, зашил туда скетч Arduino as ISP, попробовал загрузить штатный загрузчик через Arduino IDE — вроде получилось. Все подключено через ICSP, 10 контакт на ресет.

У меня кастомный загрузчик есть, вот сейчас пытаюсь прошить его. Пробую dfu-programmer, отпишусь позже получится или нет

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