Menu

Tree [31165b] master /
 History

HTTPS access


File Date Author Commit
 include 2014-02-24 Jérôme Stadelmann Jérôme Stadelmann [31165b] Initial commit
 src 2014-02-24 Jérôme Stadelmann Jérôme Stadelmann [31165b] Initial commit
 tests 2014-02-24 Jérôme Stadelmann Jérôme Stadelmann [31165b] Initial commit
 CMakeLists.txt 2014-02-24 Jérôme Stadelmann Jérôme Stadelmann [31165b] Initial commit
 README 2014-02-24 Jérôme Stadelmann Jérôme Stadelmann [31165b] Initial commit

Read Me

=== LIBSOSOC README ===

Author : Xavier Blanc <xavier.blanc1@heig-vd.ch>
Updated by : Jerome Stadelmann <jerome.stadelmann@heig-vd.ch>
Date : 24.02.2014

This document will describe the main steps how to setup and compile the libsosoc library. For usage of the library, please refer to the different tests in the tests folder.
The sources are structured in the following way :

├── include
├── src
│   ├── arm
│   │   └── include
│   ├── dsp
│   │   ├── dsp
│   │   ├── host
│   │   ├── include
│   │   └── shared
│   └── neon
│       ├── fftw-3.3.3
│       └── include
├── tests
│   └── include
└── TI

- The include folder contains all library include files.
- The src folder contains the sources of the library. The ./src contains the common sources, the arm/dsp/neon subfolders contain respectively the specific sources for each target.
- The tests folder contains some tests for the library as well as usage examples.
- The TI folder will contain all the Texas Instruments tools and dependancies that are required.

The next section describes the different steps to setup the environment and to compile the libsosoc library


==== Compilation Steps ====

1. To compile the libsosoc library, you need the following TI tools :

  -  SysLink 2.21.02.10 : 
     http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/syslink/2_21_02_10/exports/syslink_2_21_02_10.tar.gz
  -  IPC 1.25.01.09 : 
     http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/1_25_01_09/exports/ipc_setuplinux_1_25_01_09.bin
  -  LinuxUtils 2.23.00.01 : 
     http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/linuxutils/2_23_01/exports/linuxutils_2_23_01.tar.gz
  -  Bios 6.34.03.19 : 
     http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/bios/sysbios/6_34_03_19/exports/bios_setuplinux_6_34_03_19.bin
  -  TI CGT C6000 7.2.2 : 
     https://www-a.ti.com/downloads/sds_support/TICodegenerationTools/download.htm
  -  Xdctools 3.24.03.33 : 
     http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/rtsc/3_24_03_33//exports/xdctools_setuplinux_3_24_03_33.bin

2. Extract and install them into the TI folder

  You may have to create the TI subfolder :

  - cd <libsosoc_root_path>
  - mkdir TI

  For the installation of .bin packages, choose "Typical Installation". For archives (tar.gz), extract them in this directory.

3. Compile the different tools

  You will need a valid toolchain and the GNU/Linux kernel sources, see section "Compilation example for Syslink" below for some information on how we did for our version and hardware.

  The instructions on how to compile the dependencies are located on the TI website : 
  http://processors.wiki.ti.com/index.php/SysLink_Install_Guide

4. For FFT and iFFT functions on neon, the FFTW library was used

  For the FFT on NEON target, we used FFTW C subroutine to increase performance.
  It needs to be compiled separately.

  Download FFTW version 3.3 on the website and extract it in <libsosoc_root_path>/src/neon/fftw-3.3.3 :
  http://www.fftw.org/fftw-3.3.3.tar.gz

  Here is the configuration example :

  ./configure --prefix=/home/libsosoc/src/neon/fftw --host=arm-linux-gnueabihf --enable-single \
  --enable-neon --enable-shared "CC=arm-linux-gnueabihf-gcc -march=armv7-a -mfloat-abi=hard -fPIC"

  make && make install

5. Compile the sosoc library :

  - cd <libsosoc_root_path>
  - mkdir build
  - cd build
  - cmake ..
  - make
  - make install


==== Compilation example for Syslink ====

  You should probably make some changes at Syslink and your Linux kernel.
  This example concerns the version Linux kernel v3.0.12 and toolchain from Linaro (2013.01) with following components:

  TARGET arm-linux-gnueabihf
  ARCH Cortex-A
  CPU Cortex-A9
  ABI 'hard float'
  MODE Thumb-2
  FPU VFPv3-D16 FPU
  LIBC_VERSION EGLIBC 2.15 

  - Comment "inline" function which is not compatible with this toolchain: 
    syslink_2_21_01_05/packages/ti/syslink/inc/GatePeterson.h, line 308
  - Compile in hard-float mode :
    find . -exec sed -i 's/-mfloat-abi=softfp/-mfloat-abi=hard/g' {} \;
  - Complete the file "products.mak" at the root directory of Syslink : 
  
      ******************
      DEVICE = OMAP3530
      SDK = NONE
      
      EXEC_DIR = $(CURDIR)/bin
      
      ######## For OMAP3530 device ########
      ifeq ("$(DEVICE)","OMAP3530")
      LINUXKERNEL = /home/libsosoc/src/linux-3.0-reptar
      CGT_ARM_INSTALL_DIR = /home/libsosoc/buildroot-2013.02-rc2/output/host/usr
      CGT_ARM_PREFIX  = $(CGT_ARM_INSTALL_DIR)/bin/arm-linux-gnueabihf-
      IPC_INSTALL_DIR = /home/libsosoc/ti/ipc_1_25_01_09
      BIOS_INSTALL_DIR = /home/libsosoc/bios_6_34_03_19
      XDC_INSTALL_DIR = /home/libsosoc/xdctools_3_24_03_33
      
      # If LOADER=ELF then below elf tools path is required else set C64P path
      ifeq ("$(LOADER)","ELF")
      CGT_C64P_ELF_INSTALL_DIR= /home/libsosoc/ti/TI_CGT_C6000_7.2.2
      else
      CGT_C64P_INSTALL_DIR    = /home/libsosoc/ti/TI_CGT_C6000_7.2.2
      Endif
      ******

  - Patch the kernel : Comments the lines for OMAP_IOMMU_IVA :

      /* #if defined(CONFIG_OMAP_IOMMU_IVA2) */
      .....
      /* #endif */

  - Patch the kernel : Add CONFIG_OMAP_IOMMU in .config


Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.