FAQ Hero Banner

The Question and the Answer

ZedBoard! - Bring up
ZedBoard! - Bring up
ZedBoard! - Bring up
Question:

How do i get the Zedboard opened up and running?

Answer:

The Zedboard is here!

It's going to sound weird, I know, but the thing I love the most about Digilent boards is the smell.  I've been told it's caused by the board cutting process, but I've never smelled it on any other boards before.  mmmm, the smell of endly creativity and knowledge!

Well, let's get the thing opened up!

Zedboard up and running connected to power, Gigabit Ethernet, and the USB COM port

At the time of this blog posting I have Rev B of the hardware.  In the event that something changes with Rev C of the hardware I will update this post appropriately.

First things first, read the manual!  The link to the Quick Start Guide can be found here:

Download the Quick Start Card

Download the Getting Started Guide

I highly suggest reading both front to back.

One thing I will note here is that the Getting Started Guide assume that you are running windows Vista or Windows 7.  I plan on making an additional blog post on how to get the board up and running under Ubuntu and Fedora.

Now that you have read the manuals from front to back ;p lets get this thing booted up.  First we need to ensure that our SD Card is present and installed properly.

A view from the side of the SD Card.  It is right below the FMC connector.

The SD Card from underneath the board, note the label is down!

A picture of the SD Card out of the Zedboard, with the lock switch in the disabled position.

Boom, done.  Ok, now that we have the SD Card in place we need to setup the Zynq-7000 EPP to boot from it.  There are a number of available boot options, as described in the ZedBoard Hardware User's Guide. Download the ZedBoard Hardware User's Guide

Since I know you read it front to back, we'll skip right to the configuration.  Your jumpers need to be in this configuration:

JP7  [MODE0] - GND
JP8  [MODE1] - GND
JP9  [MODE2] - 3V3
JP10 [MODE3] - 3V3
JP11 [MODE4] - GND

Here is a picture of my setup:

A picture of JP9 - JP11 setup to boot from the SD Card

The last thing you need to do before you can boot from the SD Card is set JP6 to shorted.  This allows the SD Card to be seen by the Zynq-7000 EPP ARM processing core.  Here is a picture of my setup:

JP6 Shorted to allow SD Card booting.

Okay, there you have it!  Your board is setup to boot from the SD Card, all you need to do is hook up power and your USB cable to the micro USB port labeled UART and after a few seconds you should see Linux start to boot.

For the lazy here are the COM configuration:
115200 8N1

For those who are not privy to the lingo of the UART folk, this means that the UART is running at 115200 bits/second, or baud.  The 8N1, commonly pronounced "Eight None One" stands for 8 bits of data, no hardware control, and 1 stop bit.  Checkout the UART Wikipedia page here:

http://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter

