-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added configuration #89
Conversation
Я так понимаю, это все новые файлы, и они не используются при сборке в чистом eps-idf. Сам пишу в простом текстовом редакторе, как-то Visual C не осилил пока(. Не против добавить, но сам мало знаком с этой средой, нужны наверное и комментарии, чтобы включить это в описание. Что касается форматирования, не совсем понял как оно работает, если можно, поясните кратко. |
PlatformIOЭто платформа для сборки прошивок для микроконтроллеров. Управляет инструментарием сборки, и зависимостями проекта. Всё нужное скачает сама. Со списком поддерживаемых платформ можно ознакомиться тут, а фреймворков - тут. platformio.ini - файл конфигурации для PlatformIO Clang-formatВ файле описываются правила форматирования кода, согласно которым код приводится к нужному стилю. Необходим установленный |
Так вот откуда взялась поддержка Platformio. Мне нравится интеграция с VSCode. |
Может кто подскажет, куда копать? При этом в доке https://docs.espressif.com/projects/esp-idf/en/v4.4/esp32/api-reference/peripherals/rmt.html есть оба: А вот в rmt.o который собрался, есть только rmt_set_pin. Что-то не докачалось в platformio? Заменил вызовы на Сборка пошла дальше, но в конце выдает: Где-то неправильная конфигурация? upd: разобрался. откуда-то создался sdkconfig.esp32dev с параметрами 2M. Скопировал sdkconfig в sdkconfig.esp32dev и всё нормально собралось. прошивка залилась, плата завелась. upd2: с первым вопросом тоже разобрался. В platformio.ini было [email protected]. Поменял на 5.2.0 и тогда подтянулись правильные версии:
|
По первому вопросу. Изначально пытался компилировать с rmt_set_pin в среде esp-idf версии 4.4 (вроде старая уже), компилятор ругнулся на то, что функция устарела, пользуйтесь более новой, и предложил первую. Что касается второго вопроса. Чтобы все новое влезло в IRAM, пришлось корректировать sdkconfig. Я уж думал, что забыл обновить его на гите, но если все собралось, значит не забыл). Надо еще кое-что поправить. Приедут скоро еще датчики, будет обновление). Заказал себе и esp32c3. Правлю под нее код, вроде все влазит, даже экран. Кроме RMT, конечно, их там только по 2, то есть не 3 входа ds18b20 и dht22, а только 2. |
Да, сейчас проверил, с версией esp-idf 4.4 пишет, что deprecated. Тут по хорошему надо через #if или #ifdef (не знаю, какие там макро есть) проверять версию и использовать соответствующие вызовы. Ну либо указать в доке, что минимальная версия такая-то.
Там откуда-то самостоятельно создался новый файл sdkconfig.esp32dev (по имени платы). И он с виду очень похож на sdkconfig, что лежит в гите. Поэтому я не сразу увидел, что там неправильный размер памяти - везде было 2M.
Вот кстати, может имеет смысл сделать как это устроено у многих больших проектов на микроконтроллерах (marlin например)? Где-то есть config.h в котором стоит #define FEATURE_X и если оно определено, то бинарь собирается с этой фичей (где-то в коде #ifdef FEATURE_X). Тот же экран можно вынести туда, датчики, еще какие-то вещи, которые кому-то могут быть не нужны. Если полностью перейти на platformio, который сейчас почти у всех есть, то каждый тогда сможет легко собирать себе прошивку в нужной конфигурации. Туда же, кстати, и настройки wifi можно вписать, что бы потом через гостевую сеть не подключаться. |
|
Добавил эти 2 строчки в sdkconfig.defaults и поправил @5.2.0. |
Чего-то еще не хватает.
Если сравнить sdkconfig и то, что сгенерил platformio - там очень много различий. Насколько я понимаю, Андрей правильно настроил sdkconfig, что бы всё правильно собиралось. Теперь надо эти отличия как-то продублировать в sdkconfig.defaults ? Я просто не очень в курсе, как там у platformio всё устроено, поэтому спрашиваю - что надо сделать, что бы pio генерил корректный конфиг? Нашел доку по espidf: https://docs.platformio.org/en/latest/frameworks/espidf.html но там не сказано про генерацию sdkconfig. |
В espidf файл sdkconfig создается и редактируется программой menuconfig. Содержимое меняется при смене версии и типа устройства. Я думал, что PlatformIO подхватывает этот файл. Может эго просто переименовать в sdkconfig.defaults ? |
Меня тоже такая мысль посетила. Только вот я не понял, правильно ли так делать. Погуглил немного - там какие-то сложные конфигурации у народа, но у них эти файлы вроде лежат отдельно. Сейчас скопировал sdkconfig в defaults - проект собрался, но файл .esp32dev всё равно немного отличается. Там несколько опций исчезло и пару добавилось. Diff в аттаче. Не знаю, нужные ли это опции или нет.
Вот тут, кстати, второй вопрос. Как правильно задать настройки для каждого устройства? В platformio.ini можно описать несколько конфигураций (env) для каждого варианта платы, но вот совершенно не понятно, в какие файлы вписывать настройки из sdkconfig. Насколько я понял, сейчас platformio не пересоздает sdkconfig. если изменился sdkconfig.defaults. Они пишут, что espidf тоже так делает, поэтому они и не меняли поведение. Т.е. по идее можно для каждой платы создать свой sdkconfig и положить его в гит, что бы platformio не генерил их самостоятельно непонятно из каких шаблонов. |
Насколько я понял, в espidf, если есть файл sdkconfig, данные берутся только из него, файл sdkconfig.defaults удалял, вроде ничего не менялось. |
В документации platformio пишут:
Т.е. pio по идее должен как-то учитывать содержимое sdkconfig. А он судя по всему этого не делает. Про sdkconfig.defaults написано в доке esp-idf: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/kconfig.html#project-configuration-menu Получается, надо все необходимые опции проекта перенести в sdkconfig.defaults и при необходимости создать дополнительные sdkconfig.defaults.< target > с индивидуальными настройками для каждого таргета (если требуется). Далее, судя по всему, файл sdkconfig будет генериться самостоятельно при сборке из sdkconfig.defaults. В общем надо как-то попробовать в нативной среде, будет ли это работать и потом тоже самое проверить в pio. |
поправил согласно изменениям sdkconfig |
Спасибо. Собралось всё без ошибок.
Есть вопрос. Почему-то появилась разница в размере бинаря. Вот сборка с alutov:master - copy sdkconfig -> sdkconfig.esp32dev
И в вашем PR всё равно осталась разница между sdkconfig и создавшимся sdkconfig.esp32dev. Не знаю, повлияло ли это на размер? |
да, много параметров поменялось, не со всеми разобрался посмотрю как будет время |
for platformio and clang-format