Официальный сайт компании Arduino по адресу arduino.cc
Использование директив из boards.txt
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Сб, 07/05/2022 - 12:04
Доброго времени суток. Может кто знает, можно ли использовать директивы предпроцессора из boards.txt в скетче, то есть я например создаю меню menu.boardver, у которого 2 значения, и хотел бы использовать выбранное значение для компиляции внутри скетча по типу #ifdef .... #elif... #endif
Заранее спасибо
видимо да...
Можно, смотрите boards.txt, в ней полно примеров.
ua6em не срабатывает - надо править platform.txt или попробовать убрать -O... из platform.txt и может тогда сработает из скетча
ua6em не срабатывает - надо править platform.txt или попробовать убрать -O... из platform.txt и может тогда сработает из скетча
у меня на ESP8266 и ESP32 работает...
PS я не настоящий сталевар, пользуюсь готовым сплавом "железо-углерод"
Оно работает для строк скетча, но библиотеки не затрагивает и код wiring. Как то так ...
Оно работает для строк скетча, но библиотеки не затрагивает и код wiring. Как то так ...
это я не разобрался, что ему надо...только не понял, к чему усложнять, когда можно просто
что-то я так и не понял, так можно или нет?)))
Вот допустим вот такой кусок кода в boards.txt
как в скетче использовать выбранное значение в меню BOOT?
Вы более широко можете раскрыть свою идею ? Мне например не ясно - для каких целей оно вам понадобилось ?!
что-то я так и не понял, так можно или нет?)))
Вот допустим вот такой кусок кода в boards.txt
как в скетче использовать выбранное значение в меню BOOT?
:)))))
Конечно можно!
Если меньше всего переписывать в ИДЕ, то нужно использовать build.boad.
ИДЕ определяет макрос ARDUINO_{build.board}, то есть в твоем случае компилятору будет передано ARDUINO_AVR_UNO, и его можно проверить на #ifdef.
В меню задавай нужные тебе значения в build.board например: AVR_UNO1, AVR_UNO2 ... и так далее по аналогии. То есть в твоем примере убери строку 17 и задавай build.board в меню, два раза - разное, после 26 и 28 строк соответственно.
В коде скетча проверяй на #ifdef:
Ну вот, как-то так. Понял?
Ну вот, как-то так. Понял?
Да, конечно. Спасибо большое за разъяснение!!!
А где-то можно узнать этот список используемых в IDE макросов ARDUINO_{}?
Вы более широко можете раскрыть свою идею ? Мне например не ясно - для каких целей оно вам понадобилось ?!
У меня несколько версий плат, имеющих разную разводку и разные загрузчики. Скетч естественно один, имеющий вариативность в виде #ifdef. Соответственно, чтобы сделать прошивку под правильную плату, нужно не забыть выбрать тип загрузчика и правильно сконфигурировать константы #define. Иногда в запаре забывал что-нибудь из этого выставить, потом долго удивлялся, почему не работает. Возникла мысль, что можно использовать настройки из boards для автоматической модификации скечта.
Ну вот, как-то так. Понял?
Да, конечно. Спасибо большое за разъяснение!!!
А где-то можно узнать этот список используемых в IDE макросов ARDUINO_{}?
Ты не понял ничего? ТЫ САМ ЭТО ПИШЕШЬ В МЕНЮ! Если так - непонятно, я еще крупнее шрифт возьму! Должно помочь. Ай хоуп.
Возникла мысль, что можно использовать настройки из boards для автоматической модификации скечта.
ЫСЧО РАС: boards.txt придеццо переписывать. По крайней мене добавлять пару строк. В них ты и определяешь макрос. Я указал тебе, как сделать с минимальным переписыванием.
То, что передается компилятору можно увидеть в паттернах в платформ.тхт.
Ещё можно на чип привязываться и даже на оскал (капитализма).)
Ты не понял ничего?
Да все я понял)))
Вот рабочий вариант.
Я спросил о другом, для общего развития, есть ли другие константы, чтобы использовать другие опции, например upload.speed, что-нибудь типа UPLOAD_SPEED_38400
Ты не понял ничего?
Да все я понял)))
Вот рабочий вариант.
Я спросил о другом, для общего развития, есть ли другие константы, чтобы использовать другие опции, например upload.speed, что-нибудь типа UPLOAD_SPEED_38400
Хочешь что-то еще - переписывай паттерны. ИДЕ вообще нормально так документирована. У меня где-то на форуме есть тема, как к ИДЕ на Яве плагины писать. Она (ИДЕ) пластилиновая совершенно. Но нужно хорошо писать код на Яве. хорошо понимать устройство компилятора GCC, и вообще систему.
Тогда можно будет сделать все, что угодно. И не терять свои настройки при апдейте среды. Но придется собирать всё от исходников. Многим просто не интересно это всё.
Хочешь что-то еще - переписывай паттерны. ИДЕ вообще нормально так документирована. У меня где-то на форуме есть тема, как к ИДЕ на Яве плагины писать. Она (ИДЕ) пластилиновая совершенно. Но нужно хорошо писать код на Яве. хорошо понимать устройство компилятора GCC, и вообще систему.
Тогда можно будет сделать все, что угодно. И не терять свои настройки при апдейте среды. Но придется собирать всё от исходников. Многим просто не интересно это всё.
Понял. Спасибо
Лень двигатель прогресса. Никто ведь не мешает сохранить два раза один и тот же скетч. Поменять индентификаторы и пользоваться как есть.
Если есть желание добавить новую фишку - написать в первом скетче и если всё заработает просто скопировать во второй. А так есть возможность испортить прошивку для обоих устройств одновременно.
Сам один раз столкнулся с подобным и теперь храню всё раздельно. Даже если в скетче изменено только имя ОТА.
Лень двигатель прогресса. Никто ведь не мешает сохранить два раза один и тот же скетч. Поменять индентификаторы и пользоваться как есть.
Лень двигатель прогресса. Может и не совсем в тему, но в случае когда несколько однотипных устройств, писал один софт, который в зависимости от перемычек получал номер ус-ва и, соответственно, вёл себя подобающе. Типа, мастер был 0-м, ведомые имели другие номера. Но скетч был один для всех. Никакой путаницы, никаких лишних телодвижений.
Я правильно понял что автору лень закоментить один дефайн и раскоментить другой, но менять целевую плату в менеджере плат не лень ???
Я то дурак думал что она там пишет что то глобальное, зависящее от загрузчика (точек входа процедур записи во флеш) ...
Если есть желание добавить новую фишку - написать в первом скетче и если всё заработает просто скопировать во второй. А так есть возможность испортить прошивку для обоих устройств одновременно.
Сам один раз столкнулся с подобным и теперь храню всё раздельно. Даже если в скетче изменено только имя ОТА.
открой для себя систему контроля версий, например cvs или git, и тогда не надо будет хранить десятки версий одного кода. А добавление новых фич без риска порчи работающего кода делается через бранчинг.