我已经在一个单独的内核配方中构建了一个新的内核模块,请参阅下面的文件夹结构。作为这个驱动程序的一部分,在生成最终的设备树(即它有常量)以及我的驱动程序时,设备树编译器将使用一个标头。
通常安装这些文件的地方是dt-bindings/clock/clk-driver.h --我已经创建了一个新的头文件,用于设备树的编译;但是,如果在模块的配置阶段将其复制到内核源代码,那么对于设备树编译器来说太晚了。
为此,我向设备树配方(设备-tree.bbappend)添加了一个新的configure_prepend,将其复制到工作共享的内核源代码中。但是,这感觉是错误的,因为我的标题现在与它所引用的内核模块有不同的配方。我尝试添加一个依赖项,以便设备树编译器在内核构建之后运行,但这造成了循环依赖的错误。
在正确的阶段将设备树编译器使用的表外模块头添加到内核源代码的正确方法是什么?
文件夹结构:
meta-mylayer/
├── conf
│ └── layer.conf
│ └── status-report.bb
├── recipes-bsp
│ ├── device-tree
│ │ ├── device-tree.bbappend
│ │ └── files
│ │ └── dt-clock.h
└── recipes-modules
└── clock
├── files
│ ├── clock.c
│ ├── COPYING
│ ├── Makefile
│ └── clock.h
├── README
└── clock.bb发布于 2022-02-27 18:02:31
我找到了我自己的解决方案。
以下三个步骤是我为使它发挥作用所做的工作。注意,从本质上说,这会将设备树的配方推迟到内核模块编译之后(据我理解)。
。
设备树(.bbappend文件)
do_configure[depends] += "virtual/kernel:do_compile_kernelmodules"内核模块配方(.bb文件)
do_configure[depends] += "virtual/kernel:do_shared_workdir"
do_configure_append() {
cp ${S}/clk.h ${TMPDIR}/work-shared/${MACHINE}/kernel-source/include/linux/platform_data/clk.h
cp ${S}/clk-dts.h ${TMPDIR}/work-shared/${MACHINE}/kernel-source/include/dt-bindings/clock/clk-dts.h
}https://stackoverflow.com/questions/71202668
复制相似问题