MicroBlaze Linux Little Endian

Introduction

The goal of this page is to help users understand the new MicroBlaze Little Endian Linux kernel. This page is intended to augment the primary MicroBlaze Linux page at MicroBlaze Linux. It is not intended to replicate all the basic information on the primary page.

Xilinx teamed up with Petalinux to help move the kernel from Big Endian only to Big and Little Endian support. The primary reason for Little Endian support was to support the new AXI hardware systems from the Xilinx Embedded Development Kit. The little endian changes for the Linux kernel were accepted into the mainline kernel starting in 2.6.37-rc1. The kernel version that is currently being used in the Xilinx repositories is 2.6.37-rc4.


Tested Hardware and Reference Systems

SP605

The SP605 is the primary test platform. A reference design is provided by Xilinx at the following location.

http://www.xilinx.com/products/boards/s6embd/reference_designs.htm

This system has been tested on the SP605 with Linux with the 12.4 Xilinx tools. The 12.3 AXI system on the web page referenced above has been been lightly tested and is known to be functional. Users are encouraged to use the 12.4 system as it has updated IP cores which should be improved.

ML605

The ML605 is not the primary test platform, but was tested briefly. A reference design is provided by Xilinx at the following location.

http://www.xilinx.com/products/boards/v6embd/reference_designs.htm

Driver Status

Most of the device drivers have been tested in a manual test with the Little Endian Linux kernel for MicroBlaze. The device drivers table at Drivers has been updated to reflect the testing.

Device Tree

The device tree generator, as described on the page Device Tree Generator, has been udpated to support the AXI systems for the MicroBlaze Little Endian Linux kernel.

MicroBlaze GNU Tools

The MicroBlaze Little Endian Linux kernel requires a new set of GNU tools. See the following page, MicroBlaze GNU Tools, for information about getting the GNU Tools for Microblaze to build the Little Endian Linux kernel and applications.

Prebuilt Ramdisk Image

A ramdisk image, initramfs_minimal_le.cpio.gz, is provided in a tar file of the xldk/microblaze_v1.0_le repository of the Xilinx Git server. The repository contains the MicroBlaze GNU tools and the ramdisk image. See the following page MicroBlaze Tools for more details.

Note that the ramdisk is specific to the Little Endian kernel as BusyBox was rebuilt for Little Endian.

Save the ramdisk file from the tar file into the root of the kernel directory as the default kernel configurations for Xilinx (sp605_le_defconfig) expects it to be located there. This ramdisk image is built from busybox and has telnet enabled such that if you have ethernet you can telnet to the kernel. The user must configure the network using ifconfig as it defaults to off.


The Linux Kernel For MicroBlaze

Getting the Kernel From Xilinx

There is no unique kernel tree as the master branch of linux-xlnx repository contains the PowerPC, MicroBlaze Big Endian and MicroBlaze Little Endian kernels.

Configuring The Kernel

Configuration of the kernel is done in the same manner as any other Linux kernel. The kernel should be configured to a known configuration before building it.

There is a default kernel configuration file provided with the kernel for the SP605 AXI reference design provided on Xilinx.com.

bash> make ARCH=microblaze sp605_le_defconfig

Kernel Configuration Details

The kernel configuration does not contain any specific differences for Little Endian as the GNU tools setup the kernel to build for Little Endian.

Building The Linux Kernel

The kernel build process did not change. A device tree for the SP605 AXI reference design is provided. Use the following command to build a kernel for the reference system.

bash> make ARCH=microblaze simpleImage.sp605_le

An image named simpleImage.sp605_le is created in the arch/microblaze/boot directory of the kernel tree.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License