Aleksei_Rostov 0 21 декабря, 2020 Опубликовано 21 декабря, 2020 · Жалоба Добрый день! Может есть специалисты по 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? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 61 21 декабря, 2020 Опубликовано 21 декабря, 2020 · Жалоба Может, просто во внешнем скрипте при сборке вызвать dtc? Сколько использую buildroot, избегаю собирать им ядро/u-boot - неудобства сплошные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 21 декабря, 2020 Опубликовано 21 декабря, 2020 · Жалоба 6 minutes ago, aaarrr said: Может, просто во внешнем скрипте при сборке вызвать dtc? Сколько использую buildroot, избегаю собирать им ядро/u-boot - неудобства сплошные. u-boot я тоже не собираю buildroot'ом. По kernel вопросов нет, путь к конфигу ядра прописан, кроме того в конфиге buildroot'а задаю версию ядра. Решение пока нашел что называется "в лоб": убрал все инклюды и добавил все в один файл kernel.dts. Это не очень хорошо, т.к. в каждом инклюде был определенный DT (например для PL части Zynq Ultrascale+ или отдельно все что касается памяти) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 11 22 декабря, 2020 Опубликовано 22 декабря, 2020 · Жалоба 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 23 декабря, 2020 Опубликовано 23 декабря, 2020 · Жалоба 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 ; }; }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 11 23 декабря, 2020 Опубликовано 23 декабря, 2020 (изменено) · Жалоба 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 Изменено 23 декабря, 2020 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 23 декабря, 2020 Опубликовано 23 декабря, 2020 · Жалоба 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" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 11 23 декабря, 2020 Опубликовано 23 декабря, 2020 (изменено) · Жалоба Через пробел - это значит между именами должен быть разделитель пробел - как слова отделяются в предложении, только в конфиге в одной строке без переносов 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= .... - все в одной строке, это форумный движок перенос сделал Изменено 23 декабря, 2020 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 23 декабря, 2020 Опубликовано 23 декабря, 2020 · Жалоба 1 hour ago, sasamy said: Через пробел - это значит между именами должен быть разделитель пробел - как слова отделяются в предложении, только в конфиге в одной строке без переносов BR2_LINUX_KERNEL_CUSTOM_DTS_PATH= .... - все в одной строке, это форумный движок перенос сделал Спасибо! Получилось! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться