=== 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