[meta-xilinx] meta-xilinx device-tree recipe on master / yocto pyro

Holden.Sandlar at ultra-fei.com Holden.Sandlar at ultra-fei.com
Thu Oct 5 06:57:13 PDT 2017


Hi Nathan,

Thanks for the clarification on the intent of this recipe. I am able to 
use the device-tree-generation recipe in meta-xilinx-tools to generate a 
device tree, but I have not yet tracked down why there are some missing 
entries. In particular, for the ZCU102 I expect to see nodes associated 
with the TI I2C-based GPIO controller to set the GTR on-board muxes. Here 
is an example of these entries when building with bitbake/poky 1.32.0 and 
the 2017.2 tag of meta-xilinx and meta-xilinx-tools (per directions 
provided by Xilinx's wiki)  --

                i2c at ff020000 {
                        compatible = "cdns,i2c-r1p14", "cdns,i2c-r1p10";
                        status = "okay";
                        interrupt-parent = <0x4>;
                        interrupts = <0x0 0x11 0x4>;
                        reg = <0x0 0xff020000 0x0 0x1000>;
                        #address-cells = <0x1>;
                        #size-cells = <0x0>;
                        power-domains = <0x15>;
                        clocks = <0x3 0x3d>;
                        pinctrl-names = "default", "gpio";
                        pinctrl-0 = <0x16>;
                        pinctrl-1 = <0x17>;
                        scl-gpios = <0x18 0xe 0x0>;
                        sda-gpios = <0x18 0xf 0x0>;
                        clock-frequency = <0x61a80>;

                        gpio at 20 {
                                compatible = "ti,tca6416";
                                reg = <0x20>;
                                gpio-controller;
                                #gpio-cells = <0x2>;

                                gtr_sel0 {
                                        gpio-hog;
                                        gpios = <0x0 0x0>;
                                        output-low;
                                        line-name = "sel0";
                                };

                                gtr_sel1 {
                                        gpio-hog;
                                        gpios = <0x1 0x0>;
                                        output-low;
                                        line-name = "sel1";
                                };
...



As mentioned, when I build with the device-tree-generation recipe my dts 
contains nodes for the gpio at 20, gpio at 21, etc. but does not contain the 
gtr_sel0/1/2/3 sub-nodes. I can see that these nodes exist in the kernel's 
dts for the ZCU102 here -- 
https://github.com/Xilinx/linux-xlnx/blob/master/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-revA.dts#L184

 Essentially my end-goal is to have my device tree recipe build the 
dts/dtb which includes the kernel source dts's and any additional custom 
entries required by my custom hardware (described within the hdf). What am 
I missing to achieve this? It seems like the device-tree-generation recipe 
only deals with the HDF file and the device-tree recipe only deals with 
additions to the kernel source dts's.

Thanks,
Holden



From:   Nathan Rossi <nathan at nathanrossi.com>
To:     Holden.Sandlar at ultra-fei.com
Cc:     meta-xilinx at yoctoproject.org
Date:   10/05/2017 04:05 AM
Subject:        Re: [meta-xilinx] meta-xilinx device-tree recipe on master 
/ yocto pyro



On 5 October 2017 at 07:34,  <Holden.Sandlar at ultra-fei.com> wrote:
> Hi all,
>
> I'm hoping this is a quick and easy issue someone already knows the 
answer
> to. I'm working with a ZCU102, using meta-petalinux, meta-xilinx,
> meta-xilinx-tools and bitbake/poky 1.34.0 -- both meta-xilinx and
> meta-xilinx-tools on the master branch and am having an issue with the
> meta-xilinx device-tree recipe. Just for quick and easy reference, the
> device-tree recipe is here:
> 
https://github.com/Xilinx/meta-xilinx/blob/master/recipes-bsp/device-tree/device-tree.bb

>
> The issue that I'm running into is that when I run "bitbake device-tree" 
I
> get an error that there are no dts files in the device-tree/1.0-r0
> directory. Full error shown below:
>
> ERROR: device-tree-1.0-r0 do_compile: Function failed: do_compile (log 
file
> is located at
> 
/work/MPSoC/yocto_2017.2/build/tmp/work/zcu102_zynqmp-xilinx-linux/device-tree/1.0-r0/temp/log.do_compile.15884)
> ERROR: Logfile of failure stored in:
> 
/work/MPSoC/yocto_2017.2/build/tmp/work/zcu102_zynqmp-xilinx-linux/device-tree/1.0-r0/temp/log.do_compile.15884
> Log data follows:
> | DEBUG: Executing shell function do_compile
> |
> 
/work/MPSoC/yocto_2017.2/build/tmp/work/zcu102_zynqmp-xilinx-linux/device-tree/1.0-r0
> | gcc: error:
> 
/work/MPSoC/yocto_2017.2/build/tmp/work/zcu102_zynqmp-xilinx-linux/device-tree/1.0-r0/*.dts:
> No such file or directory
> | gcc: warning: ‘-x assembler-with-cpp’ after last input file has no 
effect
> | gcc: fatal error: no input files
> | compilation terminated.
> | WARNING:
> 
/work/MPSoC/yocto_2017.2/build/tmp/work/zcu102_zynqmp-xilinx-linux/device-tree/1.0-r0/temp/run.do_compile.15884:1
> exit 4 from 'gcc -E -nostdinc -Ulinux -x assembler-with-cpp
> 
-I/work/MPSoC/yocto_2017.2/build/tmp/work/zcu102_zynqmp-xilinx-linux/device-tree/1.0-r0
> 
-I/work/MPSoC/yocto_2017.2/build/tmp/work-shared/zcu102-zynqmp/kernel-source/arch/arm64/boot/dts
> 
-I/work/MPSoC/yocto_2017.2/build/tmp/work-shared/zcu102-zynqmp/kernel-source/arch/arm64/boot/dts/include
> 
-I/work/MPSoC/yocto_2017.2/build/tmp/work-shared/zcu102-zynqmp/kernel-source/arch/arm64/boot/dts/xilinx
> -o `basename ${DTS_FILE}`.pp ${DTS_FILE}'
> | ERROR: Function failed: do_compile (log file is located at
> 
/work/MPSoC/yocto_2017.2/build/tmp/work/zcu102_zynqmp-xilinx-linux/device-tree/1.0-r0/temp/log.do_compile.15884)
> ERROR: Task
> 
(/work/MPSoC/yocto_2017.2/sources/core/../meta-xilinx/recipes-bsp/device-tree/device-tree.bb:do_compile)
> failed with exit code '1'
> NOTE: Tasks Summary: Attempted 534 tasks of which 464 didn't need to be
> rerun and 1 failed.
>
> Summary: 1 task failed:
>
> 
/work/MPSoC/yocto_2017.2/sources/core/../meta-xilinx/recipes-bsp/device-tree/device-tree.bb:do_compile
> Summary: There were 5 WARNING messages shown.
> Summary: There was 1 ERROR message shown, returning a non-zero exit 
code.
>
> After reviewing the history on this recipe, it appears the recipe was
> restructured months ago to "Improve, clean up and remove
> MACHINE_DEVICETREE". Based on this commit, it appears the intent was to 
use
> the dts/dtsi files within the kernel sources as a base for generating a
> device tree. There was a line added to ensure that
> "virtual/kernel:do_shared_workdir" is run prior to the device-tree 
recipe.
> My assumption is that the kernel recipe do_shared_workdir task is 
supposed
> to copy the selected machine's dts files into the shared workdir so they 
can
> be used by this device-tree recipe. However, this does not seem to 
happen in
> my case --
>
> 
/work/MPSoC/yocto_2017.2/build/tmp/work-shared/zcu102-zynqmp/kernel-source$
> ls
> arch   COPYING  Documentation  fs       ipc      kernel       Makefile
> README          scripts   tools
> block  CREDITS  drivers        include  Kbuild   lib          mm
> REPORTING-BUGS  security  usr
> certs  crypto   firmware       init     Kconfig  MAINTAINERS  net
> samples         sound     virt
>
> Additionally, the device-tree recipe loops over any *.dts files in the 
${S}
> directory, which is mapped to ${WORKDIR} in this recipe
> (
https://github.com/Xilinx/meta-xilinx/blob/master/recipes-bsp/device-tree/device-tree.bb#L51
).
> This loop will effectively do an ls in the
> build/tmp/work/zcu102_zynqmp-xilinx-linux/device-tree/1.0-r0 directory 
to
> check for any *.dts files. This directory definitely does not contain 
any
> dts files.
>
> I'm guessing I'm missing something small/simple here. Can anyone provide 
any
> guidance?

The 'device-tree' recipe is intended to build custom source
device-trees within OE outside of the kernel source itself (whilst
still being able to reference the kernel dts includes).

Unless you have provided some additional device tree sources via a
.bbappend to device-tree (like meta-xilinx does for some specific
machines 
https://github.com/Xilinx/meta-xilinx/blob/master/recipes-bsp/device-tree/device-tree.bbappend
)
there will be no dts files in the ${S} directory of the device-tree
recipe build and it will fail.

The zcu102-zynqmp board already has device trees in the linux-xlnx
kernel source (built by setting KERNEL_DEVICETREE in the machine
conf), so there is no need to use device-tree for that machine.

If you are using meta-xilinx-tools you might be confusing
'device-tree' for the 'device-tree-generation' recipe? Which uses
Xilinx tools to generate device trees from your HDF design.

Regards,
Nathan





-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/meta-xilinx/attachments/20171005/b9271ef9/attachment.html>


More information about the meta-xilinx mailing list