1,381
edits
Changes
From IGEP - ISEE Wiki
no edit summary
This tutorial was written for the [http://www.igep-platform.com/index.php?option=com_content&view=article&id=46&Itemid=55 ''igep revB''] board, but it is transposable to other ''OMAP3530'' boards (above all for the ''DSP'' part). It is a summary (with some adaptations) of several tutorials found on Internet (see [[How_to_setup_a_development_environmentHow to setup a development environment#References|References]]). All files will be installed in the $HOME directory.
This tutorial is a translation of a French tutorial we wrote on our robotic [http://as.tech.free.fr/wiki/index.php?title=Cr%C3%A9er_un_environnement_de_d%C3%A9veloppement_pour_l%27OMAP3530 web site]. Sorry for the English, feel free to correct mistakes.
= ''Rootfs'' =
This section describes how to obtain the [http://www.pokylinux.org/ ''Poky''] distribution. This is the distribution shipped with the ''igep'' boad; it is based on [http://wiki.openembedded.net/index.php/Main_Page ''Open Embedded''].
The first thing to do is set ''Bash'' as default ''sh'' ''shell'': <pre>sudo dpkg-reconfigure dash</pre> answer no to the question. Thus, "/bin/sh" will point towards "/bin/bash" (and not "/bin/dash"). Then, some kernels settings have to be changed. Edit the file "/etc/sysctl.conf" as ''root'' and set : <pre>vm.mmap_min_addr = 0</pre>then, to take the modification into account:<pre>sudo sysctl -p</pre> Some additional packages need to be installed to satisfy ''bitbake'' dependencies. First, add the following repositories to "/etc/apt/sources.list" :<pre>deb http://debian.o-hand.com etch/
deb http://debian.o-hand.com unstable/
deb http://debian.o-hand.com feisty/
deb http://debian.o-hand.com gutsy/
deb http://debian.o-hand.com hardy/
</pre>Update the data base and install the following packages:<pre>sudo apt-get update
sudo aptitude install python-psyco hgsvn qemu poky-depends poky-scripts
</pre><!--
a priori ceci est automatiquement installé :
sudo aptitude install subversion cvs git-core \
libncurses5-dev gawk python-dev python-psyco python-pysqlite2 \
scrollkeeper gnome-doc-utils gettext automake hgsvn qemu poky-depends poky-scripts
-->Then, download and decompress the last stable version of ''Poky'': <pre>mkdir -p $HOME/igep/poky
cd $HOME/igep/poky
wget http://pokylinux.org/releases/poky-purple-3.2.tar.bz2
tar -xjf poky-purple-3.2.tar.bz2
</pre> The configuration file of ''Poky'' is located in the directory $HOME/igep/poky/build/conf :<pre>cd build/conf
nano local.conf
</pre>And paste the modified version for the ''igep'' board:<pre># Where to cache the files Poky downloadsDL_DIR ?= "${OEROOT}/sources"
BBFILES += "\
${OEROOT}/meta/packages/*/*.bb \
# For a quadcore, BB_NUMBER_THREADS = "4", PARALLEL_MAKE = "-j 4" would
# be appropriate.
# Also, make can be passed flags so it run parallel threads e.g.:
# PARALLEL_MAKE = "-j 2"
# The machine to target
MACHINE ?= "igep0020b"
TARGET_FPU_arm ?= "hard"
# Other supported machines
#MACHINE ?= "qemux86"#MACHINE ?= "qemuarm"#MACHINE ?= "c7x0"#MACHINE ?= "akita"#MACHINE ?= "spitz"#MACHINE ?= "nokia770"#MACHINE ?= "nokia800"#MACHINE ?= "fic-gta01"#MACHINE ?= "bootcdx86"#MACHINE ?= "cm-x270"#MACHINE ?= "em-x270"#MACHINE ?= "htcuniversal"#MACHINE ?= "mx31ads"#MACHINE ?= "mx31litekit"#MACHINE ?= "mx31phy"#MACHINE ?= "netbook"#MACHINE ?= "zylonite"
DISTRO ?= "poky"
# For bleeding edge / experimental / unstable package versions
# DISTRO ?= "poky-bleeding"
# Poky has various extra metadata collections (openmoko, extras).
# include 'package_deb' for debs
# include 'package_ipk' for ipks
#PACKAGE_CLASSES ?= "package_deb package_ipk"PACKAGE_CLASSES ?= "package_ipk"
# POKYMODE controls the characteristics of the generated packages/images by
#
# The default is "eabi"
# Use "oabi" for machines with kernels < < 2.6.18 on ARM for example.
# Use "external-MODE" to use the precompiled external toolchains where MODE
# is the type of external toolchain to use e.g. eabi.
# Note that a full build of everything in OpenEmbedded will take GigaBytes of hard
# disk space, so make sure to free enough space. The default TMPDIR is
# <<build directory>>/tmp
TMPDIR = "${OEROOT}/build/tmp-${MACHINE}"
# Supported values are i586 and x86_64
SDKMACHINE="i586"
</pre> The following section needs to be adapted to the number of CPU the host machine has:<pre># Uncomment and set to allow bitbake to execute multiple tasks at once.
# For a quadcore, BB_NUMBER_THREADS = "4", PARALLEL_MAKE = "-j 4" would
# be appropriate.
# Also, make can be passed flags so it run parallel threads e.g.:
# PARALLEL_MAKE = "-j 2"
</pre> The build environment needs to be setup by the following command:<pre>cd ../..
source poky-init-build-env
</pre>A target can be built using:<pre>bitbake <<target>></pre>there is a lot of targets, which can be an image (take a look at the "meta/packages/images/" directory) or more simply a ''recipe'' corresponding to a software. A detailed list of images can be found on the [http://www.pokylinux.org/doc/poky-handbook.html#ref-images Poky Handbook]. To build an image without ''X11'' server:<pre>bitbake poky-image-base</pre>This step is very long (several hours) and take a lot of space (like 16 gigas) on the host's hard disk. If you are behind a ''proxy'', take a look at this [http://www.pokylinux.org/doc/poky-handbook.html#id3403214 part] of ''Poky's'' FAQ.
wget http://lists.o-hand.com/poky/att-1420/fix-gxx-include-dir.patch
patch -p1 < < fix-gxx-include-dir.patch</pre> The cross toolchain can be built using ''bitbake'':<pre>source poky-init-build-env
bitbake meta-toolchain-sdk
</pre>The result will be placed in the directory:<pre> tmp-igep0020b/deploy/sdk/</pre>as an archive to decompress in the directory "/usr/local/poky".
In order to cross compile code for the ''ARM'', the following script needs to be run to set up paths:<pre>source /usr/local/poky/eabi-glibc/environment-setup-arm-poky-linux-gnueabi</pre>= Kernel compilation =
Currently, the last stable kernel provided by ''ISEE'' is "linux-omap-2.6.28.10-igep0020b-2". Check in the ''download'' section of [http://www.myigep.com/index.php?option= Kernel compilation com_weblinks&view=category&id=50&Itemid=85 www.myigep.com] which is the last one. More recent versions (but unstable) can be downloaded on the [http://git.myigep.com/gitweb ''git''] of ''ISEE''.
=== Kernel compilation under outside ''bitbake'' ===
wget http://downloads.myigep.com/sources/kernel/linux-omap-2.6.28.10-igep0020b-2.tar.gz
tar -xzf linux-omap-2.6.28.10-igep0020b-2.tar.gz
cd linux-omap-2.6.28.10-igep0020b-2
</pre> Configure the kernel:<pre>source /usr/local/poky/eabi-glibc/environment-setup-arm-poky-linux-gnueabi
make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- igep0020b_defconfig
make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- menuconfig
</pre>The last line is only needed if you want to customize the kernel. To compile kernel and modules: <pre>make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- uImage modules</pre> The resulting image is placed in "arch/arm/boot" directory.
= Boot on the ''rootfs'' and the kernel == Over network ===
We assume now that ''<<distro>>=poky'', ''<<project>>=poky-image-base'' and ''<<machine>>=igep0020b''.
Thus, create the following directories on the host:<pre>sudo mkdir -p /srv/nfs/poky/poky-image-base/igep0020b
sudo mkdir -p /srv/tftp/poky/poky-image-base/igep0020b
</pre>Next, copy the kernel. If it was made [[How_to_setup_a_development_environmentHow to setup a development environment#Kernel_compilation_outside_bitbake|outside ''bitbake'']]:<pre>sudo cp $HOME/igep/linux-omap-2.6.28.10-igep0020b-2/arch/arm/boot/uImage /srv/tftp/poky/poky-image-base/igep0020b/</pre>or if it was made [[How_to_setup_a_development_environmentHow to setup a development environment#Rootfs|with the ''rootfs'']] or [[How_to_setup_a_development_environmentHow to setup a development environment#Kernel_compilation_under_bitbake|under''bitbake'']]:<pre>sudo cp $HOME/igep/poky/build/tmp-igep0020b/deploy/images/uImage /srv/tftp/poky/poky-image-base/igep0020b/</pre>Next, install the ''rootfs'' in the good directory:<pre>pushd /srv/nfs/poky/poky-image-base/igep0020bsudo cpio -idm< < $HOME/igep/poky/build/tmp-igep0020b/deploy/images/poky-image-base-igep0020b.cpio
popd
</pre>If kernel was built [[How_to_setup_a_development_environmentHow to setup a development environment#Kernel_compilation_outside_bitbake|outside ''bitbake'']], install kernel modules in the ''rootfs'' as follows:<pre>cd $HOME/igep/linux-omap-2.6.28.10-igep0020b-2
source /usr/local/poky/eabi-glibc/environment-setup-arm-poky-linux-gnueabi
make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- modules_install INSTALL_MOD_PATH=/srv/nfs/poky/poky-image-base/igep0020b
</pre>Finally, install the two servers on host:<pre>sudo apt-get install tftpd nfs-kernel-server</pre>By default, the ''TFTP'' server shares the "/srv/tftp" directory, which is the one we are using. If necessary, you can change this by editing the "/etc/inetd.conf" file :<pre>#:BOOT: TFTP service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers."
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp
</pre>
The configuration file of ''NFS'' server is "/etc/exports". Add the following line for each ''rootfs'' :
<pre># Poky image rootfs
/srv/nfs/<distro>/<project>/<machine> <target_ip>(rw,no_root_squash,no_subtree_check,sync)
</pre>
where ''<target_ip>'' is the ''ip'' address of the target. By default, ''igep'' address is ''192.168.254.254''. It is also possible to put ''*'' to allow a wider range of addresses. In our case, write :
<pre>/srv/nfs/poky/poky-image-base/igep0020b 192.168.254.254(rw,no_root_squash,no_subtree_check,sync)
</pre>
</pre>
Every time that you modify/update the file /etc/exports.<br>
=== Copy kernel and ''rootfs'' in ''flash'' memory ===
Copy can be done either from ''uboot'' or ''linux''. To copy the ''rootfs'', a ''jffs2'' file is needed. If you do not need any modification to the one created [[How_to_setup_a_development_environmentHow to setup a development environment#Rootfs|previously]], you can jump next step. If you have made changes to the ''rootfs'' (for example when using it for [[How_to_setup_a_development_environmentHow to setup a development environment#Over_network|''NFS'' boot]]), you will have to build the ''jffs2'' file from the ''rootfs'' directory.
====Create the ''jffs2'' file====
The following package needs to be installed to create the ''jffs2'' file:<pre>sudo apt-get install mtd-utils</pre>Then use the command:<pre>mkfs.jffs2 -r <<root file system> > -e <<erase block size> > -o <<output file> > </pre>where <<root file system> > is the path to the directory to copy (ie /srv/nfs/poky/poky-image-base/igep0020b), <<erase block size> > is the block size to erase in KB and <<output file> > name of the output file.Block size can be seen with the following command:<pre>cat /proc/mtd</pre>On ''igep'', it returns:<pre>dev: size erasesize name
mtd0: 00080000 00040000 "X-Loader"
mtd1: 00180000 00040000 "U-Boot"
mtd3: 00300000 00040000 "Kernel"
mtd4: 1fa80000 00040000 "File System"
</pre>Thus, the size is 0x40000=265KB.
====Copy from ''uboot''====
==== Copy from ''linux'' ====
mtd0: 00080000 00040000 "X-Loader"
mtd1: 00180000 00040000 "U-Boot"
mtd3: 00300000 00040000 "Kernel"
mtd4: 1fa80000 00040000 "File System"
</pre>To copy the kernel, erase the corresponding memory area before doing the copy:<pre>flash_eraseall /dev/mtd3
nandwrite -p /dev/mtd3 uImage
</pre>same thing for the ''rootfs''<pre>flash_eraseall /dev/mtd4
nandwrite -p /dev/mtd4 rootfs.jffs2
</pre>Note that if you are using the ''rootfs'' built [[How_to_setup_a_development_environmentHow to setup a development environment#Rootfs|previously]], the corresponding file should be located there:<pre>$HOME/igep/poky/build/tmp-igep0020b/deploy/images/poky-image-base-igep0020b.jffs2</pre>And now reboot. In case of errors (such as ''bad crc'' on the ''kernel'' for example), it is necessary to reflash all, see [http://wiki.myigep.com/trac/wiki/HowToUpgradeTheFactoryFirmware this].
=== Copy kernel and Chaine de développement croisée ''rootfsDSP'' in memory card == =
Note: certains des outils de cette section nécessitent un compte sur le site de TI pour pouvoir les télécharger. La page principale des téléchargements est [http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_sb/targetcontent/index.html celle-ci].
= Chaine de développement croisée == ''DSPCode generation tools'' ===
=== ''Code generation toolsDSP BIOS'' ===
''TI CGTDSP BIOS'' est le cross compilateur pour système d'exploitation résidant dans le ''DSP''. Récupérer la dernière version A télécharger [httpshttp://wwwsoftware-adl.ti.com/downloadsdsps/dsps_public_sw/sdo_sb/sds_supporttargetcontent/TICodegenerationToolsdspbios/downloadindex.htm html ici] et installer (par exemple dans le répertoire $HOME/TI/TI_CGTBIOS).
=== ''DSP BIOSXDC Tools'' ===
=== ''XDC ToolsDSP Link'' ===
''DSPLink'' permet la communication entre ''ARM'' et ''DSP''. A télécharger [http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_sb/targetcontent/rtsclink/link_1_60/index.html ici] et installer (. Décompresser le par exemple dans le répertoire '$HOME/TIigep/xdctools)dsplink.
</pre>
GPP side distribution file: $DSPLINK/make/Linux/omap3530_2.6.mk
GPP side distribution file: $DSPLINK/gpp/src/Rules.mk
DSP side distribution file: $DSPLINK/make/DspBios/c64xxp_5.xx_linux.mk
</pre>ce sont les fichiers à éditer pour adapter à notre configuration.
Pour le fichier $DSPLINK/make/Linux/omap3530_2.6.mk, changer (et adapter si besoin) les valeurs suivantes:<pre># ============================================================================
# Set the values of necessary variables to be used for the OS.
# ============================================================================
# Base directory for the GPP OS
# ----------------------------------------------------------------------------
BASE_BUILDOS :=${HOME}/igep/linux-omap-2.6.28.10-igep0020b-2
# ----------------------------------------------------------------------------
# Base for toolchain
# ----------------------------------------------------------------------------
BASE_TOOLCHAIN := /usr/local/poky/eabi-glibc
# ----------------------------------------------------------------------------
# Base directory for include files provided by GPP OS
# ----------------------------------------------------------------------------
BASE_OSINC := $(BASE_BUILDOS)/include
OSINC_GENERIC := $(BASE_OSINC)OSINC_PLATFORM := $(BASE_TOOLCHAIN)/lib/gcc/arm-poky-linux-gnueabi/4.3.3/includeOSINC_TARGET := $(BASE_TOOLCHAIN)/arm-poky-linux-gnueabi/libc/usr/include
# ============================================================================
# Name of the compiler
# ----------------------------------------------------------------------------
COMPILER := $(BASE_CGTOOLS)/arm-poky-linux-gnueabi-gccLD := $(BASE_CGTOOLS)/arm-poky-linux-gnueabi-ld
CROSS_COMPILE := arm-poky-linux-gnueabi-
export CROSS_COMPILE
# ARCHIVER2 - This denotes the archiver.
# ============================================================================
ARCHIVER := $(BASE_CGTOOLS)/arm-poky-linux-gnueabi-ar
# ============================================================================
# LINKER - The compiler is used for linking purpose as well.
# ============================================================================
LINKER := $(BASE_CGTOOLS)/arm-poky-linux-gnueabi-gcc</pre>Pour le fichier $DSPLINK/gpp/src/Rules.mk, changer (et adapter si besoin) :<pre>ifeq ("$(TI_DSPLINK_PLATFORM)", "OMAP3530")KERNEL_DIR := ${HOME}/igep/linux-omap-2.6.28.10-igep0020b-2TOOL_PATH := /usr/local/poky/eabi-glibc/bin
endif #ifeq ("$(TI_DSPLINK_PLATFORM)", "OMAP3530")
</pre>ainsi que :<pre>ifeq ("$(TI_DSPLINK_GPPOSPREFIX)", "uc")
CG_PREFIX = arm-linux-uclibcgnueabi-
MAKE_OPTS = ARCH=arm CROSS_COMPILE=$(TOOL_PATH)/arm-linux-uclibcgnueabi-
MAKE_OPTS = ARCH=arm CROSS_COMPILE=$(TOOL_PATH)/arm-poky-linux-gnueabi-
endif # ifeq ("$(TI_DSPLINK_GPPOSPREFIX)", "uc")
</pre>Pour le fichier $DSPLINK/make/DspBios/c64xxp_5.xx_linux.mk, changer (et adapter si besoin) :<pre># ----------------------------------------------------------------------------
# Base directory for the DSP OS
# ----------------------------------------------------------------------------
BASE_INSTALL := $(HOME)/TIBASE_SABIOS := $(BASE_INSTALL)/bios_5_41_03_17BASE_BUILDOS := $(BASE_SABIOS)/packages/ti/bios
# ----------------------------------------------------------------------------
# Base directory for the XDC tools
# ----------------------------------------------------------------------------
XDCTOOLS_DIR := $(BASE_INSTALL)/xdctools_3_15_00_50
# ----------------------------------------------------------------------------
# Base for code generation tools - compiler, linker, archiver etc.
# ----------------------------------------------------------------------------
BASE_CGTOOLS := $(BASE_INSTALL)/TI_CGT_C6000_6.1.13BASE_CGTOOLSBIN := $(BASE_CGTOOLS)/bin</pre> Aller ensuite dans le répertoire $DSPLINK/dsp/src et faire : <pre>make -s</pre> de même dans le répertoire $DSPLINK/gpp/src :<pre>make -s</pre>ce qui aura pour effet de compiler le module dsplinkk.ko (dans le répertoire $DSPLINK/gpp/export/BIN/Linux/OMAP3530/RELEASE)
Des programmes exemples se trouvent dans les répertoires $DSPLINK/dsp/src/samples et $DSPLINK/gpp/src/samples, à compiler avec
<pre>make</pre> === ''CMEM'' ===
'''NOTE:''' les versions 2.25 et 2.25.01.06 ont des soucis au niveau des ''ioctl'' [http://e2e.ti.com/support/arm174_microprocessors/omap_applications_processors/f/42/p/36278/126821.aspx#126821 voir ici], ce qui affecte notamment les manipulations de cache (writeback et invalidate). La version 2.25.02.08 est sensée corriger cela (à tester). Sinon, travailler sur les versions 2.24
<br> ''CMEM'', ou ''contiguous memory manager'' permet d'allouer de la mémoire partagée entre ''ARM'' et ''DSP''. Il fait partie des ''linuxutils'', à télécharger [http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/linuxutils/index.html ici]. Aller dans le répertoire linuxutils_2_25_02_08/packages/ti/sdo/linuxutils/cmem et donner l'accès en écriture au fichier Rules.make :<pre>chmod +w Rules.make</pre>Puis éditer ce fichier et changer (adapter si besoin) :<pre># For "kernel_org" builds
MVTOOL_PREFIX=/usr/local/poky/eabi-glibc/bin/arm-poky-linux-gnueabi-
# For OMAP3530 2.6.29 Linux kernel
LINUXKERNEL_INSTALL_DIR=$(HOME)/igep/linux-omap-2.6.28.10-igep0020b-2
</pre> Puis faire<pre>make release</pre>pour compiler le module cmemk.ko (dans le réperoire ./src/module). === ''Framework Components'' ===
Les ''Framework Components'' incluent entre autres les librairies ''DMAN3'' et ''ACPY3'', permettant les copies par ''DMA''. A télécharger [http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_sb/targetcontent/FC/index.html ici] et à décompresser par exemple dans "$HOME/TI/framework_components_2_24_01".
=== ''Local Power Manager (LPM)'' fait aussi partie des ''Linux Utilities'', mais ne semble plus intégré dans les nouvelles versions. Il se trouve avec les anciennes versions de ''linuxutils'', [http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_sb/targetcontent/linuxutils/old.html ici]. ===
''LPM'' permet de redémarrer le fait aussi partie des ''DSPLinux Utilities'' à la volée. En effet, par défaut ''DSPLink'' garde mais ne semble plus intégré dans la mémoire cache le programme exécuté par le ''DSP''les nouvelles versions. La même application peut donc être lancée plusieurs fois à la suite, par contre si une nouvelle application est lancée, il y aura plantage; d'où l'intérêt Il se trouve avec les anciennes versions de ''LPMlinuxutils'', [http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_sb/targetcontent/linuxutils/old.html ici].
Aller dans le répertoire local_power_manager_1_24/packages/ti/bios/power/modules/omap3530/lpm et éditer le Makefile pour changer: <pre>LINUXKERNEL_INSTALL_DIR = $(HOME)/igep/linux-omap-2.6.28.10-igep0020b-2
MVTOOL_PREFIX = /usr/local/poky/eabi-glibc/bin/arm-poky-linux-gnueabi-
DSPLINK_REPO = $(HOME)/igep/dsplink_linux_1_63
</pre>puis compiler <pre>make</pre> le module lpm_omap3530.ko sera fait dans le répertoire courent.
local_power_manager_1_24/packages/ti/bios/power/test/bin/ti_platforms_evm3530/linux/debugrelease/
*[http://focus.ti.com/docs/toolsw/folders/print/sprc542.html IQ Math]
A noter, pour les dsplib v210, le lien Linux semble ne pas marcher. A partir de la version Windows, il faut changer le fichier C64x+DSPLIB/dsplib_v210/dsplib64plus.h. Tous les chemins relatifs sont en notation Windows "\" qu'il faut remplacer par des "/".
<!-- pour loop fft, changer le fichier sources pour mettre le chemin des fichiers c de dsplib
changer aussi le chemin des .h dans tskloop.c -->
= Configurer ''DSPLINK'' pour la compilation de projets =
Cette partie explique comment rajouter les diverses librairies à l'environnement ''DSPLINK''
=== ''Includes'' ===
Éditer le fichier $DSPLINK/make/DspBios/c64xxp_5.xx_linux.mk pour rajouter les répertoires ''includes'': <pre># ----------------------------------------------------------------------------
# Base directory for include files
# ----------------------------------------------------------------------------
BASE_OSINC := $(BASE_BUILDOS)/includeBASE_CGTOOLSINC := $(BASE_CGTOOLS)/includeBASE_RTDXINC := $(BASE_RTDX)/include/c6000BASE_PSLINC := $(BASE_PSL)/includeBASE_CSLINC :=
BASE_XDCINC := $(BASE_INSTALL)/xdctools_3_15_00_50/packages
BASE_FCINC := $(BASE_INSTALL)/framework_components_2_24_01/packages
BASE_IQMATHINC := $(BASE_INSTALL)/IQmath_v213/include
OSINC_GENERIC := $(BASE_OSINC)OSINC_PLATFORM := $(BASE_CGTOOLSINC) $(BASE_RTDXINC) \
$(BASE_PSLINC) $(BASE_CSLINC) $(BASE_XDCINC) $(BASE_FCINC) $(BASE_FCTOOLINC) $(BASE_IMGLIBINC) $(BASE_IQMATHINC)
</pre>Les variables OSINC_GENERIC et OSINC_PLATFORM permettent de définir les répertoires où ''DSPLINK'' cherchera les ''.h''.
=== Librairies ===
Par défaut, ''DSPLINK'' cherche les librairies dans les répertoires:<pre>$DSPLINK/dsp/BUILD/OMAP3530_0/EXPORT/DEBUG/
$DSPLINK/dsp/BUILD/OMAP3530_0/EXPORT/RELEASE/
</pre>Il faut donc y copier les différentes libraires:<pre>cp $HOME/TI/framework_components_2_24_01/packages/ti/sdo/fc/dman3/lib/debug/dman3.a64P $DSPLINK/dsp/BUILD/OMAP3530_0/EXPORT/DEBUG/
cp $HOME/TI/framework_components_2_24_01/packages/ti/sdo/fc/dman3/lib/release/dman3.a64P $DSPLINK/dsp/BUILD/OMAP3530_0/EXPORT/RELEASE/
cp $HOME/TI/framework_components_2_24_01/packages/ti/sdo/fc/acpy3/lib/debug/acpy3.a64P $DSPLINK/dsp/BUILD/OMAP3530_0/EXPORT/DEBUG/
cp $HOME/TI/imglib_v201/lib/target/imglib2.l64P $DSPLINK/dsp/BUILD/OMAP3530_0/EXPORT/DEBUG/
cp $HOME/TI/imglib_v201/lib/target/imglib2.l64P $DSPLINK/dsp/BUILD/OMAP3530_0/EXPORT/RELEASE/
</pre>= Configure ''CodeBlocks'' for ''ARM'' =
$(HOME)/igep/dsplink_linux_1_63/dsplink/gpp/inc/sys/Linux
$(HOME)/igep/dsplink_linux_1_63/dsplink/gpp/export/INCLUDE/Linux/OMAP3530/usr
</pre>Which should give the following result: [[Image:Compiler.jpg|center|500px]]
[http://www.pokylinux.org/doc/poky-handbook.html Poky Handbook]
[http://wiki.myigep.com/trac/wiki/HowToCrossCompileTheLinuxKernel How To Cross Compile The Linux Kernel]
[http://wiki.myigep.com/trac/wiki/HowToUpgradeTheFactoryFirmware How To Upgrade The Factory Firmware]
[http://wiki.davincidsp.com/index.php/Building_DSPLink Building DSPLink]