4. Contents
• Introduction to OMAP and DaVinci –
Heterogeneous Multicore GPP + DSP
• Linux OS and Kernel DSP/BIOS
• Standards
• Frameworks
• Practical
5. A GPP or General Purpose Processor is capable of doing and handling
I/O running os but is lot slower on video and imaging task where GPU
wins because of MAC units but GPU fails in general computing tasks. So
a mixture of both is norm of todays computing world
A problem comes up when powering such a hybrid Davinci SOC (System
on Chip) which includes both a GPP(General Purpose Processor) and a
DSP (Digital Signal Processor). The OS that must run this must schedule
tasks properly and have proper IPC (inter processor communication).
For the DSP, the task scheduler is a light weight scheduler called the
DSP/BIOS. For GPP we consider the world of Linux.
Heterogenous Multicore – Power of GPP + GPU
6. CPU: ARM926EJ 270Mhz & TMS320C64x+™DSP Core at 600 MHz
Memory APU : 16K I-Cache, 8K D-Cache, 32K TCM RAM, 8K Boot ROM
Memory GPU : 32K L1 I-Cache, 32K L1 D-Cache, 128K L2 Cache, 64K
Boot ROM
JPEG Video Coprocessors – Video and Imaging Coprocessor
ARCHITECTURE
7. Video Processing Sub System (VPSS) is
comprised of two blocks: Front End
(VPFE) & Back End (VPBE).
VPFE Consists of CCD Controller (CCDC),
Statistics Engine (H3A), Previewer,
Resizer whereas
VPBE consists of On-screen Display
(OSD) and Video Encoding (VENC).
When previewing the image the image
goes from camera to VPFE, then to DDR,
SCR(Switched Central Resource) and then
back to output. In case of image
processing the image from DDR ram goes
to EDMA then to cache and then to
processor where it is processing and then
it goes back to the VPFE for display.
VPSS : VPFE & VPBE
9. APIs
It has xDAIS (eXpress DSP Algo
Interoperability Std): An
eXpressDSP-compliant algorithm is a
module that implements the abstract
interface IALG. The IALG API takes
the memory management function
away from the algorithm and places
it in the hosting framework. Thus, an
interaction occurs between the
algorithm and the framework. This
interaction allows the client
application to allocate memory for
the algorithm and share memory
between algorithms. It also allows
the memory to be moved around
while an algorithm is operating
xDM (eXpress DSP Digital
Media): Set of APIs for multimedia
compressing algo, Resource allocation,
initialization and start APIs. Runtime
process & control APIs. Stop algorithm
and resource de-allocation APIs.
11. • 4 Elements - Tool chain; boot loader; kernel; user space
• Tool Chain:
• In software, a toolchain is the set of programming tools that
are used to create a product (typically another computer
program or system of programs).
● A tool chain consists of at least binutils: GNU
assembler, linker, etc.
• gcc: GNU C compiler
● C library (libc): the interface to the operating system
● gdb: debugger
• Types: Native (runs for the target, target really fast) and Cross
Compiler tool chain (can run anywhere on PC)
• Compiler mostly gcc , different for vendor like arm-gcc or
arm-angstom-linux-gcc etc .
• select toolchain if it supports your needs ARM A8 or ARMv4
or higher, FP support, community support eg- Codesourcery
g++, angstom, buildroot, Montavista & most imp it must have
lib support which in form of .so or src
• Goodies like IDE, Memory analyse tool, debugger etc
Elements of a Linux System : Toolchain
12. • Bootloader is a piece of code that runs before any operating system is
running.
• Bootloader are used to boot other operating systems, usually each
operating system has a set of bootloaders specific for it.
• It initializes the hardware, Sets up SDRAM controller
Map memory, Set processor mode and features
• Load a kernel
• Load images via Ethernet, serial, SD card
• Erase and program flash memory
• Nowadays a pre-bootloader is boots the system from flash and
transfers control to secondary bootlloader in NAND as this is edited
much more often.
• Most popular is the U-Boot. PC used bootmbr, linux uses grub/lilo
• Uboot has lot of options which can be set like booting from SD, NFS,
NAND. It erases NAND, set ipaddress for NFS, can give address to load
kernel
Elements of Linux System : Bootloader
13. • Why MontaVista? http://www.mvista.com/
• Steps:
• Make SW7 both up to boot from nand (left up right
down to boot from SD Card)
• Connect LAN, Audio, Composite Video, Power, UART
and set it up
• From minicom using settings bps : 115200, dbits – 8
connect to serial port
• You would see EVM# promt and davinci interface on
screen
Starting the Device
14. • Install all the softwares given with the OEM
CD 1: MontaVista Linux Pro System Tools
CD 2: MontaVista Linux Pro Target File System
CD 3: TI DVSDK Software
• INSTALLING THE TARGET LINUX SOFTWARE:
• SETTING UP THE NFS SERVER FILE SYSTEM:
• BUILDING THE LINUX RTOS
• REBUILDING THE DVEVM SOFTWARE FOR THE TARGET:
• BOOTING THE NEW LINUX KERNEL: set env var
Setting of Project
15. • We have to install these softwares on host Linux pc in
this order
• ❏ mvl_4_0_1_demo_sys_setuplinux.bin
• ❏ mvl_4_0_1_demo_target_setuplinux.bin
• ❏ mvl_4_0_1_demo_lsp_setuplinux_#_#_#_#.bin
• ❏ dvsdk_setuplinux_#_#_#_#.bin
• ❏ xdc_setuplinux_#_#_#_#.bin
Installing all the Softwares
16. • Create a shared folder ~workdir/filesys
• Copy this folder into it
/opt/mv_pro_4.0.1/montavista/pro/devkit/arm/v5t_le/t
arget/
• In /etc/exports file add the filesys folder
/home/<useracct>/workdir/filesys
*(rw,no_root_squash,no_all_squash,sync)
• Restart nfs service and add the folder to sys path
SETTING UP THE NFS SERVER FILE SYSTEM
17. • You need mvl toolchain present in lsp/ti-davinci
• Go to ti-davinci/linux-2.6.10_mvl401
• make ARCH=arm CROSS_COMPILE=arm_v5t_le-
davinci_dm355_evm_defconfig
• To modify any args use make menuconfig and then again
build it
• BUILDING THE LINUX RTOS
18. • Now write your own program
• Cross compile arm_v5t_le-gcc *.c –o <obj name>
• ./<obj name>
Make your own program