Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎06-02-2017

Device Tree Errors During Petalinux Compile

I am trying get Ethernet up and running for the ZCU102 development board. I am using the example design for the 1G AXI Ethernet Subsystem described here: Ethernet Example Design. The example works fine, until I add an IP block to the design. I have connected the Xilinx AXI4-Stream Broadcaster to the rxd AXI4-Stream port of the Ethernet block. I want to see the receive data and store it somewhere else, while still having it connected to the DMA block. 


This builds fine in Vivado, but I get errors when trying to build the Petalinux image using the .hdf file generated from the hardware build. 

This is the log of the error that I get:


| DEBUG: Executing shell function do_compile
| ERROR (phandle_references): Reference to non-existent node or label "axis_broadcaster_0"
| ERROR (phandle_references): Reference to non-existent node or label "axis_broadcaster_0"
| ERROR: Input tree has errors, aborting (use -f to force output)
| WARNING: exit code 2 from a shell command.
| ERROR: Function failed: do_compile 

The AXI Broadcaster is connected to the Ethernet block and in the device tree for the Ethernet block, there is an attribute for connected AXI4-Stream blocks. The axis_broadcaster_0 label is listed there, however since this is a simple IP block with no registers, there is no entry in the device tree for it, so Petalinux does not know what it is. 


Here is the snipped from the generated device tree (pl.dtsi), where the axi_broadcaster_0 label appears. There is no entry for axi_broadcaster_0 anywhere in any of the generated device tree files, which I believe is why I get this error. 


 axi_eth_0: ethernet@80000000 {
                        axistream-connected = <&axis_broadcaster_0>;
                        axistream-control-connected = <&axis_broadcaster_0>;
                        clock-frequency = <100000000>;
                        compatible = "xlnx,axi-ethernet-1.00.a";
                        device_type = "network";
                        interrupt-parent = <&gic>;
                        interrupts = <0 91 4>;

I am not sure how to get around this problem. Eventually I will want to connect a custom IP block to process the RX Ethernet data, however this block will also not require any registers and therefore will also not have a device tree entry. 


The AXI Broadcaster does not need a driver or anything like that and is therefore not listed in the .mss. It is in the .hdf file as an IP included in the design though. Is there a way to force a device tree entry to be generated for all of the IP blocks in the system?


I have tried other blocks, and I receive the same error for any block I connect here that does not require a driver and has no registers (and therefore does not appear in the .mss). 


I have attached the generated .mss and .hdf, as well as the device tree files. Any help with this is greatly appreciated. 

0 Kudos
0 Replies