Home > Community > Blogs > System Design and Verification > using a linaro file system on the virtual platform for the xilinx zynq 7000 epp
 
Login with a Cadence account.
Not a member yet?
Create a permanent login account to make interactions with Cadence more conveniennt.

Register | Membership benefits
Get email delivery of the System Design and Verification blog (individual posts).
 

Share

  • Email
  • Social Web
* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

Using a Linaro File System on the Cadence Virtual Platform for the Xilinx Zynq-7000 EPP

Comments(0)

Linaro has emerged as a great place to find well tested toolchains, Linux kernels, and evaluation builds for Ubuntu and Android. Everything is focused on the ARM Architecture which is great news for me since almost all of the projects I work on also involve ARM processors.

Last year I looked up a presentation by Christian Reis, the Linaro VP of Engineering, titled, The Weird World of Linux on ARM. For me, ARM is the primary architecture I work with. Although I run Linux on multiple x86 machines for software development, I recall only one time I compiled a Linux kernel and tried to debug a broken device driver on the x86 architecture. The diversity of the ARM ecosystem and the popularity among Cadence customers has made the ARM architecture the focus of most of my work. It didn't actually occur to me that Linux on ARM was weird at all since I have very little x86 experience.

One of the challenges of a Virtual Platform developer is access to software to use in testing new models. While I find embedded Linux very interesting, there is not always time to spend on actual software development and creating new software to run on a new model. The good news is there is no shortage of information and open source software available. The challenge is that it all takes time to find, learn, build, and use. Linaro is a great place because it provides easy access to various useful and time saving components.

During testing of the Cadence Virtual Platform for the Xilinx Zynq-7000 EPP I was looking for more software to try and decided to check out some of the Linaro deliverables, I decided to try some of the Ubuntu Oneiric images on the Virtual Platform. As the first step I started with the Linaro Nano image, a small image with basic console and networking.

Today, I'll explain the steps to run the Nano image on the Virtual Platform for the Xilinx Zynq-7000 EPP.

The first step is to get the Nano image from the Linaro Downloads page.

Click the rightmost column on the Nano row to get the image, the filename I downloaded was linaro-o-nano-tar-20120123-1.tar.gz

 

I extracted the file and changed directory to binary/boot/filesystem.dir

Here I can see the root file system that I want to use.

To start with I made a new image file, 256 Mb, that can be used by the SD Card model present in the Virtual Platform.

$ dd if=/dev/zero of=linaro-nano.img bs=1024k seek=256 count=0

Since this is just a test image there is no need to partion the image, I'll just use a single partion for the entire SD card image.

Next, make a file system on the image, I used an ext2 file system:

$ /sbin/mkfs.ext2 linaro-nano.img

Then mount the image somewhere on the host machine so the file system data can be loaded. I made a temporary directory called t/ in /mnt

$ sudo mount -t ext2 -o loop linaro-nano.img /mnt/t

Copy the data from the downloaded Nano image onto the SD card image that is mounted on the host machine:

$ cd /mnt/t

$ cp -r ~/Downloads/binary/boot/filesystem.dir/* .

Finally, unmount the image and it's ready to run.

$ sudo umount /mnt/t

I put the image in SD Card slot 1. This is an SD card model, not a real SD card, but in the Virtual Platform configuration file I specify the image to use for SD card 1 in the sd_card1 section:

sd_card1
{
    FILE     "linaro-nano.img"
}

The last thing is to set SD card 1 as the root file system on the Linux kernel command line. This is done via the Linux Device Tree.

For the Virtual Platform, I edit the default zynq-ep107.dts device tree source file and specify the SD card as the root file system. Since we are attaching it to SD card 1 the device node is /dev/mmcblk1

Here is the device tree source file for the kernel command line

bootargs = "console=ttyPS0,115200 root=/dev/mmcblk1 rootwait rw earlyprintk ip=:::::eth0:dhcp";

Then rebuild the device tree using the device tree compiler, dtc from the scripts/dtc directory of the Linux kernel source tree.

% dtc -I dts -O dtb -o zynq-ep107.dtb zynq-ep107.dts

Make sure the .cfg file for the simulation has in the loader section INITRDFILE "" to make sure no ramdisk image is used as a root file system. Without this a default ramdisk image file could boot.

Run the simulation as normal and the result is a shown below, a running system with the latest Xilinx Zynq Linux kernel and the Linaro Nano image.

If you haven't looked at the Linaro website take some time to see what's there. A lot can be learned from the Wiki

Jason Andrews

Comments(0)

Leave a Comment


Name
E-mail (will not be published)
Comment
 I have read and agree to the Terms of use and Community Guidelines.
Community Guidelines
The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.