Now, load up your favorite terminal software (the User's Guide suggests TeraTerm if you are on a windows machine) and set the COM port appropriately with the above settings and you should be good to go.  If you see this:

zynq>

You are good to go! Congrats!

Edit:  My full screen dump of the boot:

U-Boot 2011.03-dirty (Jul 11 2012 - 16:07:00)
DRAM:  512 MiB
MMC:   SDHCI: 0
Using default environment
In:    serial
Out:   serial
Err:   serial
Net:   zynq_gem
Hit any key to stop autoboot:  0
Copying Linux from SD to RAM...
Device: SDHCI
Manufacturer ID: 3
OEM: 5344
Name: SU04G
Tran Speed: 25000000
Rd Block Len: 512
SD version 1.10
High Capacity: Yes
Capacity: 3965190144
Bus Width: 1-bit
reading zImage
2479640 bytes read
reading devicetree_ramdisk.dtb
5817 bytes read
reading ramdisk8M.image.gz
3694108 bytes read
## Starting application at 0x00008000 ...
Uncompressing Linux... done, booting the kernel.
[    0.000000] Booting Linux on physical CPU 0
[    0.000000] Linux version 3.3.0-digilent-12.07-zed-beta (tinghui.wang@DIGILENT_LINUX) (gcc version 4.6.1 (Sourcery CodeBench Lite 2011.09-50) ) #2 SMP PREEMPT Thu Jul 12 21:01:42 PDT 2012
[    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine: Xilinx Zynq Platform, model: Xilinx Zynq ZED
[    0.000000] bootconsole [earlycon0] enabled
[    0.000000] Memory policy: ECC disabled, Data cache writealloc
[    0.000000] BUG: mapping for 0xf8f00000 at 0xfe00c000 out of vmalloc space
[    0.000000] BUG: mapping for 0xe0000000 at 0xfe000000 out of vmalloc space
[    0.000000] BUG: mapping for 0xffff1000 at 0xfe200000 out of vmalloc space
[    0.000000] PERCPU: Embedded 7 pages/cpu @c1489000 s5696 r8192 d14784 u32768
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 125824
[    0.000000] Kernel command line: console=ttyPS0,115200 root=/dev/ram rw initrd=0x800000,8M earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=0
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 240MB 256MB = 496MB total
[    0.000000] Memory: 489856k/489856k available, 34432k reserved, 0K highmem
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xe0800000 - 0xfd000000   ( 456 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0008000 - 0xc042f040   (4253 kB)
[    0.000000]       .init : 0xc0430000 - 0xc0456640   ( 154 kB)
[    0.000000]       .data : 0xc0458000 - 0xc0485dc0   ( 184 kB)
[    0.000000]        .bss : 0xc0485de4 - 0xc049d734   (  95 kB)
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000]  Verbose stalled-CPUs detection is disabled.
[    0.000000] NR_IRQS:128
[    0.000000] xlnx,ps7-ttc-1.00.a #0 at 0xe0800000, irq=43
[    0.000000] Console: colour dummy device 80x30
[    0.000000] Calibrating delay loop... 1594.16 BogoMIPS (lpj=7970816)
[    0.090000] pid_max: default: 32768 minimum: 301
[    0.090000] Mount-cache hash table entries: 512
[    0.090000] CPU: Testing write buffer coherency: ok
[    0.090000] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.100000] smp_twd: clock not found: -2
[    0.100000] Calibrating local timer... 399.28MHz.
[    0.170000] hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
[    0.170000] Setting up static identity map for 0x2f8d48 - 0x2f8d7c
[    0.270000] CPU1: Booted secondary processor
[    0.310000] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.310000] Brought up 2 CPUs
[    0.310000] SMP: Total of 2 processors activated (3188.32 BogoMIPS).
[    0.320000] devtmpfs: initialized
[    0.320000] ------------[ cut here ]------------
[    0.320000] WARNING: at arch/arm/mm/dma-mapping.c:198 consistent_init+0x70/0x104()
[    0.330000] Modules linked in:
[    0.330000] [] (unwind_backtrace+0x0/0xe0) from [] (warn_slowpath_common+0x4c/0x64)
[    0.340000] [] (warn_slowpath_common+0x4c/0x64) from [] (warn_slowpath_null+0x18/0x1c)
[    0.350000] [] (warn_slowpath_null+0x18/0x1c) from [] (consistent_init+0x70/0x104)
[    0.360000] [] (consistent_init+0x70/0x104) from [] (do_one_initcall+0x90/0x160)
[    0.360000] [] (do_one_initcall+0x90/0x160) from [] (kernel_init+0x84/0x128)
[    0.370000] [] (kernel_init+0x84/0x128) from [] (kernel_thread_exit+0x0/0x8)
[    0.380000] ---[ end trace 1b75b31a2719ed1c ]---
[    0.380000] ------------[ cut here ]------------
[    0.390000] WARNING: at arch/arm/mm/dma-mapping.c:198 consistent_init+0x70/0x104()
[    0.390000] Modules linked in:
[    0.390000] [] (unwind_backtrace+0x0/0xe0) from [] (warn_slowpath_common+0x4c/0x64)
[    0.400000] [] (warn_slowpath_common+0x4c/0x64) from [] (warn_slowpath_null+0x18/0x1c)
[    0.410000] [] (warn_slowpath_null+0x18/0x1c) from [] (consistent_init+0x70/0x104)
[    0.420000] [] (consistent_init+0x70/0x104) from [] (do_one_initcall+0x90/0x160)
[    0.430000] [] (do_one_initcall+0x90/0x160) from [] (kernel_init+0x84/0x128)
[    0.430000] [] (kernel_init+0x84/0x128) from [] (kernel_thread_exit+0x0/0x8)
[    0.440000] ---[ end trace 1b75b31a2719ed1d ]---
[    0.440000] NET: Registered protocol family 16
[    0.460000] L310 cache controller enabled
[    0.460000] l2x0: 8 ways, CACHE_ID 0x410000c8, AUX_CTRL 0x72060000, Cache size: 524288 B
[    0.460000] registering platform device 'pl330' id 0
[    0.470000] registering platform device 'arm-pmu' id 0
[    0.470000]
[    0.470000] ###############################################
[    0.480000] #                                             #
[    0.480000] #                Board ZED Init               #
[    0.480000] #                                             #
[    0.490000] ###############################################
[    0.490000]
[    0.500000] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
[    0.500000] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    0.530000] xslcr xslcr.0: at 0xF8000000 mapped to 0xE0808000
[    0.540000] bio: create slab at 0
[    0.540000] gpiochip_add: registered GPIOs 0 to 245 on device: xgpiops
[    0.540000] xgpiops e000a000.gpio: gpio at 0xe000a000 mapped to 0xe080a000
[    0.550000] SCSI subsystem initialized
[    0.550000] usbcore: registered new interface driver usbfs
[    0.560000] usbcore: registered new interface driver hub
[    0.560000] usbcore: registered new device driver usb
[    0.570000] Advanced Linux Sound Architecture Driver Version 1.0.24.
[    0.570000] Switching to clocksource xttcpss_timer1
[    0.580000] NET: Registered protocol family 2
[    0.580000] IP route cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.580000] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
[    0.590000] TCP bind hash table entries: 16384 (order: 5, 196608 bytes)
[    0.590000] TCP: Hash tables configured (established 16384 bind 16384)
[    0.600000] TCP reno registered
[    0.600000] UDP hash table entries: 256 (order: 1, 8192 bytes)
[    0.610000] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[    0.610000] NET: Registered protocol family 1
[    0.620000] Trying to unpack rootfs image as initramfs...
[    0.620000] rootfs image is not initramfs (no cpio magic); looks like an initrd
[    0.650000] Freeing initrd memory: 8192K
[    0.660000] xscugtimer xscugtimer.0: ioremap fe00c200 to e0810200 with size 400
[    0.660000] pl330 dev 0 probe success
[    0.670000] msgmni has been set to 972
[    0.670000] io scheduler noop registered
[    0.670000] io scheduler deadline registered
[    0.670000] io scheduler cfq registered (default)
[    0.680000] e00   0.680000] console [ttyPS0] enabled, bootconsole disabled
[    0.680000] console [ttyPS0] enabled, bootconsole disabled
[    0.690000] xdevcfg f8007000.devcfg: ioremap f8007000 to e0814000 with size 1000
[    0.700000] [drm] Initialized drm 1.1.0 20060810
[    0.710000] brd: module loaded
[    0.720000] loop: module loaded
[    0.720000] xqspips e000d000.qspi: at 0xE000D000 mapped to 0xE0816000, irq=51
[    0.730000] GEM: BASEADDRESS hw: e000b000 virt: e0818000
[    0.730000] XEMACPS mii bus: probed
[    0.740000] eth0, pdev->id -1, baseaddr 0xe000b000, irq 54
[    0.740000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.750000] usb_hcd_xusbps_probe: No OTG assigned!
[    0.750000] usb_hcd_xusbps_probe: OTG now assigned!
[    0.750000] xusbps-ehci xusbps-ehci.0: Xilinx PS USB EHCI Host Controller
[    0.760000] xusbps-ehci xusbps-ehci.0: new USB bus registered, assigned bus number 1
[    0.800000] xusbps-ehci xusbps-ehci.0: irq 53, io mem 0x00000000
[    0.820000] xusbps-ehci xusbps-ehci.0: USB 2.0 started, EHCI 1.00
[    0.820000] hub 1-0:1.0: USB hub found
[    0.820000] hub 1-0:1.0: 1 port detected
[    0.830000] Initializing USB Mass Storage driver...
[    0.830000] usbcore: registered new interface driver usb-storage
[    0.840000] USB Mass Storage support registered.
[    0.840000] Xilinx PS USB Device Controller driver (Apr 01, 2011)
[    0.850000] mousedev: PS/2 mouse device common for all mice
[    0.850000] Linux video capture interface: v2.00
[    0.860000] gspca_main: v2.14.0 registered
[    0.860000] usbcore: registered new interface driver uvcvideo
[    0.860000] USB Video Class driver (1.1.1)
[    0.870000] WDT OF probe
[    0.870000] xwdtps f8005000.swdt: Xilinx Watchdog Timer at 0xe081c000 with timeout 10 seconds
[    0.880000] sdhci: Secure Digital Host Controller Interface driver
[    0.880000] sdhci: Copyright(c) Pierre Ossman
[    0.890000] sdhci-pltfm: SDHCI platform and OF driver helper
[    0.890000] mmc0: Invalid maximum block size, assuming 512 bytes
[    0.900000] mmc0: SDHCI controller on e0100000.sdhci [e0100000.sdhci] using ADMA
[    0.910000] No connectors reported connected with modes
[    0.910000] [drm] Cannot find any crtc or sizes - going 1024x768
[    0.920000] usbcore: registered new interface driver usbhid
[    0.920000] usbhid: USB HID core driver
[    0.930000] drivers/gpu/drm/analog/analog_drm_fbdev.c:analog_drm_fbdev_probe[241]
[    0.940000] adv7511 0-0039: Failed to add route DAI IN->TMDS
[    0.950000] asoc: adv7511 75c00000.axi-spdif-tx mapping ok
[    0.950000] axi-spdif 75c00000.axi-spdif-tx: Failed to set DAI format: -22
[    0.950000] ALSA device list:
[    0.950000]   #0: HDMI monitor
[    0.950000] TCP cubic registered
[    0.950000] NET: Registered protocol family 17
[    0.950000] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
[    0.950000] Registering SWP/SWPB emulation handler
[    0.950000] registered taskstats version 1
[    0.950000] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[    0.960000] Console: switching to colour frame buffer device 128x48
[    1.020000] fb0:  frame buffer device
[    1.020000] drm: registered panic notifier
[    1.020000] [drm] Initialized analog_drm 1.0.0 20110530 on minor 0
[    1.040000] RAMDISK: gzip image found at block 0
[    1.040000] mmc0: new high speed SDHC card at address e624
[    1.050000] mmcblk0: mmc0:e624 SU04G 3.69 GiB
[    1.050000]  mmcblk0: p1
[    1.300000] EXT4-fs (ram0): warning: mounting unchecked fs, running e2fsck is recommended
[    1.300000] EXT4-fs (ram0): mounted filesystem without journal. Opts: (null)
[    1.310000] VFS: Mounted root (ext4 filesystem) on device 1:0.
[    1.310000] Freeing init memory: 152K
Starting rcS...
++ Mounting filesystem
++ Setting up mdev
++ Configure static IP 192.168.1.10
[    1.500000] GEM: lp->tx_bd ffdfb000 lp->tx_bd_dma 18fc6000 lp->tx_skb d8070280
[    1.500000] GEM: lp->rx_bd ffdfc000 lp->rx_bd_dma 18fc7000 lp->rx_skb d8070380
[    1.510000] GEM: MAC 0x00350a00, 0x00002201, 00:0a:35:00:01:22
[    1.520000] GEM: phydev d8b6b400, phydev->phy_id 0x1410dd1, phydev->addr 0x0
[    1.520000] eth0, phy_addr 0x0, phy_id 0x01410dd1
[    1.530000] eth0, attach [Marvell 88E1510] phy driver
++ Starting telnet daemon
++ Starting http daemon
++ Starting ftp daemon
++ Starting dropbear (ssh) daemon
++ Starting OLED Display
[    1.570000] pmodoled-gpio-spi [zed_oled] SPI Probing
++ Exporting LEDs & SWs
rcS Complete
zynq> [    4.520000] eth0: link up (1000/FULL)

ZedBoard! - Bring up