Linux-c6x 2.0-alpha2 Release

From LinuxC6xWiki

Jump to: navigation, search

This is the 2.0 Alpha2 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 C6670 EVMs. Users are encouraged to update to later releases when available. Bug fixes will be applied to subsequent releases of the 2.0 series.

Contents

Release highlights

  • Second 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)
    • EVMC6670 (little endian mode only)

This release uses an early-access version of gcc tool chain (4.5-109) from Code Sourcery [[1]].

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

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-alpha2
 ./bootstrap linux-c6x-2.0-alpha2

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.

cd my-linux-c6x/
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 
      # 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
   

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=0x10000 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-alpha1 User Guide for details on how to program the NAND flash

Known issues

  • c64x platforms are not validated in this release
  • C66 User space still compiled for soft floating point
  • C6670 fails to find initramfs occasionally

Issues fixed in this release

  • C66 SPI driver timeout issue when writting to SPI NOR flash
  • Web control panel doesn't currently support programming the Kernel and filesystem in the NAND.
  • tftp boot is not functional
Personal tools
Create a book