Xillinux 2.0 vs. Xillinux-1.3

Xillinux-2.0 was released in February 2018 for Xilinx' Zynq boards, superseding Xillinux-1.3. The main purpose of this release was to offer an updated software environment (kernel, linked libraries and compiler) while retaining all functionality, in particular the desktop and sound support. The primary differences are:

  • Linux kernel updated from version 3.12.0 to 4.4
  • Unity desktop is replaced with Lubuntu 16.04's LXDE, which was chosen for its lightweight graphics.
  • The ARM's registers can be manipulated (read and written) in a very early stage of Linux' boot for the purpose of setting up the processor's hardware configuration, just by altering the Device Tree. Please refer to section 5.6 of the Getting Started Guide for Zynq, discussing the "poke" feature.

The boot partition kits that were available at the moment of release, with -2.0c suffixes, are suitable for with Xillinux-1.3 as well as Xillinux-2.0. Previous boot partition kits (e.g. -2.0a) should not be used with Xillinux-2.0.

Staying with Xillinux-1.3

Those wishing to remain with Xillinux-1.3 should observe that the files in the main Xillinux page and the documentation have been updated. To stay with the old version, use these instead:

  • There is no difference between Xillinux-2.0 and Xillinux-1.3 as far as the IP Core Factory is concerned.
  • Click here for the documentation related to Xillinux-1.3.
  • Click here to download the previous SD card image.
  • These are the latest compatible boot partition kits for Zedboard, ZyBo and MicroZed.

Upgrading from Xillinux-1.3

  • Write the image for Xillinux-2.0 into the SD card, following section 3.6 in the “Getting started with Xillinux” guide.
  • If your existing boot partition is based upon a boot partition kit earlier than 2.0c, download an updated boot partition bundle (for the targeted board, e.g. xillinux-eval-zedboard-2.0c.zip for Zedboard). Use the devicetree.dtb file (found under bootfiles/) instead of the existing one. This DTB file is suitable for Xillinux-1.3 as well as Xillinux-2.0.
  • boot.bin and xillydemo.bit from Xillinux-1.3 can be used with Xillinux-2.0 with no changes.
  • The uImage file in the boot partition contains the Linux kernel, and belongs to the SD card image. Do not copy this file from one distribution to another.
  • Note: Attempting to use a pre-2.0c devicetree.dtb file from Xillinux-1.3 with Xillinux-2.0 will result in the kernel failing to boot (with a early kernel panic saying “clkc: failed to get resource”).

Some technical comparisons with Xillinux-1.3

  • Xillinux-2.0 requires an SD card with at least 4 GB (and not 2 GB, as with older Xillinux distributions).
  • An ssh server is already installed, however a root password needs to be set, or logging in as root will be rejected. This is slightly different from what is described in the previous Getting started guide, section 4.4.2.
  • The partition of the SD card image is different from Xillinux-1.3: The second partition now starts at sector 32768 and not 32130 (for a better experience with recent fdisk utilities).
  • Pulseaudio is handled somewhat differently: Unlike common Lubuntu distributions, Pulseaudio is activated and is the only audio device present. It’s kicked off by virtue of xillinux_sound.service and xillinux_pulseaudio.service systemd services. Firefox, Mplayer and other common audio-related Linux applications work normally (even though they may not on other Lubuntu distributions).
  • Zedboard OLED applet as well as audio initialization are kicked off by systemd, based upon existence of files in /dev. Note that these are not udev rules.
  • Even though there have been changes in the Linux GPIO driver since kernel 3.12, the old GPIO driver is used in Xillinux-2.0. This retains the behavior and numbering of Xillinux-1.3. In order to use the new GPIO driver, replace the device tree entry with compatible = “xlnx,ps7-gpio-1.00.a” with compatible = “xlnx,zynq-gpio-1.0″.

Xillinux-1.3 vs. Xillinux-1.1

General

Xillinux-1.3 was released in late March 2014 for Xilinx' Zynq boards, superseding Xillinux-1.1. The latter was available only for Zedboard. A temporary kit for ZyBo was also released, which should be treated like a Zedboard for the purpose of upgrading methods.

Altera's SocKit board remains on Xillinux-1.1.

Xillinux-1.1 will be supported indefinitely, including the possibility to produce custom IP cores for this version, so upgrading is not mandatory, but is yet recommended for the following reasons:

  • Easier FPGA (PL) development cycle: The programming file in *.bit format is copied to the SD card, rather than generating the boot.bin file.
  • The Xillybus IP core relies on the ACP port, allowing for higher data bandwidth (~ 300 MB/s) and a significantly lower I/O related CPU consumption.
  • Rebooting is supported (as opposed to only shutdown / halt).
  • Linux kernel updated from version 3.3.0 to 3.12.0
  • U-boot upgrade, with more options
  • Capability of setting the board's Ethernet MAC address permanently, instead of the default

