Перейти к содержанию
    

Buildroot with custom DTS file

Добрый день! Может есть специалисты по Buildroot, подскажите пожалуйста как в конфиг Buildroot'a правильно прописать внешний dts файл с dtsi инклюдами.

Сейчас использую:

 

BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y
BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_TRENZ_PATH)/board/trenz_mp/kernel.dts"

В kernel.dts есть include'ы для файлов .dtsi и чтобы скомпилировать kernel.dts пути для dtsi приходится задавать абсолютные, но необходимо относительные. 

Как правильно указать Buildroot'у где находятся dtsi файлы, которые читает kernel.dts?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может, просто во внешнем скрипте при сборке вызвать dtc? Сколько использую buildroot, избегаю собирать им ядро/u-boot - неудобства сплошные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, aaarrr said:

Может, просто во внешнем скрипте при сборке вызвать dtc? Сколько использую buildroot, избегаю собирать им ядро/u-boot - неудобства сплошные.

u-boot я тоже не собираю buildroot'ом. По kernel вопросов нет, путь к конфигу ядра прописан, кроме того в конфиге buildroot'а задаю версию ядра. 

Решение пока нашел что называется "в лоб": убрал все инклюды и добавил все в один файл kernel.dts. Это не очень хорошо, т.к. в каждом инклюде был определенный DT (например для PL части Zynq Ultrascale+ или отдельно все что касается памяти)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/21/2020 at 1:40 PM, Aleksei_Rostov said:

В kernel.dts есть include'ы для файлов .dtsi и чтобы скомпилировать kernel.dts пути для dtsi приходится задавать абсолютные

вообще - нет, buildroot копирует внешние DTS-ы в дерево исходников ядра перед компиляцией

define LINUX_BUILD_CMDS
	$(call KCONFIG_DISABLE_OPT,CONFIG_GCC_PLUGINS)
	$(foreach dts,$(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH)), \
>>>>		cp -f $(dts) $(LINUX_ARCH_PATH)/boot/dts/
	)
	$(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) all
	$(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME)
	$(LINUX_BUILD_DTB)
	$(LINUX_APPEND_DTB)
endef

https://git.busybox.net/buildroot/tree/linux/linux.mk?h=2020.11.x#n432

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 hours ago, sasamy said:

вообще - нет, buildroot копирует внешние DTS-ы в дерево исходников ядра перед компиляцией


define LINUX_BUILD_CMDS
	$(call KCONFIG_DISABLE_OPT,CONFIG_GCC_PLUGINS)
	$(foreach dts,$(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH)), \
>>>>		cp -f $(dts) $(LINUX_ARCH_PATH)/boot/dts/
	)
	$(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) all
	$(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME)
	$(LINUX_BUILD_DTB)
	$(LINUX_APPEND_DTB)
endef

https://git.busybox.net/buildroot/tree/linux/linux.mk?h=2020.11.x#n432

 

За ссылку спасибо, у меня dtsi файлы, на них команды cp нет. Я переименовал dtsi в dts, но все равно не видит инклюды

 DTC     arch/arm64/boot/dts/kernel.dtb
arch/arm64/boot/dts/kernel.dts:9:22: fatal error: zynqmp.dts: No such file or directory
compilation terminated.
scripts/Makefile.lib:299: recipe for target 'arch/arm64/boot/dts/kernel.dtb' failed
make[3]: *** [arch/arm64/boot/dts/kernel.dtb] Error 1
Makefile:1243: recipe for target 'kernel.dtb' failed
make[2]: *** [kernel.dtb] Error 2
package/pkg-generic.mk:247: recipe for target '/home/zynq/trenz-us/build/linux-xilinx-v2020.1/.stamp_built' failed
make[1]: *** [/home/zynq/trenz-us/build/linux-xilinx-v2020.1/.stamp_built] Error 2
Makefile:23: recipe for target '_all' failed
make: *** [_all] Error 2

файл kernel.dts

/*
 * CAUTION: This file is automatically generated by Xilinx.
 * Version:  
 * Today is: Sat Dec 19 18:33:06 2020
 */


