Yocto找到定义任务的配方或类

时间:2018-11-13 19:17:21

标签: yocto xilinx device-tree

我是yocto菜鸟,试图从Xilinx硬件定义(.hdf)文件中了解如何构建设备树。但是我的问题更笼统。

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

例如,Python任务do_create_yaml的源在哪里,该任务由meta-xilinx-bsp层中编译设备树Blob的配方调用?

window.addEventListener("load", async function loadImageCollection() {
    var u = imageNames.length - 1;
    for(i = 0; i <= u; i++) {
        var name = imageNames[i];
        imageCollection[name] = new Image();
        imageCollection[name].src = imageFileNames[i] + ".png";
        do {
            await new Promise((resolve, reject) => setTimeout(resolve, 50));
            x = imageCollection[name].complete;
            console.log(x);
        }
        while(x == false);
    }   
    drawGameMenu();
});

会为do_create_yaml(在其余的出色输出中)转储python源,但是我如何找到它的来源呢?

2 个答案:

答案 0 :(得分:0)

设备树是Linux内核的一部分。在Yocto中,此变量是根据KERNEL_DEVICETREE变量值编译而来的,变量值定义为Linux内核配方或计算机配置的一部分。

例如,对于定义为here的cubieboard7,

KERNEL_DEVICETREE = "s700_cb7_linux.dtb"

指示编译使用this dts文件进行编译。 yocto通过使用各种类来完成此操作。

our example中,我们inherit kernel.bbclass在该类中(依次从kernel-devicetree.bbclass复制)inherits kernel-devicetree.bbclass

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。

答案 1 :(得分:0)

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

pydevshell> d.getVarFlags("do_create_yaml")

给予

{'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中。