Причина предупреждения «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 определен явно.

, 👍1

Обсуждение

У вас там тоже есть плата под названием 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


3 ответа


Лучший ответ:

1

Похоже, что вы больше не можете установить глобальное свойство в файле boards.txt. Вы должны установить каждое свойство отдельно внутри каждого идентификатора платы, даже если они одинаковы для каждой платы в файле. Кажется, это противоречит документации, в которой говорится, что...

Другие свойства переопределяют соответствующие глобальные свойства. среды IDE, когда пользователь выбирает плату.

Кроме того, если какой-либо глобальный ключ задан напрямую, то оба ключи, относящиеся к плате, и глобальные ключи игнорируются.

Итак, в моем выше boards.txt установка глобального ключа build.f_cpu в конце файла, по-видимому, охватывает blink.build. board и предотвратить его копирование в build.board при выборе платы. Даже если вы устанавливаете глобальный ключ build.board напрямую, этот параметр игнорируется.

,

0

Строка в файле 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


1

В моем случае: я удаляю проблемные конфигурации платы в файле boards.txt. Эти конфигурации появляются между #### ... конфигурациями платы... #####.

,