2 Replies Latest reply on Nov 23, 2020 12:07 PM by narrucmot

    PetaLinus 2019.2 device-tree failed to build for MicroZed platform


      I am very new to Vivado, Vitis, and PetaLinux, but have managed to design embedded user code for the Zynq 7Z020 PS that communicates directly to the PL on a MicroZed platform.  There are only a few items of note:

      1.  I am using the 2019.2 revisions of Vivado (Windows 10), Vitis (Windows 10), and Petalinux (Ubuntu).

      2.  Embedded user code and custom PL boot from a FAT32 partition on a microSD card and read/write data files on an exFAT partition on the same microSD card.

      3.  Embedded user code accesses custom PL via AXI interface and accesses the ARM processor's interrupt system, both courtesy of Vitis.


      I depended heavily on Vivado and Vitis automation to achieve the above, and now am depending heavily on PetaLinux automation to achieve the following on the MicroZed platform:

      A.  I want to boot embedded Linux and custom PL from a FAT32 partition on a microSD, while having an ext4 partition for the user code's reading/writing data files.

      B.  User code is no longer embedded, but rather installed on the Linux operating system and accessing custom PL and ARM processor's interrupt system via Linux drivers, which I assume will require modifications to the originally embedded user code.


      My understanding is that by working through (A), I will discover how my user code can be modified for the Linux drivers and then installed on the Linux operating system to autorun on power-up.  However, I am struggling with the PetaLinux automation getting through (A) and have attached the resulting log file from the device tree's failed build.  Prior to executing the failed petalinux-build at the command prompt, I had executed petalinux-config, making some minor tweaks before successfully exiting the config GUI.


      Because I am very new to Vivado, Vitis, and PetaLinux, I don't have extreme knowledge of the makefiles, tcl files, etc, and hence my heavy dependence on all the tools' automation GUIs and the MicroZed BSP provided online.  Simple guidance would be greatly appreciated, as well as any corrections to my previously mentioned understanding of matters.


      Thanks for taking the time to read and consider!  My log file attachment was disallowed, so here are the contents of log.do_configure.29244:


      DEBUG: Executing shell function do_configure

      MISC_ARG is  -hdf_type xsa -yamlconf /home/davidjones/mz7020_fmccc_2019_2/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx-v2019.2+gitAUTOINC+a8b39cf536-r0/device-tree.yaml

      APP_ARG is  -app "device-tree"

      Using xsct from: /opt/pkg/petalinux/2019.2/tools/xsct/bin/xsct

      cmd is: xsct -sdx -nodisp /home/davidjones/mz7020_fmccc_2019_2/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx-v2019.2+gitAUTOINC+a8b39cf536-r0/dtgen.tcl -ws /home/davidjones/mz7020_fmccc_2019_2/build/../components/plnx_workspace/device-tree -pname device-tree -rp /home/davidjones/mz7020_fmccc_2019_2/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx-v2019.2+gitAUTOINC+a8b39cf536-r0/git -processor ps7_cortexa9_0 -hdf /home/davidjones/mz7020_fmccc_2019_2/build/tmp/deploy/images/plnx-zynq7/Xilinx-plnx-zynq7.xsa -arch 32  -app "device-tree"  -hdf_type xsa -yamlconf /home/davidjones/mz7020_fmccc_2019_2/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx-v2019.2+gitAUTOINC+a8b39cf536-r0/device-tree.yaml

      INFO: [Hsi 55-2053] elapsed time for repository (/opt/pkg/petalinux/2019.2/tools/xsct/data/embeddedsw) loading 0 seconds

      missing operator at _@_

      in expression "61 _@_62 63 64 65 66 67 68 -..."

      ERROR: [Hsi 55-1545] Problem running tcl command ::sw_device_tree::generate : missing operator at _@_

      in expression "61 _@_62 63 64 65 66 67 68 -..."

          (parsing expression "61 62 63 64 65 66 67 6...")

          invoked from within

      "expr $intr_id - 32"

          ("foreach" body line 81)

          invoked from within

      "foreach pin ${intr_port_name} {

                      set connected_intc [get_intr_cntrl_name $drv_handle $pin]

                      if {[llength $connected_intc] == 0 || [string match $con..."

          (procedure "gen_interrupt_property" line 30)

          invoked from within

      "gen_interrupt_property $drv_handle"

          ("foreach" body line 7)

          invoked from within

      "foreach drv_handle [get_drivers] {

              # generate the default properties

              gen_peripheral_nodes $drv_handle "create_node_only"


          (procedure "::sw_device_tree::generate" line 3)

          invoked from within

      "::sw_device_tree::generate device_tree"

      ERROR: [Hsi 55-1442] Error(s) while running TCL procedure generate()

      generate_target failed

          while executing

      "error "generate_target failed""

          invoked from within

      "if {[catch {hsi generate_target -dir $project} res]} {

              error "generate_target failed"


          (file "/home/davidjones/mz7020_fmccc_2019_2/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx-v2019.2+gitAUTOINC+a8b39cf536-r0/dtgen.tcl" line 38)

      WARNING: /home/davidjones/mz7020_fmccc_2019_2/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx-v2019.2+gitAUTOINC+a8b39cf536-r0/temp/run.do_configure.29244:1 exit 1 from 'eval xsct -sdx -nodisp /home/davidjones/mz7020_fmccc_2019_2/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx-v2019.2+gitAUTOINC+a8b39cf536-r0/dtgen.tcl -ws /home/davidjones/mz7020_fmccc_2019_2/build/../components/plnx_workspace/device-tree -pname device-tree -rp /home/davidjones/mz7020_fmccc_2019_2/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx-v2019.2+git@@@                                                                                                                                                                             1,1           Top