首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找到定义任务的菜谱或类

找到定义任务的菜谱或类
EN

Stack Overflow用户
提问于 2018-11-13 19:17:21
回答 2查看 867关注 0票数 0

我是yocto,试图破译设备树是如何从(.hdf)文件构建的。但我的问题比较笼统。

是否有一种yocto方法可以找到任务的来源?给定任务名称,是否可以找到任务源代码所在的位置?(大概是在食谱或课堂上)

例如,编译设备树blob的meta层中的菜谱调用的Python do_create_yaml的源在哪里?

代码语言:javascript
复制
bitbake -e device-tree

将转储用于do_create_yaml的python源代码(其中包括大量的输出),但是我如何找到它的来源呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-21 21:55:27

我发现数据存储包含来自devpyshell的任务文件名为VarFlag。

代码语言:javascript
复制
pydevshell> d.getVarFlags("do_create_yaml")

给出

代码语言:javascript
复制
{'filename': '.....yocto/sources/core/../meta-xilinx-tools/classes/xsctyaml.bbclass', 'lineno': '61', 'func': 1, 'task': 1, 'python': '1', 'deps':   ['do_prepare_recipe_sysroot']}

因此,对于我问题中的示例,do_create_yaml任务的活动定义是在xsctyaml.bbclass中。

票数 0
EN

Stack Overflow用户

发布于 2018-11-13 20:28:46

设备树是Linux内核的一部分。在Yocto中,这是从KERNEL_DEVICETREE变量值编译的,或者是定义为LinuxKernel食谱的一部分,或者是机器配置的一部分。

例如,对于定义为cubieboard7的这里

代码语言:javascript
复制
KERNEL_DEVICETREE = "s700_cb7_linux.dtb"

指示编译使用 dts文件进行编译。这是由yocto通过使用各种类来完成的。

我们的例子中,我们使用inherits kernel-devicetree.bbclass,在这个类中(从内核-devicetree.bbclass复制),

代码语言:javascript
复制
do_compile_append() {
        for dtbf in ${KERNEL_DEVICETREE}; do
                dtb=`normalize_dtb "$dtbf"`
                oe_runmake $dtb
        done
}

do_install_append() {
        for dtbf in ${KERNEL_DEVICETREE}; do
                dtb=`normalize_dtb "$dtbf"`
                dtb_ext=${dtb##*.}
                dtb_base_name=`basename $dtb .$dtb_ext`
                dtb_path=`get_real_dtb_path_in_kernel "$dtb"`
                install -m 0644 $dtb_path ${D}/${KERNEL_IMAGEDEST}/$dtb_base_name.$dtb_ext
        done
}

do_deploy_append() {
        for dtbf in ${KERNEL_DEVICETREE}; do
                dtb=`normalize_dtb "$dtbf"`

这会追加要编译、安装和部署任务的任务。因此,定义KERNEL_DEVICETREE可以自动构建dtb。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53288060

复制
相关文章

相似问题

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