Причина предупреждения «avr:build doesn't define a 'build.board' preference», когда build.board явно задан в boards.txt?
Я пытаюсь настроить пользовательскую плату в Arduino IDE, но не могу понять, почему я получаю предупреждение...
Warning: Board Move38:avr:build doesn't define a 'build.board' preference. Auto-set to: AVR_BUILD
Думаю, я следую рекомендациям и шаблону из официальной спецификации здесь... https://github.com/arduino/Arduino/wiki/ Arduino-IDE-1.5-3rd-party-Hardware-specification#boardstxt
Мой "поставщик/сопровождающий" — move38
, а моя платформа — avr
, поэтому путь к boards.txt
...
Arduino\hardware\Move38\avr\boards.txt
Вот мой файл boards.txt
, определяющий плату blink
...
blink.name=Blinks Tile
blink.upload.tool=avrdude
blink.upload.protocol=avrisp
blink.upload.maximum_size=15872
blink.upload.maximum_data_size=1024
blink.build.core=blinks
blink.build.board=AVR_Blink
blink.build.mcu=atmega168pb
blink.c.extra_flags=-Wextra -flto
blink.c.elf.extra_flags=-w -flto
blink.cpp.extra_flags=-Wextra -flto
blink.ltoarcmd=avr-gcc-ar
# set F_CPU to 1Mhz for all boards on this platform
build.f_cpu=1000000L
...который, по-видимому, определяет build.board
как AVR_BLINKS
.
Думаю, я следую рекомендациям и шаблону из официальной спецификации здесь... https://github.com/arduino/Arduino/wiki/ Arduino-IDE-1.5-3rd-party-Hardware-specification#boardstxt
...но тем не менее предупреждение сохраняется.
Я использую Arduino IDE версии 1.8.3 в Windows.
Что я здесь упускаю? Есть ли что-то особенное в значении, формате или позиции ключа build.board
, которое я здесь упустил?
Спасибо!
Дополнительные заметки
Добавление следующих строк в рабочий файл boards.txt
...
build.name=testname
build.f_cpu=4000000L
build.core=blinks
build.board=AVR_BOARD
Будет создан пункт меню для новой фантомной платы с именем testname
, но это не настоящая плата с пригодными для использования ключами. Если вы скомпилируете эту плату, вы получите предупреждение...
Using board 'build' from platform in folder: C:\Users\passp\Documents\Arduino\hardware\Move38\avr
Using core 'arduino' from platform in folder: C:\Users\passp\Documents\Arduino\hardware\Move38\avr
Warning: Board Move38:avr:build doesn't define a 'build.board' preference. Auto-set to: AVR_BUILD
...несмотря на то, что ключ build.board
определен явно.
@bigjosh, 👍1
Обсуждение3 ответа
Лучший ответ:
Похоже, что вы больше не можете установить глобальное свойство в файле boards.txt
. Вы должны установить каждое свойство отдельно внутри каждого идентификатора платы, даже если они одинаковы для каждой платы в файле. Кажется, это противоречит документации, в которой говорится, что...
Другие свойства переопределяют соответствующие глобальные свойства. среды IDE, когда пользователь выбирает плату.
Кроме того, если какой-либо глобальный ключ задан напрямую, то оба ключи, относящиеся к плате, и глобальные ключи игнорируются.
Итак, в моем выше boards.txt
установка глобального ключа build.f_cpu
в конце файла, по-видимому, охватывает blink.build. board
и предотвратить его копирование в build.board
при выборе платы. Даже если вы устанавливаете глобальный ключ build.board
напрямую, этот параметр игнорируется.
Строка в файле boards.txt:
build.f_cpu=1000000L
создал отдельную запись платы с идентификатором платы build
, поэтому сообщение об ошибке:
Warning: Board Move38:avr:build doesn't define a 'build.board' preference. Auto-set to: AVR_BUILD
Из вашего комментария:
# set F_CPU to 1Mhz for all boards on this platform
и ваш ответ. Я вижу, что вы ожидали, что эта строка будет определять глобальное значение для свойства build.f_cpu
, но в Arduino IDE нет механизма для этого в boards.txt, и я этого не делаю. поверьте, это когда-либо было. Вам необходимо определить свойства для каждой платы отдельно в файле boards.txt, где они переопределяют ранее определенные свойства с тем же именем. Однако вы можете определить значения свойств по умолчанию для аппаратного пакета в файле platform.txt точно так же, как вы пытались сделать это в файле boards.txt.
С определенным ключом «build.f_cpu» я не вижу новую плату с именем «build» в меню досок, и все ключи, определенные для платы «blinks» (которая правильно выбрана в меню досок) исчезают, когда Ключ «build.f_cpu» определен, поэтому, даже если теперь определена фантомная плата «сборки», почему она должна подавлять некоторые из ключей выбранной платы? Спасибо!, @bigjosh
Кроме того, когда я читаю строку «Файл конфигурации представляет собой список свойств «ключ = значение»» в спецификации, я ожидаю, что могу установить для любого ключа любое значение в любом файле конфигурации. Это не похоже на правду - установка глобальных ключей в boards.txt на самом деле не устанавливает глобальный ключ. В разделе boards.txt сказано, что ключи можно устанавливать на отдельных платах, а не то, что их нельзя устанавливать глобально. Я думаю, что либо ошибка, либо проблема с документацией, либо и то, и другое. – bigjosh 1 минуту назад, @bigjosh
«Я не вижу новую плату с названием «Сборка» в меню досок». Это потому, что на плате отсутствует необходимое свойство. Попробуйте добавить строку: build.name=bigjosh
., @per1234
«почему он должен подавлять некоторые клавиши выбранной платы». Что вы имеете в виду под ключами?, @per1234
Добавление имени создает фиктивную запись в меню, но фактически не создает плату с ключами. См. новые добавленные заметки выше. Спасибо!, @bigjosh
Ключ — это что-то слева от =
в одном из файлов префов (например, boards.txt) в соответствии со спецификацией., @bigjosh
Это потому, что вы неправильно устанавливаете ключ. Помните, что первая часть ключа — это идентификатор платы. Вам нужно сделать это так: build.build.board=AVR_BOARD
., @per1234
В моем случае: я удаляю проблемные конфигурации платы в файле boards.txt. Эти конфигурации появляются между #### ... конфигурациями платы... #####.
- Добавление пользовательской платы в среду разработки Arduino
- Как иметь в проекте код, который не будет компилироваться для Arduino?
- C++ против языка Arduino?
- avrdude ser_open() can't set com-state
- Как читать и записывать EEPROM в ESP8266
- Float печатается только 2 десятичных знака после запятой
- устаревшее преобразование из строковой константы в 'char*'
- Запрограммировать ATMega328P и использовать его без платы Arduino.
У вас там тоже есть плата под названием Move38?, @Majenko
Какую версию Arduino IDE вы используете? Это ваш полный файл boards.txt? Я не могу воспроизвести проблему с Arduino IDE 1.8.4., @per1234
@Majenko Нет платы с именем Move38. В файле boards.txt есть только одна плата, и это плата
blink
. «Move38» — это «поставщик/сопровождающий» в соответствии со спецификацией, как и имя родительского каталога — путь boards.txt — «Arduino\hardware\Move38\avr\boards.txt». Спасибо!, @bigjosh@ per1234 Я представил полный файл boards.txt выше, а также (с трудом заработанный!) ответ. Спасибо, что предложили помощь!, @bigjosh