сохронение прошивки

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Добрый день.
Хотел просто получить консультацию. Может кто сталкивался.
Имеется куча ESP как 32 так и esp8266.  Все мы тут "программисты" Написали удачный код - и радуемся. В лучшем случаи куда либо сохранили. Через полгода ,если надо что то изменить - реальная головная боль. Какой проект? Где проект сохранен ? ИТД ИТП.
Можно конечно на каждую ESP привязывать флешку с проектом.....
Вот и родился вопрос -есть ли какие то решения ,по записи и считыванию проектов с ESP . Шаманства с bin файлами не предлагать.
Минимум: Как сделать так что бы весь код отображался в мониторинге com порта?
Спасибо!!!!

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Если не залочено, то считать можно соответствующим программатором. К примеру Atmega8 считывал USBasp (когда, у второго USBasp расширял возможности). Для ESP тоже есть свой программатор на али и тоже не дорогой.

mixail844
Offline
Зарегистрирован: 30.04.2012
на каждую ESPшечку ,клеете наклеечку с уникальным серийным номером.
открываете файл excel/блокнот и вбиваете все номера в столбец
вторым столбцом вбиваете место "где" находится прошивка для конкретной ESPшечки.
как только у какой то ESPшечки обновилась прошивочка , то в файле эту информацию обновляете.
ESPшечка , при включении , может печатать в сериал порт номер версии из системы контроля версий 
BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Я, видимо, не так понял.

Green
Offline
Зарегистрирован: 01.10.2015

сохронение прошивки = грабить корованы.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Green пишет:

сохронение прошивки = грабить корованы.

Нет, грабить корованы - это уже дополнительная премиум-фича за отдельные деньги!

Gagarin74
Offline
Зарегистрирован: 24.08.2013

у3

Gagarin74
Offline
Зарегистрирован: 24.08.2013

mixail844 пишет:

на каждую ESPшечку ,клеете наклеечку с уникальным серийным номером.
открываете файл excel/блокнот и вбиваете все номера в столбец
вторым столбцом вбиваете место "где" находится прошивка для конкретной ESPшечки.
как только у какой то ESPшечки обновилась прошивочка , то в файле эту информацию обновляете.
ESPшечка , при включении , может печатать в сериал порт номер версии из системы контроля версий 

И соответственно когда теряется этот волшебный файл -Вы остаетесь с кучей ESP и хрен знает что на них залито.

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

BOOM пишет:

Если не залочено, то считать можно соответствующим программатором. К примеру Atmega8 считывал USBasp (когда, у второго USBasp расширял возможности). Для ESP тоже есть свой программатор на али и тоже не дорогой.

Стесняюсь спросить - что это за программатор и как он читает прошивку ?

b707
Offline
Зарегистрирован: 26.05.2017

Gagarin74 пишет:

Вот и родился вопрос -есть ли какие то решения ,по записи и считыванию проектов с ESP . Шаманства с bin файлами не предлагать.

Гагарин, то что вы хотите, невозможно в принципе. При прошивке на ЕСП записывается не проект, а скомпилированный машинный код - тот самый binфайл, который вы пишете "не предлагать". Никакого "проекта" на ЕСП нет и потому не существует способа считать его обратно.

"Фарш невозможно провернуть назад" (с)

Так что решайте свою проблему правильными своевременными бекапами скетчей НА ПК.

 

mixail844
Offline
Зарегистрирован: 30.04.2012

Gagarin74 пишет:

И соответственно когда теряется этот волшебный файл -Вы остаетесь с кучей ESP и хрен знает что на них залито.

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

b707
Offline
Зарегистрирован: 26.05.2017

mixail844 пишет:

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

это называется github :)

mixail844
Offline
Зарегистрирован: 30.04.2012

b707 пишет:

mixail844 пишет:

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

это называется github :)

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

 

mixail844
Offline
Зарегистрирован: 30.04.2012
кстати , назрел вопрос по теме: 
вот допустим есть прошитый МК(например STM32)скачали с него прошивку в виде бинарного файла [отсюда и далее догадки]  , прогнали через диссасемблер ,получили какой то файл(ы) .asm . можно ли (написав/использовав  какую либо утилиту на ПК) среди папок с проектами , найти ту папку которой соотвествует ранее скачаный бинарный/.asm файл , заранее зная что эта папка там есть ? а если есть в папках есть файл .elf ,.map , .bin , .hex и.т.п ?  
Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019
void setup() {
  Serial.begin(115200);
  Serial.println(__FILE__);


}

Не благодарите

Green
Offline
Зарегистрирован: 01.10.2015

