• 0
Majid_Altaf

Device Tree Error while building Zybo Petalinux Image

Question

 I installed PetaLinux2016.1 for Creating Linux Image for Zybo Board. I have BSPs for Zybo Board with version 2015.4.

 

I created a Hardware system in vivado involving only Zynq PS and Two GPIOs one for Buttons and one for LEDs. I exported hdf file to Petalinux project. I then try to build petalinux project but it ends with the error as under:

 

INFO: Building linux
[INFO ] pre-build linux/rootfs/console-blank
[INFO ] pre-build linux/rootfs/fwupgrade
[INFO ] pre-build linux/rootfs/inittab_customisation
[INFO ] pre-build linux/rootfs/peekpoke
[INFO ] build system.dtb
[ERROR] Error: /home/engrm/Downloads/petalinux-bsps-master/releases/Digilent-Zybo-Linux-BD-v2015.4/subsystems/linux/configs/device-tree/system-top.dts:69.1-14 Label or path axi_dynclk_0 not found
[ERROR] Error: /home/engrm/Downloads/petalinux-bsps-master/releases/Digilent-Zybo-Linux-BD-v2015.4/subsystems/linux/configs/device-tree/system-top.dts:75.2-12 syntax error
[ERROR] make[1]: *** [system.dtb] Error 255
ERROR: Failed to build linux

 

Is this due to version mismatch of BSPs and Petalinux software or some thing else?

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 1

That error isn't caused by a version mis-match... but you may run into some problems down the road. You might want to switch to petalinux 2015.4. We have a plan to update the ZYBO petalinux project to 2016.2, but no timeframe yet. I wouldn't recommend waiting for it.

Back to the error you are getting, it is probably caused by the fact that your design doesn't have an axi_dynclk core in it, and therefore the system-top.dts file included with the project is trying to modify a device tree node that isn't being created by the tools. I recommend starting with the linux_bd project found in the ZYBO repository on our github, and then making your desired modifications to that project and importing that .hdf. That will ensure that several key aspects of the hardware design we used to generate the ZYBO petalinux project are present in your block diagram. For example, that project also routes an I2C controller over EMIO to the onboard EEPROM so that u-boot can read the globally unique MAC address from it and automatically configure the Ethernet controller to use it. If your design doesn't also route the I2C controller in this fashion, u-boot might fail (as it is configured in our petalinux project), or at the very least, you won't have a globally unique MAC address when you boot into Linux.

Edit: If you want to stick with your project as is and try to get it working, then you will just need to tackle these problems as they come up, and we can help with that. To solve this problem, just open up system-top.dts and remove the node that references axi_dynclk_0 and all other nodes that refer to video output (one will be called xilinx_drm). Note your system will not include HDMI output capabilities.

Share this post


Link to post
Share on other sites
  • 0
On 9/29/2016 at 6:06 AM, sbobrowicz said:

... it is probably caused by the fact that your design doesn't have an axi_dynclk core in it, and therefore the system-top.dts file included with the project is trying to modify a device tree node that isn't being created by the tools. I recommend starting with the linux_bd project found in the ZYBO repository on our github, and then making your desired modifications to that project and importing that .hdf. That will ensure that several key aspects of the hardware design we used to generate the ZYBO petalinux project are present in your block diagram. For example, that project also routes an I2C controller over EMIO to the onboard EEPROM so that u-boot can read the globally unique MAC address from it and automatically configure the Ethernet controller to use it. If your design doesn't also route the I2C controller in this fashion, u-boot might fail (as it is configured in our petalinux project), or at the very least, you won't have a globally unique MAC address when you boot into Linux.

Edit: If you want to stick with your project as is and try to get it working, then you will just need to tackle these problems as they come up, and we can help with that. To solve this problem, just open up system-top.dts and remove the node that references axi_dynclk_0 and all other nodes that refer to video output (one will be called xilinx_drm). Note your system will not include HDMI output capabilities.

I had a look at the diligent repository on github and the zybo linux_bd project. It provides an HDF but no vivado block layout so I can't see the connections that need to be made.

Could you please expand on which connections are needed?. I have been trying to find what the magic is, and I'm sure there's a set of connections that need to be made. Other xilinx forum posts advocate editing the device tree and adding, or expanding the PHY section and add a MAC address, but you are saying here that a set of connections should be made so that u-boot and kernel generated code initialise the PHY and GEM correctly using I2C. On the new Zybo Z7, another post says the generated I/O pin set up doesn't match the circuit diagram and hence needs a different connection to be set up.

Having reviewed the circuit for the Zybo 7000 that digilent makes available (see RTL8211 from Zybo 7000) I can see pins MDIO and MDC are labelled ETI_MDIO and ETI_MDC. These are connected via the Zynq-7000 block configuration into P5_MIO53_501 and P5_MIO52_501 respectively. Further, the 24AA02E48 chip that stores a MAC address looks to be configured to use AC_SDA/AC_SCL - an i2C interface - to extract it's address. These pins are connected to IO_L13P_T2_MRCC_34 and IO_L23P_T3_34.

how do I check these are configured? If i look at my block design in vivado for Zynq - I see ENET_0 is on, but I don't know if it's got the MDIO/MDC connected, nor the SDA/SCL.

are these the only two items to connect to have it generate the right linux device tree?

Any other guidance you can give? I want to do a cycle where I design the Vivado project, it results in an HDF that petalinux can use to generate a good enough linux that it operates the ethernet ok. Just don't know where I'm going wrong.

 

 

 

 

 

 

RTL8211 from Zybo 7000.PNG

MAC Address chip.PNG

MIO Eth pins.PNG

AC_SDA_SDC connection.PNG

zynq zybo block design.PNG

Share this post


Link to post
Share on other sites
  • 0

I solved my ethernet problem and the specific connections to make it work.

  1. I didn't have I2C enabled on the Zynq7 customisation. so I  also enabled I2C over EMIO. I think this hampered it's ability to communicate with the address chip
  2. I changed in the Zynq 7 processor MIO configuration - the ENET0 MDIO device is now MDIO pins MIO 52-53.

enet mdio.png

i2c emio.png

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now