/dts-v1/;
#include "/home/zynq/trenz_buildroot/board/trenz_mp/zynqmp.dts"
#include "/home/zynq/trenz_buildroot/board/trenz_mp/zynqmp-clk-ccf.dts"
#include "/home/zynq/trenz_buildroot/board/trenz_mp/pl.dts"
#include "/home/zynq/trenz_buildroot/board/trenz_mp/pcw.dts"
#include "/home/zynq/trenz_buildroot/board/trenz_mp/system-user.dts"
/ {
	chosen {
		bootargs = "earlycon clk_ignore_unused";
		stdout-path = "serial0:115200n8";
	};
	aliases {
		ethernet0 = &gem3;
		i2c0 = &axi_iic_sens1;
		i2c1 = &i2c0;
		i2c2 = &i2c1;
		serial0 = &uart0;
		spi0 = &qspi;
	};
	memory {
		device_type = "memory";
		reg = <0x0 0x0 0x0 0x7ff00000>;
	};
	cpus {
		/delete-node/ cpu@2 ;
		/delete-node/ cpu@3 ;
	};
};

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Aleksei_Rostov said:

у меня dtsi файлы, на них команды cp нет. Я переименовал dtsi в dts, но все равно не видит инклюды

не знаю зачем вы их переименовывали и добавляли полный путь в инклудах в dts - естественно так ничего не будет работать, ничего этого не нужно - просто указываете их в конфиге "как есть" через пробел все, dts копируются и  компилируются а dtsi только копируются в дерево исходников ядра

Quote

# We keep only the .dts files, so that the user can specify both .dts
# and .dtsi files in BR2_LINUX_KERNEL_CUSTOM_DTS_PATH. Both will be
# copied to arch/<arch>/boot/dts, but only the .dts files will
# actually be generated as .dtb.

https://git.busybox.net/buildroot/tree/linux/linux.mk?h=2020.11.x#n171

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, sasamy said:

не знаю зачем вы их переименовывали и добавляли полный путь в инклудах в dts - естественно так ничего не будет работать, ничего этого не нужно - просто указываете их в конфиге "как есть" через пробел все, dts копируются и  компилируются а dtsi только копируются в дерево исходников ядра

https://git.busybox.net/buildroot/tree/linux/linux.mk?h=2020.11.x#n171

 

Тоже так делал - все равно ошибка. Может нужно все эти файлы (dts и все dtsi) в BR2_LINUX_KERNEL_CUSTOM_DTS_PATH прописать?

Сейчас у меня так

BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y
BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_TRENZ_PATH)/board/trenz_mp/kernel.dts"

А сделать вот так

BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y
BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_TRENZ_PATH)/board/trenz_mp/kernel.dts"
BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_TRENZ_PATH)/board/trenz_mp/first.dtsi"
BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_TRENZ_PATH)/board/trenz_mp/second.dtsi"
  ...
BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_TRENZ_PATH)/board/trenz_mp/n.dtsi"

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Через пробел - это значит между именами должен быть разделитель пробел - как слова отделяются в предложении, только в конфиге в одной строке без  переносов

Quote

BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y
BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_TRENZ_PATH)/board/trenz_mp/kernel.dts    $(BR2_EXTERNAL_TRENZ_PATH)/board/trenz_mp/first.dtsi    $(BR2_EXTERNAL_TRENZ_PATH)/board/trenz_mp/second.dtsi ... $(BR2_EXTERNAL_TRENZ_PATH)/board/trenz_mp/n.dtsi"

 

 

BR2_LINUX_KERNEL_CUSTOM_DTS_PATH= .... - все в одной строке, это форумный движок перенос сделал

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, sasamy said:

Через пробел - это значит между именами должен быть разделитель пробел - как слова отделяются в предложении, только в конфиге в одной строке без  переносов

 

BR2_LINUX_KERNEL_CUSTOM_DTS_PATH= .... - все в одной строке, это форумный движок перенос сделал

 

Спасибо! Получилось!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...