Linux-c6x 2.0-Beta1 Release

Introduction
This is the 2.0 Beta1 release of Linux-c6x. This is an early access release to demonstrate Linux on the C66 devices. This release supports SysLink IPC for C66 devices. 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 [].
 * Adds support for SysLink Interprocessor Communication on 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
 * Supports SysLink IPC
 * MCSDK (Multicore SDK) web control panel demo including Multicore IPC demo through SysLink IPC and BIOS/IPC.
 * Added an elf loader application
 * Supported devices
 * EVMC6678 (little endian mode only)
 * EVMC6670 (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
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-beta1

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
 * |--ltp
 * |--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.

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

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

Installing TI Code Generation Tool
Install TI CGT under my-linux-c6x/c6000_7.2.0. Download the tool at []. This is needed for building RTOS IPC sample applications for multicore IPC demo (part of SysLink).

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

Installing SysLink and dependent components
Now SysLink can be built as part of product build. This will enable the Multicore IPC demo from the web control panel. Currently only MessageQ and Notify demo applications are suppored in the Multicore IPC demo. SysLink and dependent components can be downloaded as per instruction in the SysLink release notes at SysLink_02.00.00.68_c6x_beta1_ReleaseNotes

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 # to build kernel for evmc6670 or evmc6678. Setting this to include both EVMs will build # kernel for both. # To build kernel for evmc6670 export KERNELS_TO_BUILD="evmc6670" # To build kernel for evmc6678 export KERNELS_TO_BUILD="evmc6678" # To build for evmc6670 and evmc6678 export KERNELS_TO_BUILD="evmc6670 evmc6678" #ROOTFS variable is used to select the rootfs to be built. Set this to       # mcsdk-demo-root export ROOTFS=mcsdk-demo-root # List the syslink kernel modules to build. evmc6678 and evmc6670 supported # Use this variable when building syslink as part of mcsdk-demo-root ROOTFS. # SysLink modules and exe files will get installed under /opt/syslink_. # folder of the rootfs export SYSLINK_KERNEL_MODULES_TO_BUILD="evmc6670 evmc6678" # Set below if you are building syslink separately (not as part of product build). # Leave it blank when building SysLink as part of product. # SysLink modules and exe files get installed under product/syslink_ . folder. User has to copy the files manually to execute them on the target. # This will become obsolete soon. export SYSLINK_TO_BUILD= # SysLink install directory. export SYSLINK_ROOT=$LINUX_C6X_TOP_DIR/syslink # IPC package install directory. Set the IPC_DIR variable to something other than # default only if you want to use the IPC package from the CCS installation. In that # case set this to the path of the IPC package that is part of the CCS installation. # Otherwise, just install the IPC package under $LINUX_C6X_TOP_DIR and use the default. #       export IPC_DIR=$LINUX_C6X_TOP_DIR/ipc_1_22_05_27/packages # ********** Below this for building SysLink rtos samples ********************* # BIOS package install directory. Set the BIOS_DIR variable to something other than # default only if you want to use the BIOS package from the CCS installation. In that # case set this to the path of the IPC package that is part of the CCS installation. # Otherwise, just install the BIOS package under $LINUX_C6X_TOP_DIR and use default. export BIOS_DIR=$LINUX_C6X_TOP_DIR/bios_6_31_04_27 # XDC package install directory. Set the XDC_DIR variable to something other than # default only if you want to use the XDC package from the CCS installation. In that # case set this to the path of the XDC package that is part of the CCS installation. # Otherwise, just install the XDC package under $LINUX_C6X_TOP_DIR and use default. export XDC_DIR=$LINUX_C6X_TOP_DIR/xdctools_3_20_08_88

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. Here it is assumed building only evmc6670.

cd ~/my-c6x-linux/product ls -l -rwxr-xr-x 1 a0868495 cleartnp  4632132 May  4 11:14 vmlinux-2.6.34-evmc6670.el-20110603-1 -rwxr-xr-x 1 a0868495 cleartnp  3916288 May  4 11:14 vmlinux-2.6.34-evmc6670.el-20110603-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=0x100000 blob.bin vmlinux-2.6.34-evmc6670.el- 20110603-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-Beta1 User Guide for details on how to program the NAND flash

Memory partition information
On C6670 and C6678, Linux NetCP driver uses a part of the MSMC memory. Similarly SysLink uses DDR and MSMC memory for Shared Region. Here are the memory range used... User   memory   Range

=
========= NetCP  MSMC     0x0C000000-0x0C003000 SysLink MSMC    0x0C008000-0x0C0F8000 (For SharedRegion 0) Linux  DDR      0x80000000-0x8FFFFFFF (Managed by Linux on core 0, assumes mem=256M on command line) SysLink DDR     0X9FC00000-0x9FFFFFFF (For SharedRegion 1 and User specified SharedRegion)

Elf loader application
ELF Loader support is available to load ELF images on slave cores. Application currently supports statically linked elf images and is demonstrated through Syslink sample applications while loading BIOS IPC ELF image on slave cores.

For building file system with ELF loader support set ROOTFS to mcsdk-demo-root. This step is required before building "make product" Source code for elf loader is located at git repo linux-c6x-project/tools/elfloader

Known issues
runs to completion)
 * c64x platforms are not validated in this release
 * C66 User space still compiled for soft floating point
 * C6670 fails to find initramfs occasionally
 * SysLink - Assert log message seen when doing rmmod syslink.ko after running messageQ sample application
 * SysLink - GateMP, on RTOS side sendEvent fail log message is seen (but sample application
 * SysLink - Assert log message seen when running HeapMemMP sample application

Issues fixed in this release
-None-