Which version am I running?

The easiest way to tell is typing "uname -r" at shell prompt on the board. For example, on Xillinux-1.3 it says

# uname -r
3.12.0-xillinux-1.3

If the answer is "3.3.0-xillinux-1.1+" or any earlier version, the system is considered Xillinux-1.1.

Staying with Xillinux-1.1

Those wishing to remain with Xillinux-1.1 should observe that the files in the main Xillinux page and the documentation have been updated. To stay with the old version, use these instead:

  • In the IP Core Factory, choose target "Old Zedboard (Xillinux-1.1)". Note that it's Xillinux that is old, not the board itself.
  • Click here for the documentation related to Xillinux-1.1
  • Click here to download the previous boot image creation kit for Zedboard.
  • Click here for the previous temporary boot partition kit for ZyBo.
  • Click here to download the previous SD card image.

Differences in root file system

Almost all differences between Xillinux-1.1 and Xillinux-1.3 are in the boot process, except for a few changes in Linux' file system, as follows:

  • Kernel modules, headers and configuration files for version 3.12.0
  • Improved startup scripts for sound support (more stable on Zedboard, and supporting sound on ZyBo).
  • Minor changes in the greeting messages, diagnostic messages etc.
  • Cleaner boot on MicroZed and Zybo boards

Upgrading

Upgrading to Xillinux-1.3 requires rebuilding the FPGA (PL) part of Xillinux, and replacing all files in the boot partition (the first partition in the SD card of type FAT32).

As for the root file system (the second partition, of type ext4, which is mounted as /) there are two alternatives:

  • Replacing the root filesystem. In essence this means downloading and building Xillinux' components from scratch, replacing the existing Linux installation. If this way is chosen, simple go Xillinux' main page, and run through the procedure. Please note that the installation instructions have been updated as well.
  • Patching the Linux filesystem for proper work with the v3.12.0 Linux kernel. This yields a system that is almost identical to an installation from scratch, but is faster and retains changes made in the Linux system.

Those choosing the second option, should follow these steps:

  • Make sure that the root filesystem has at least ~70 MB free space.
  • Download Xillinux-1.3's boot partition kit for the Zedboard or for ZyBo (but not the SD card image). Follow the instructions in section 3 of the updated documentation, except for subsections 3.6 and 3.7 (i.e. don't touch the SD card).
  • Download the filesystem patch, boot up the Zedboard (with old Xillinux) and make the downloaded file available on Zedboard's filesystem. Then, running on Zedboard's shell prompt, as root, type:
    tar -C / -xzf /path/to/xillinux-1.3-upgrade.tar.gz
    (this takes a couple of minutes to complete, and shouldn't generate any messages at all)
    If the Zedboard is connected to the Internet, it's possible to download the patch directly to the board, e.g
    wget http://xillybus.com/downloads/xillinux-1.3-upgrade.tar.gz
    tar -C / -xzf xillinux-1.3-upgrade.tar.gz
    rm xillinux-1.3-upgrade.tar.gz
  • Now copy the files for the boot partition as instructed in section 3.7 in the guide. Prior to copying the new set of files to the boot partition, delete the existing ones (possibly storing copies of them for backup).
  • Download the updated Linux kernel binary, unzip the file, and copy uImage into the boot partition as well. This file is already there in the SD card image for Xillinux-1.3, and therefore needs to be added manually when upgrading.
  • Note that no files from the previous version should be used in the boot partition. Mixing files from different versions will fail booting.
  • Veify that boot.bin, devicetree.dtb, uImage and xillydemo.bit exist in the boot partition.
  • Boot Zedboard. Verify that the new kernel is indeed running:
    # uname -r
    3.12.0-xillinux-1.3
  • Type "lsmod" at shell prompt. Several kernel modules should be listed there, among them "xillybus_core". If lsmod returns an empty list, please re-check the installation of the filesystem patch (see above).

Migrating application logic

Custom logic should be copied to the new Xillydemo project, rather than attempting to use the old project. There is however no difference in the API signals and their behavior.

There are also no differences in xillydemo.v and xillydemo.vhd between Xillinux versions 1.1 and 1.3. Hence, if xillydemo.v/vhd has been edited for integration with custom logic on Xillinux-1.1, it's fine to overwrite Xillinux-1.3's sample xillydemo file with the edited one.

If a design is based upon a custom IP core, go to the IP Core Factory and make a replica of the desired IP core. Target this replica to Zedboard (as opposed to "old Zedboard") and re-generate the IP core.