Linux-c6x 2.0-alpha1 Release

This is the 2.0 Alpha1 release of Linux-c6x. This is an early access release to demonstrate Linux on the C66 devices. This release was used for the first production run of C6678 EVMs. Users are encouraged to update to later releases when available. Bug fixes will be applied to subsequent releases of the 2.0 series.

Release highlights
This release uses an early-access version of gcc tool chain (4.5-109) from Code Sourcery [].
 * First release supporting C66 devices
 * Based on Linux kernel v2.6.34
 * uClibc v0.9.31-rc
 * busybox v1.17.1
 * Drivers such as i2c, ethernet, UART.
 * Support for peripherals such as EEPROM and NAND
 * MCSDK (Multicore SDK) web control panel demo
 * Supported device
 * EVMC6678 (little endian mode only)

Please note that this release is not validated against the CGT based TI tool chain.

Building Software from the source
There is a little bit of work that needs to be done before one is ready to play with the software

Initial Linux Host Setup

 * Please prepare the Linux Host with the appropriate software.
 * For Ubuntu 10.04 Host, use the following commands:-

sudo apt-get install -y build-essential git-core echo "no" | sudo dpkg-reconfigure -f teletype dash


 * For others, refer Setting up the Linux Host

Cloning the git repositories
If you are behind a firewall, set following env variables

export http_proxy= export https_proxy=

To clone all repositories, issue the following commands

mkdir ~/my-linux-c6x cd   ~/my-linux-c6x wget http://linux-c6x.org/bootstrap chmod +x bootstrap ./bootstrap linux-c6x-2.0-alpha1 ./bootstrap linux-c6x-2.0-alpha1

Currently there is an issue with the bootstrap command and it needs to be run twice as indicated.

After executing the bootstrap script the my-linux-c6x folder will have the following structure my-linux-c6x/
 * -- busybox
 * -- linux-c6x
 * -- linux-c6x-project
 * -- projects
 * |--mtd-utils
 * |--packages
 * |--rio-utils
 * |--c6x-linux-mcsdk-demo

Installing Code Sourcery GCC tool chain
To build the software using GCC tool chain, pre-built tool chain binaries and uclibc source are to be installed. A suggested way is install it under my-linux-c6x folder using the gcc-install.sh script provided. So from my-linux-c6x directory type

./linux-c6x-project/scripts/gcc-install.sh 4.5-109

After this the my-linux-c6x folder will have the following structure my-linux-c6x/
 * -- busybox
 * -- gcc-c6x
 * -- linux-c6x
 * -- linux-c6x-project
 * -- projects
 * |--mtd-utils
 * |--packages
 * |--rio-utils
 * -- gcc-c6x-uclibc

Building the kernel and filesystem
Assuming that all the individual repositories have been cloned in the my-linux-c6x directory, the following steps need to be followed.

1.     Change directory to linux-c6x-project by giving

cd linux-c6x-project

2.    Then issue the following commands

./setup

3.    Then edit the "setenv" for the following and save the file.

#KERNELS_TO_BUILD represents the various kernels that will be built. Set this variable # build evmc6678. export KERNELS_TO_BUILD="evmc6678" #ROOTFS variable is used to select the rootfs to be built. Set this to       # mcsdk-demo-root export ROOTFS=mcsdk-demo-root 4.    Issue the commands ./setup source setenv

5.    Finally issue the command

make product

Where to find the generated files?
Once the build is successful, the generated files can be found at ~/my-c6x-linux/product

cd ~/my-c6x-linux/product ls -l -rwxr-xr-x 1 a0868495 cleartnp  4632132 May  4 11:14 vmlinux-2.6.34-evmc6678.el-20110504-1 -rwxr-xr-x 1 a0868495 cleartnp  3916288 May  4 11:14 vmlinux-2.6.34-evmc6678.el-20110504-1.bin -rwxr-xr-x 1 a0868495 cleartnp     7295 May 12 11:57 bootblob -rw-r--r-- 1 a0868495 cleartnp  3684416 May 12 13:43 mcsdk-demo-root-c6x.cpio.gz

How to create a bootblob?
The bootblob binary under product directory can be used to generate a bootblob that can be programmed into the nand flash.

To create a bootblob do the following

cd ~/my-c6x-linux/product chmod +x ./bootblob ./bootblob make-image --abs-base=0x80000000 --round=0x10000 blob.bin vmlinux-2.6.34-evmc6678.el- 20110504-1.bin mcsdk-demo-root-c6x.cpio.gz "console=ttyS0,115200 initrd=0x%fsimage-start- abs-x%,0x%fsimage-size-x% ip=dhcp rw" The generated file, blob.bin can be used for programming the NAND flash. Refer linux-c6x-2.0-alpha1 User Guide for details on how to program the NAND flash

Known issues

 * c64x platforms are not validated in this release
 * C66 SPI driver timeout issue when writting to SPI NOR flash
 * C66 User space still compiled for soft floating point
 * Web control panel doesn't currently support programming the Kernel and filesystem in the NAND
 * tftp boot is not functional