I’m pursuing a few different directions with the Zedboard, one of which you might think of as the from-scratch Linaro (Ubuntu) Linux option. This post outlines the build process in case anyone finds it useful.
I used two main sources of information. The first one is Jan Gray’s guide, which synthesizes a number of sources. These sources include my second main source, which is Analog Devices’ documentation on the ADV7511 reference design.
I’m writing this up after the fact, but my notes are reasonably complete. However I’m not aiming to clone Jan Gray’s guide, just to broadly outline what I did differently, and what worked and didn’t work for me.
- PlanAhead/ISE/SDK 14.6 on a 64-bit Red Hat box
- Linux Mint 14 laptop (for SD card writing, I don’t have root on the Red Hat machine)
SD Card prep
I actually did this step last, but since everyone’s guide has it first, I’ll mention it first. I used
gparted on Mint to do the partitioning. I used FAT16 instead of FAT32 for the boot partition; not sure if it matters.
This part is pretty straightforward, just clone the
fpgahdl_xilinx repo or download the tarball, import the
.xmp (refer XPS to the
cf_lib directory when it complains), and off you go. Well, except for the fact that 14.6 has a bug. You can either disable one of the SPI interfaces or just apply the patch.
Xilinx has moved its repo to github, but everything’s basically the same. The first time through, I didn’t check out the recommended branch (
xilinx-v14.4), and the kernel panicked. The second time, I did do the checkout, and it worked; however I don’t know enough whether to blame this step.
The other important thing here is to disable the ramdisk per Jan Gray’s instructions. It seems that you have to delete the offending line entirely. Before building, I exported
ARCH=arm, and ran the Xilinx
settings*.sh for good measure.
FSBL, boot image
I exported the hardware to SDK from PlanAhead. Building the FSBL and generating the boot image were uneventful.
However I’m not sure I did it all right because there’s a lot of trash in the serial terminal before getting to u-boot. I’m pretty sure the trash is related to cold-start, because hitting the reset button makes it boot up fine.
I cloned the Analog Devices Linux repo and checked it out to
xcomm_zynq. I didn’t note whether the defconfig was ‘zynq’ or ‘zync’. As of this writing, the branch actually appears to be a 3.10 kernel.
root@linaro-ubuntu-desktop:~# uname -a Linux linaro-ubuntu-desktop 3.10.0-g40d8cf2 #2 SMP PREEMPT Sun Sep 29 19:34:18 x
I used the exact same release as Jan Gray’s guide: https://releases.linaro.org/12.11/ubuntu/precise-images/ubuntu-desktop/linaro-precise-ubuntu-desktop-20121124-560.tar.gz
One notable difference with Mint is where the SD card partitions get mounted: they show up under
/media/username/partition, so the tar command needs to be adapted accordingly.
It worked! Well, it was getting late and the USB didn’t seem to work, so I didn’t poke around much. (Edit: I had the wrong jumper setting. JP3 needed to be out.)
And I had to manually start the boot process in the u-boot> terminal, so I must be missing something. Perhaps a baud setting, too? I’m new to all this. Cold boot seems to be problematic.
A comment on Jan Gray’s guide noted that there is another branch of the kernel with a newer version number. My admittedly hazy understanding of this is that newer releases of Linaro require the newer kernel, namely the 13.x Raring release. (Actually, the first time through, I tried to run the 3.8 kernel with Precise, and it kernel panic-ed on me. So please tell me if I’m not understanding this correctly.) I’m confused because I checked my kernel and it’s a 3.10 version. So I guess I really don’t understand kernel compatibility.
I’d like to try one of the ALIP releases, since they’re a bit lighter in weight compared to the Ubuntu desktop version. Should be interesting.