Да, для надёжности:
Serial.println(F(NAME " " VERSION " " __TIMESTAMP__ "\r\n" __FILE__ "\r\n"));

 
mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

mixail844 пишет:

кстати , назрел вопрос по теме: 
вот допустим есть прошитый МК(например STM32)скачали с него прошивку в виде бинарного файла [отсюда и далее догадки]  , прогнали через диссасемблер ,получили какой то файл(ы) .asm . можно ли (написав/использовав  какую либо утилиту на ПК) среди папок с проектами , найти ту папку которой соотвествует ранее скачаный бинарный/.asm файл , заранее зная что эта папка там есть ? а если есть в папках есть файл .elf ,.map , .bin , .hex и.т.п ?  

Вроде тотал коммандер выполняет поиск по содержимому и сравнение содержимого файлов. Медленно, но можно.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

brokly пишет:

Стесняюсь спросить - что это за программатор и как он читает прошивку ?

Хорошая шутка, но я её не понял...

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Я не шутил, можно ссылку на "программатор для ESP32" ? Я например знаю только один метод "слива" прошивки с 32 есп, да и то он не позволит слить все что хочешь, оочень гиморный. Надеялся узнать новый "официальный" способ :)

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Похоже я с stm32 перепутал, купил себе вот такой: https://aliexpress.ru/item/4000250104285.html

Но сам ещё до stm32 не дорос (не требуется столько ресурсов). Если ввёл в заблуждение - прошу прощения. 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

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

svm
Offline
Зарегистрирован: 06.11.2016

Мне кажется, ТС хочет чтобы вместе с исполняемым файлом в камень заливать и текстовый файл исходного кода. Если уместится, то почему-бы и нет? Ну и предусмотреть режим, в котором исходный код сливается в ком порт или еще куда. 

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

svm пишет:

Мне кажется, ТС хочет чтобы вместе с исполняемым файлом в камень заливать и текстовый файл исходного кода. Если уместится, то почему-бы и нет? Ну и предусмотреть режим, в котором исходный код сливается в ком порт или еще куда. 

Проще склерозник завести и записывать карандашиком чего куда залил

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Rumata пишет:

void setup() {
  Serial.begin(115200);
  Serial.println(__FILE__);


}

Не благодарите

Благодарю!!!

А вот что бы весь код выводился в  Serial.println с самого микроконтроллера?

nik182
Offline
Зарегистрирован: 04.05.2015

Как тут совсем недавно писали- не благодори.

https://www.google.com/url?sa=t&source=web&rct=j&url=https://m.youtube.c...

sadman41
Offline
Зарегистрирован: 19.10.2016

Это старая тема в программировании: Куайн

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Gagarin74 пишет:

А вот что бы весь код выводился в  Serial.println с самого микроконтроллера?

Да, не вопрос. Запустите вот это на Uno или Nano. Печатает свой код с интервалом в 1 сек.

#define d "\\"
#define e "\r\n"
#define b "\""
#define a "%s#define d %s%s%s%s%s#define e %s%sr%sn%s%s#define b %s%s%s%s%s#define a %s%s%s%svoid setup()%s{%s  Serial.begin(9600);%s}%svoid loop()%s{%s  char buf[600];%s  sprintf(buf,a,e,b,d,d,b,e,b,d,d,b,e,b,d,b,b,e,b,a,b,e,e,e,e,e,e,e,e,e,e,e);%s  Serial.println(buf);%s  delay(1000);%s}"
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  char buf[600];
  sprintf(buf,a,e,b,d,d,b,e,b,d,d,b,e,b,d,b,b,e,b,a,b,e,e,e,e,e,e,e,e,e,e,e);
  Serial.println(buf);
  delay(1000);
}

 

Gagarin74
Offline
Зарегистрирован: 24.08.2013

ЕвгенийП пишет:

Gagarin74 пишет:

А вот что бы весь код выводился в  Serial.println с самого микроконтроллера?

Да, не вопрос. Запустите вот это на Uno или Nano. Печатает свой код с интервалом в 1 сек.

#define d "\\"
#define e "\r\n"
#define b "\""
#define a "%s#define d %s%s%s%s%s#define e %s%sr%sn%s%s#define b %s%s%s%s%s#define a %s%s%s%svoid setup()%s{%s  Serial.begin(9600);%s}%svoid loop()%s{%s  char buf[600];%s  sprintf(buf,a,e,b,d,d,b,e,b,d,d,b,e,b,d,b,b,e,b,a,b,e,e,e,e,e,e,e,e,e,e,e);%s  Serial.println(buf);%s  delay(1000);%s}"
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  char buf[600];
  sprintf(buf,a,e,b,d,d,b,e,b,d,d,b,e,b,d,b,b,e,b,a,b,e,e,e,e,e,e,e,e,e,e,e);
  Serial.println(buf);
  delay(1000);
}

 

 

