Dr. Morg, ну теоретически все в общем и целом решаемо. По крайней мере отдельно я решали загрузку файла во флеш ESP и с прошивкой АВР тоже все более или менее понятно, описание протоколов загрузчиков имеется.
Практически все это не собирал в 1 целое пока что, т.к. выяснилось тут, что нормально реализовать этот функционал в виде отдельного класса в текущей реализации Sming не получается.
А делать в виде кучи глобальных функций на коленке я не хочу (привык задачи делить на части и решать по частям, отлаживая каждую отдельно).
Так что практически пока что поделиться нечем.
Могу поделиться только мыслями, ссылками и т.п., если спросите конкретное что-то.
PS: в частности по GPIO решил, что как кроме RX и TX АВР и ESP обязательно нужно по 1 GPIO выделить на каждом и повесить на них reset'ы друг друга.
АВР чтобы могла сбросить ESP, если та вдруг начнет висеть. А ESP чтобы могла сбросить АВР, чтобы та вошла в режим загрузчика.
В принципе последнее не обязательно. Войти в бутлодырь на АВР можно и программно. Но вариант с железным подключением Reset дает более устойчивую к некорректной прошивке систему. То есть даже если вы прошьете при этом кривую прошивку в АВР, и тот зависнет - его все равно можно будет сбросить и перепрошить.
Минусы: нужно по 1 GPIO на ESP и АВР и дополнительная обвязка для этого соединения.