UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Adventurer
Adventurer
6,908 Views
Registered: ‎03-27-2014

Ubuntu on Zynq ZC706

Hello all,

I found a page at http://www.wiki.xilinx.com/Ubuntu+on+Zynq that has the kernel image and root filesystem for ZC702. The instructions suggest that it should be possible to replicate the steps for a ZC706 as well. However, I am relatively new to embedded Linux and unable to boot Ubuntu on my ZC706.

 

Steps that I did:

  1. Created an SD card with 2 partitions and mounted them.
  2. cp 2013.4-release/zc70x/zc706/boot.bin /mnt/boot
  3. cp 2013.4-release/zc70x/zc706/devicetree.dtb /mnt/boot
  4. cp zync-ubuntu-core/boot/uImage /mnt/boot
  5. cp zync-ubuntu-core/boot/uramdisk.image.gz /mnt/boot
  6. cp -r zync-ubuntu-core/rootfs/*  /mnt/root
  7. Unmount the two partitions and try on the Zynq ZC706 board.

 

Basically, I took the kernel and rootfs from the Ubuntu release on wiki.xilinx.com and the boot.bin and devicetree from the 2013.4 release. Obviously, I made a mistake because it can't be this simple. If it were then the wiki page would have added support for ZC706 as well and not just for ZC702. What more needs to be done? Any tips are welcome. I will experiment etc. The current error message is below.

 

Best regards and many thanks!

 

----

In:    serial
Out:   serial
Err:   serial
Net:   Gem.e000b000
Hit any key to stop autoboot:  0
Device: zynq_sdhci
Manufacturer ID: 28
OEM: 4245
Name:       
Tran Speed: 50000000
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 14.9 GiB
Bus Width: 4-bit
reading uEnv.txt
** Unable to read file uEnv.txt **
Copying Linux from SD to RAM...
reading uImage
2996704 bytes read in 290 ms (9.9 MiB/s)
reading devicetree.dtb
9192 bytes read in 15 ms (597.7 KiB/s)
reading uramdisk.image.gz
3387520 bytes read in 328 ms (9.8 MiB/s)
## Booting kernel from Legacy Image at 03000000 ...
   Image Name:   Linux-3.8.0-xilinx-00015-gabc285
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2996640 Bytes = 2.9 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 02000000 ...
   Image Name:   
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    3387456 Bytes = 3.2 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 02a00000
   Booting using the fdt blob at 0x2a00000
   Loading Kernel Image ... OK
   Loading Ramdisk to 1fcc4000, end 1ffff040 ... OK
   Loading Device Tree to 1fcbe000, end 1fcc33e7 ... OK

Starting kernel ...


Error: unrecognized/unsupported device tree compatible list:
[ 'xlnx,zynq-7000' ]

Available machine support:

ID (hex)    NAME
ffffffff    ARM-Versatile Express
000008e0    ARM-Versatile Express
00000d32    Xilinx Zynq Platform

Please check your kernel config and/or bootloader.

0 Kudos
6 Replies
Xilinx Employee
Xilinx Employee
6,905 Views
Registered: ‎03-13-2012

Re: Ubuntu on Zynq ZC706

Actually, it should be just that simple. It looks like you use a Petalinux image.ub together with a DT from one of the releases on the wiki? I think your problem currently is just a mismatch between kernel and the used DT. Try using kernel and DT from one source.

0 Kudos
Adventurer
Adventurer
6,891 Views
Registered: ‎03-27-2014

Re: Ubuntu on Zynq ZC706

Thanks sorenb for a prompt reply and pointer.

 

I did not intentionally use anything from Petalinux. I got the kernel and rootfs from Ubuntu but needed the boot image and DT for ZC706 so pulled those from the 2013.4 release at:

 

http://www.wiki.xilinx.com/Zynq+2013.4+Release

 

1. I assume that all releases prior to 14.6 were Petalinux based but 2013.4 is not.

2. More importantly, boot.bin and DT should be Linux independent, correct? The FSBL, uBoot and devicetree blob describe the real basic stuff (in my really simplistic view)??

 

So I clearly see that I am mixing/matching stuff that doesn't work but don't understand where to get the correct boot.bin and devicetree.dtb from for Ubuntu?

 

Perhaps I need to build it myself. Is DT specific to a Linux flavor?

0 Kudos
Xilinx Employee
Xilinx Employee
6,884 Views
Registered: ‎03-13-2012

Re: Ubuntu on Zynq ZC706


@agaurav wrote:

Thanks sorenb for a prompt reply and pointer.

 

I did not intentionally use anything from Petalinux. I got the kernel and rootfs from Ubuntu but needed the boot image and DT for ZC706 so pulled those from the 2013.4 release at:

 

http://www.wiki.xilinx.com/Zynq+2013.4+Release

 

1. I assume that all releases prior to 14.6 were Petalinux based but 2013.4 is not.


 Well it's complicated. Some of the binaries are built using Petalinux, but the sources kernel, U-Boot etc. are built from, are not the ones you get in a default Petalinux build. For those releases the sources are taken from the release tags (the non-Petalinux ones) in the soure repositories.

 


@agaurav wrote:

2. More importantly, boot.bin and DT should be Linux independent, correct? The FSBL, uBoot and devicetree blob describe the real basic stuff (in my really simplistic view)??


 In a perfect world that might be true, but unfortunately this isn't one. The information in the DT must be somewhat aligned with what the Linux and its drivers expect. So, if you built everything through Petalinux this should be aligned, but you have an old kernel and a new DT, resulting in this mismatch.

 

 


@agaurav wrote:

So I clearly see that I am mixing/matching stuff that doesn't work but don't understand where to get the correct boot.bin and devicetree.dtb from for Ubuntu?

 

Perhaps I need to build it myself. Is DT specific to a Linux flavor?


FSBL, U-Boot and boot.bin should not really matter. You should just need a kernel and DT that match and, in contrast to the stock DT from the release on the wiki, the 'root=' kernel argument needs to be adjusted to use the rootfs on the SDCard (I'm not sure whether the wiki version of Ubuntu requires this though. It's been a while).

0 Kudos
Adventurer
Adventurer
6,881 Views
Registered: ‎03-27-2014

Re: Ubuntu on Zynq ZC706

You are great. Thanks for helping me out. I am getting a better understanding now.

 

>>>> You should just need a kernel and DT that match and, in contrast to the stock DT from the release on the wiki, the 'root=' kernel argument needs to be adjusted to use the rootfs on the SDCard (I'm not sure whether the wiki version of Ubuntu requires this though. It's been a while).

>>>

 

This makes sense. How do I get the correct devicetree.dtb for my ZC706 to use with Ubuntu? The stock DT on the release is a binary .dtb file (not a .dts file)? Any further tips.

 

Sorry for taking your time...

0 Kudos
Xilinx Employee
Xilinx Employee
6,879 Views
Registered: ‎03-13-2012

Re: Ubuntu on Zynq ZC706

There are some generic instrucitons on our wiki http://www.wiki.xilinx.com/Build+Device+Tree+Blob

 

I think it has instructions how to convert a dtb back to dts. Moreover, dts files for our boards are included with the kernel sources: https://github.com/Xilinx/linux-xlnx/blob/master-next/arch/arm/boot/dts/zynq-zc706.dts

 

0 Kudos
Visitor mora_an
Visitor
3,448 Views
Registered: ‎10-29-2015

Re: Ubuntu on Zynq ZC706

Sorry for reviving this old thread.

 

Currently I am trying to run ubuntu on my Zc706 and I am performing the same steps as indicated by OP.

 

I am getting the FSBL, U-Boot and boot.bin from Znyq 2015.2 PetaLinux release (http://www.wiki.xilinx.com/Zynq+Releases). I am getting the uImage, uramdisk.image.gz, devicetree.dtb and rootfs from Ubuntu Core (http://www.wiki.xilinx.com/Ubuntu+on+Zynq). Although the Ubuntu core is meant for Zc702, i figued the same thing will be suitabel for Zc706 aswell.

 

When I boot the device, It gets hung at this point:

CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x3af1e8 - 0x3af21c
L310 cache controller enabled
l2x0: 8 ways, CACHE_ID 0x000000c0, AUX_CTRL 0x72360000, Cache size: 524288 B
CPU1: Booted secondary processor
CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
Brought up 2 CPUs
SMP: Total of 2 processors activated (2664.03 BogoMIPS).
devtmpfs: initialized
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
xgpiops e000a000.gpio: gpio at 0xe000a000 mapped to 0xf000c000
hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
hw-breakpoint: maximum watchpoint size is 4 bytes.
bio: create slab <bio-0> at 0
vgaarb: loaded
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
PTP clock support registered
Switching to clocksource xttcps_clocksource
NET: Registered protocol family 2
TCP established hash table entries: 8192 (order: 4, 65536 bytes)
TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
TCP: reno registered
UDP hash table entries: 512 (order: 2, 16384 bytes)
UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
Trying to unpack rootfs image as initramfs...
Freeing initrd memory: 3308K
hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
bounce pool size: 64 pages
jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
msgmni has been set to 1490
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
dma-pl330 f8003000.ps7-dma: Loaded driver for PL330 DMAC-267056
dma-pl330 f8003000.ps7-dma:     DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16
xuartps e0001000.uart: failed to get alias id, errno -19
e00console [ttyPS0] enabled, bootconsole disabled
console [ttyPS0] enabled, bootconsole disabled
xdevcfg f8007000.devcfg: ioremap f8007000 to f0062000 with size 100
brd: module loaded
loop: module loaded
xqspips e000d000.spi: master is unqueued, this is deprecated

 

What am i doing wrong? You also indicated the OP to ajust 'root=' kernel argument. Where should this be done?

 

Thanks and Regards,

mora_an

0 Kudos