Как добавить кастомную partition схему в Arduino 2.0?

Есть проект на esp32, который использует 1,4МБ для приложения, использует OTA и 720кБ SPIFFS. По инструкции я создал свою схему распределения памяти и в Arduino 1.8 в меню Tools/Partitione Scheme она успешно отображается и проект успешно компилируется и прошивается. В Arduino 2.0 моя кастомная схема не отобразилась. Это первый момент.
Второй момент в следующем - при компиляции проекта в Arduino 2.0 я заметил, что сборшик ищет в директории проекта файл partitions.csv, и, если находит его, то копирует в свою временную папку, где происходит сборка проекта. Я подложил ему нужный файл, и нашёл его потом во временной папке. Но при этом проект не собирается, т.к. считает, что код получился больше по размеру (1,4МБ), чем в стандартной схеме (1,2МБ).
Вопросы:

  1. Как добавить кастомную partition схему в Arduino 2.0?
  2. Почему при компиляции проекта используется не мой файл partition.csv с кастомной схемой, а выбранный в меню Tools/Partitione Scheme, и как это побороть?

можно вопрос? в 1.8 собирается и работает?

Да, конечно, все собирается и работает

Так в чем тогда проблема?

Arduino 2.0 гораздо удобнее версии 1.8, и хотелось бы в ней работать. Плюс она при создании бинарного файла создаёт их для каждого раздела, обозначенного в файле partitions.csv, чего не делает старшая версия. Мне это нужно для удаленной прошивки устройства.

По Ардуино 2.0 значительно продуктивнее будет спросить на форуме arduino.cc - там есть есть шанс что ответят сами авторы.
А у нас тут пока обсуждений второй версии очень мало.

Почитайте вот этот топик

1 лайк

А разве при использовании ота, не должно быть свободно минимум 50 % памяти? А иначе в один прекрасный момент, придется шить через Rx/Tx порт. Где то читал, что по воздуху, файл bin как раз падает в свободную часть памяти, и только потом переносится самой ESP внутренними алгоритмами в рабочую область. По этому, если по воздуху шьёте и что то пошло не так (питание сбойнуло, роутер завис и т.д.) , ESP останется в рабочем состоянии и повторить прошивку можно без проблем снова. Кстати лично это проверял пару раз. Возможно предыдущая версия сжимала лучше, но на гране, а 2.0 об этом не заботится особо.

Именно так и есть, только не 50% памяти, а ровно столько, сколько памяти выделено под раздел программы (app). И это все настраивается в файле partitions.csv

Спасибо за ссылку, почитаю

У меня с отой всегда вот так …Всего доступно 1310720 байт…По этому, если компилятор делает код превышающий данное число, он просто останавливает компиляцию скеча и выпадает в ошибку. Я не знаю, как вы компилируете 1400000

OTA хорош когда у вас девайс постоянно онлайн, а если проснулся, отправил данные, заснул, получим конкретный баг

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

этот момент не понял

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

1 лайк

Решил проблему. Спасибо товарищу b707 за наводку. Посмотрел топик, решения не нашёл, но походя по ссылкам, понял, что нужно идти на гитхаб Ардуино студии. И вот тут нашёл решение. Нужно было просто почистить кэш путём удаления папки “arduino-ide” из "c:\Users\User\AppData\Roaming". После перезапуска студии изменения, внесённые в файл boards.txt становятся видны в меню Tools.

Вот так было:
Sketch uses 1402937 bytes (107%) of program storage space. Maximum is 1310720 bytes.
А вот так стало:
Sketch uses 1402937 bytes (82%) of program storage space. Maximum is 1703936 bytes.

для спасибо на форуме есть специальная кнопка под каждым сообщением :slight_smile:

Рекомендую Вам посмотреть на файлы *.csv в папке "c:\Users\User\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.6\tools\partitions". Так Вы поймёте, что нужно делать для изменения разделов. Затем создайте свой файл custom_partition_for_SAB.csv в этой папке, и сделайте на него ссылку в файле boards.txt двумя уровнями выше.

Вот Вам пара ссылок для изучения:
how to use custom partition tables on esp32
partition table

Нет, ну это дело вкуса, конечно. Если Вам удобнее - работайте.
Лично мне неудобно работать с любыми программами версии *.0, т.к. никогда не знаешь, с какой подлянкой столкнешься в следующий раз.

Ну а совет - дождаться хотя бы версии 2.1.