首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >yocto中的树外模与dt绑定

yocto中的树外模与dt绑定
EN

Stack Overflow用户
提问于 2022-02-21 07:36:25
回答 1查看 195关注 0票数 0

我已经在一个单独的内核配方中构建了一个新的内核模块,请参阅下面的文件夹结构。作为这个驱动程序的一部分,在生成最终的设备树(即它有常量)以及我的驱动程序时,设备树编译器将使用一个标头。

通常安装这些文件的地方是dt-bindings/clock/clk-driver.h --我已经创建了一个新的头文件,用于设备树的编译;但是,如果在模块的配置阶段将其复制到内核源代码,那么对于设备树编译器来说太晚了。

为此,我向设备树配方(设备-tree.bbappend)添加了一个新的configure_prepend,将其复制到工作共享的内核源代码中。但是,这感觉是错误的,因为我的标题现在与它所引用的内核模块有不同的配方。我尝试添加一个依赖项,以便设备树编译器在内核构建之后运行,但这造成了循环依赖的错误。

在正确的阶段将设备树编译器使用的表外模块头添加到内核源代码的正确方法是什么?

文件夹结构:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-27 18:02:31

我找到了我自己的解决方案。

以下三个步骤是我为使它发挥作用所做的工作。注意,从本质上说,这会将设备树的配方推迟到内核模块编译之后(据我理解)。

  1. 在内核上添加了依赖于内核模块的配方,创建了共享工作目录(即提取内核源代码
  2. 在内核模块配方中添加了一个配置步骤,以便将文件复制到内核源代码中的正确位置。
  3. 在设备树配方中添加了一个步骤,增加了对内核模块编译的依赖。)

设备树(.bbappend文件)

代码语言:javascript
复制
do_configure[depends] += "virtual/kernel:do_compile_kernelmodules"

内核模块配方(.bb文件)

代码语言:javascript
复制
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    
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71202668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档