К сожалению на esp32 не взлетело

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

Пипец вы ) не нужны ему квайны, нужно всего лишь положить в SPIFFS копию ino, раз до svn/git не дорос.

https://randomnerdtutorials.com/install-esp32-filesystem-uploader-arduin...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

negavoid2 пишет:

не нужны ему квайны

Не, ну это ведь был мой пост, а не его, правда? Ему, может и не нужны, а мне вот понадобился :-)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Gagarin74 пишет:

К сожалению на esp32 не взлетело

Ну, я писал на чём "взлетать".

А чё говорит-то? Мож взлетело, только "низёхонько"? :-)

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Конечно оно ему ничего не говорит. Порт то у него в мониторе не 9600 :)))

Gagarin74
Offline
Зарегистрирован: 24.08.2013

brokly пишет:

Конечно оно ему ничего не говорит. Порт то у него в мониторе не 9600 :)))

 

порт и скорость в коде выставил одну

Serial.begin(115200);

Все данные отображает в мониторе порта на хорошем английском :) без еврита.

Вот только не отображает сам код. :)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Gagarin74 пишет:

выставил одну

Serial.begin(115200);

Все данные отображает в мониторе порта на хорошем английском :) без еврита.

Вот только не отображает сам код. :)

Шутите. Этот нельзя трогать если не понимаешь его - это же квайн! Поменяв в нём скорость, Вы его ломаете, т.к. менять нужно не в одном месте! Что Вы там ещё меняли?

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

ЕвгенийП пишет:

Шутите. Этот нельзя трогать если не понимаешь его - это же квайн! 

Все , он напуган до смерти.... Теперь его еспшка выпустит волшебный дым, свистнет и улетит.

b707
Offline
Зарегистрирован: 26.05.2017

Gagarin74 пишет:
Вот только не отображает сам код. :)

Гагарин, расслабтесь. Все равно использовать этот прием на практике вы не сможете. Чтобы свернуть свой реальный код в квайн - вам, как минимум, понадобится ЕВгенийП :)

Единственный более-менее реальный способ делать то, что вы хотите - это ОТДЕЛЬНО писать исходные коды проекта в виде файлов на встроенную флешку ЕСП. Но делать это придется вручную, не забывая переписывать их каждый раз, когда вы вносите какое-то изменение в код. Автоматически ничего сохраняться не будет. На самом деле хранить бекапы на ПК куда проще...

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ЕвгенийП пишет:

Да, не вопрос. Запустите вот это на Uno или Nano. Печатает свой код с интервалом в 1 сек.

Ну да, была такая задачка в "Этюдах для программистов" Уэзерелла. Помнится, делал ее на FORTRAN'е. Собственно, это первое, что вспомнилось при прочтении исходного сообщения темы.

 

PS. А что такое "квайн" я не знаю.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

negavoid2 пишет:

Пипец вы ) не нужны ему...

"не нужны мне бабы, губы, мне хватило бы одну бы..."?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

andriano пишет:
Уэзерелла ... А что такое "квайн" я не знаю.
Хм... почему-то был уверен, что у него используется такое название, но сейчас специально посмотрел - нет, не используется.

Upper
Offline
Зарегистрирован: 23.06.2020

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

Пишем программу

void setup()
{
  Serial.begin(9600);
  _printSource();  // Вызываем когда надо вывести в порт
}

void loop(){
  delay(10);
}

void _printSource(){
  Serial.println(F(R"__UniqueName(

  )__UniqueName")); 
};

Перед прошивкой выделяем весь текст кроме последней функции вывода void _printSource(), т.к. нельзя копировать ограничитель __UniqueName (или что вместо него). Выделенный текст вставляем в функцию. 

void setup()
{
  Serial.begin(9600);
  _printSource();  // Вызываем когда надо вывести в порт
}

void loop(){
  delay(10);
}

void _printSource(){
  Serial.println(F(R"__UniqueName(
void setup()
{
  Serial.begin(9600);
  _printSource();  // Вызываем когда надо вывести в порт
}

void loop(){
  delay(10);
}
  )__UniqueName")); 
};

 

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Gagarin74 пишет:

Rumata пишет:

void setup() {
  Serial.begin(115200);
  Serial.println(__FILE__);


}

Не благодарите

Благодарю!!!

А вот что бы весь код выводился в  Serial.println с самого микроконтроллера?

 

Наверное на этом варианте и остановлюсь.

Еще раз всем спасибо. Извините если что то нарушил.