LINUX.ORG.RU

Проблема с переездом на device tree

 


0

1

Всем привет,

Надо в одном встроенном устройстве на Atmel ARM процессоре переехать с 3.10 на новое ядро. Взял 3.19. И тут заподлец - ребята переехали в 3.19 на device tree. Ну ладно. Хочу скомпилировать ядро снячала просто для Evaluation Kit. Вызываю:

Kernel$ make -j4 ARCH=arm CROSS_COMPILE=/home/Developer/Toolchain/arm-toolchain/usr/bin/arm-linux- at91_dt_defconfig at91sam9m10g45ek.dtb

Получаю:

DTC arch/arm/boot/dts/at91sam9m10g45ek.dtb
In file included from arch/arm/boot/dts/at91sam9m10g45ek.dts:10:0:
arch/arm/boot/dts/at91sam9g45.dtsi:13:34: fatal error: dt-bindings/dma/at91.h: No such file or directory
compilation terminated.
make[2]: *** [arch/arm/boot/dts/at91sam9m10g45ek.dtb] Error 1

Это как понимать? Похоже этот DTC не находит заголовочные файлы, но не найду, как ему указать пути поиска? Или, может, я что-то совсем не догоняю?

Всем заранее спасибо, velik


А из какой директории пытаетесь выполнить сборку? Могу ошибаться, но надо перейти непосредственно в директорию, в которой лежат дтс

Deleted ()
Ответ на: комментарий от Deleted

Сборка выполняется всегда из корневой директории сырцов ядра.

Dark_SavanT ★★★★★ ()

Посмотри внимательно куда эти фаилы со времён 3.10 переехали. Они могли.

И да, привыкай к боли и страданиям, когда бампаешь версию ядра.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

Собираю таки да из корневой директории ядра. Это не проблема. Тут, как я заметил, проблема немного в другом. В старых ядрах в dts файлах подключались другие файлы через что-то вроде

 /include/ "skeleton.dtsi"

Сейчас поменяли всё на что-то типа

 #include "skeleton.dtsi"

И это у меня не проходит. Главное, что в доках dtc явно стоит:

Source files may be directly included using the syntax:

    /include/ "filename"

Млин, но у других же такое работает. Почему у меня нет?

velikS ()
Ответ на: комментарий от velikS

Соврал маленько. У меня не понимает пот такие инклюды:

#include <dt-bindings/dma/at91.h>

Но всё равно такой стиль в dtc не задокументирован...

velikS ()
Ответ на: комментарий от velikS

Если вдруг кому будет интересно: в последних ядрах DTC применяют С препроцессор, поэтому возможны инклюды в С стиле. А у мокго бага растут ноги из-за того, что С препроцессору не выставлен путь. Даже странно, почему у других работает, а у меня нет. Правится следующим образом:

diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 044eb4f..ba6e6d7 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -160,6 +160,7 @@ cpp_flags      = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(LINUXINCLUDE)     \
 ld_flags       = $(LDFLAGS) $(ldflags-y)
 
 dtc_cpp_flags  = -Wp,-MD,$(depfile).pre.tmp -nostdinc                    \
+                -I$(srctree)/include                                    \
                 -I$(srctree)/arch/$(SRCARCH)/boot/dts                   \
                 -I$(srctree)/arch/$(SRCARCH)/boot/dts/include           \
                 -I$(srctree)/drivers/of/testcase-data                   \

velikS ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.