Перейти к содержимому

Управление версиями фреймворков Arduino32 и ESP-IDF в проектах PlatformIO

Добрый день, уважаемые читатели!

Если вы программируете свои устройства на микроконтроллерах, используя популярный плагин PlatformIO для Visual Studio Code, то наверняка должны знать, что сам по себе PlatformIO, по сути, ничего компилировать не умеет. Вся магия происходит за счет подключаемых к нему субплагинов, или в их терминологии “платформ” (в дальнейшем я буду использовать именно этот официальный термин). Например у меня сейчас подключены такие:

Не смущайтесь, что платформа одна и та же – у нее разные версии


 

Платформа включает в себя весь необходимый набор инструментов и фреймворков для работы с тем или иным микроконтроллером. Например платформа Espressif 32 включает в себя оба официальных пакета от производителя чипов (в старых версиях их, кстати, было больше):

Периодически производитель выпускает новые версии framework-ов, выпускаются новые платы, на все это разработчики PlatfromIO реагируют выпуском новых версий своих платформ. Обновить платформу до последней версии можно, зайдя на вкладку Updates:

… и нажав соответствующую кнопку.

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

Просмотреть список изменений можно на вкладке Changelog:

 


Как откатить версию платформы?

Но не всегда новые версии приносят только новые возможности и устраняют старые баги. Иногда добавляются новые глюки, и достаточно существенные. Так было, например с ESP-IDF 5.0 и соответствующей версией Arduino32.

Штатного механизма отката версии платформы в интерфейсе PIO не предусмотрено. Как же быть? Да легко!

Открываем файл platfromio.ini и ищем секцию описания микроконтроллера и целевой платформы. Затем указываем нужную версию платформы через символ @, например так:

Где взять нужные цифры версии? Да там – же, в Changelog:

На этом все, этого вполне достаточно! При компиляции проекта PlatformIO сам скачает в свой кэш указанную версию и скомпилирует проект только с ней. Только не забудьте еще раз выполнить PIO Clean перед первой компиляцией (это не строго обязательно, но иногда бывают глюки при смене версий, и очистка как раз помогает).

А что будет, если убрать указание на конкретную версию в platformio.ini? В этом случае система сборки вернется к максимальной версии платформы, которая была загружена во время последнего обновления через интерфейс Pio Home.

Вот таким нехитрым способом можно “на лету” менять версии Arduino32 и ESP-IDF. Кстати, насколько я знаю, “родной” плагин от Espressif такой легкости не позволяет.

PS: Точно так же можно задавать версию подключаемых библиотек в параметре lib_deps, например.

 


Автоматическое обновление платформ (и библиотек)

Если необходимо, Вы также можете включить автоматическое обновление платформ и библиотек в настройках pio. Но я бы не рекомендовал так делать – ведь не известно в какой момент произойдет обновление и что при этом перестанет собираться. Не люблю такие сюрпризы.

И тем не менее, если вы хотите не пропустить новые версии, сделать это можно. Для этого потребуется настроить сам плагин PlatformIO с помощью команды “pio settings“:

Вначале стоит проверить текущие параметры. Набираем в консоли команду “pio settings get” и смотрим:

Видно, что автоматическое обновление платформ отключено. Далее можно что-то изменить с помощью команды “pio settings set“:

Повторите команду “pio settings set” для всех необходимых значений параметров, в результате у меня получилась следующая картинка:

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

 


На этом пока всё, до встречи на сайте и на telegram-канале! 

💠 Полный архив статей вы найдете здесь


Пожалуйста, оцените статью:
[ 0 из 5, всего 0 оценок ]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *