Building your own toolchain
~ Chaitannya Mahatme
Overview of ARM architectures. 

ARM 7

ARM 9

ARM 11
 ARM7TDMI

ARM7TDMI 
(ARM7+Thumb+Debug+Multiplier+ICE)

This generation introduced the Thumb 16­
bit instruction set 
Au...
ARM 9

ARM moved from a von Neumann 
architecture (Princeton architecture) to a 
Harvard architecture with separate 
inst...
ARM 11

SIMD  instructions  which  can  double 
MPEG­4  and  audio  digital  signal 
processing algorithm  speed

Cache ...
Steps of Cross­Compilation

gcc:  Run  the  cross­compiler  on  the  host 
machine to produce assembler files for the 
ta...
Specifing target for your toolchain

arm­linux

Armv4l : This makes support for the ARM 
v4 architecture, as used in the...
EABI target

arm­eabi

arm­none­eabi

In practice the target name makes almost
no practical difference to the toolchain...
Other EABI options

arm­none­gnueabi: this is the name as arm­
none­eabi (specific to GNU compiler)

arm­unknown­eabi: b...
CPU options

arm7,  arm7tdmi, arm720t, 

arm9', arm9e, arm920, arm920t

arm1136j­s, arm1176jz­s
Other configure options

­­enable­interwork  This allows for 
assembling Thumb and ARM code mixed 
into the same binaries...
EABI for Linux

GNU  EABI  is  a  new  Application  Binary 
Interface  (ABI)  for  Linux  a.k.a  Embedded 
ABI.

EABI sp...
Why switch to EABI?

Compilers    that  support  the  EABI  create 
object  code  that  is  compatible  with  code 
gener...

Allows use of optimized hardfloat 
functions with the system's softfloat 
libraries

Uses a more efficient syscall conv...
Setting up build envoirnment.

Preferably use virtual box / Vmware.

Create a new user for the installation.

Set  up  ...
Compilation process

Binutils 

glibc

gcc

gdb
Bootstrapping gcc

Install all the dependencies. 

The list of dependencies is on gcc.org

Mandatory  dependencies  are...
Installing glibc

Before doing any configuring or compiling, 
you  must  set  the  C  compiler  that  you’re 
using to be...
Installing gcc: Part II

Make 

Make install

Add compiler to path variable
Get more info on
  http://wiki.openarmlab.org/

 http://wiki.openarmlab.org/index.php?
title=Building_your_own_toolchain
That's all Folks … Thank you
Upcoming SlideShare
Loading in...5
×

Presentation

558

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
558
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Presentation

  1. 1. Building your own toolchain ~ Chaitannya Mahatme
  2. 2. Overview of ARM architectures.   ARM 7  ARM 9  ARM 11
  3. 3.  ARM7TDMI  ARM7TDMI  (ARM7+Thumb+Debug+Multiplier+ICE)  This generation introduced the Thumb 16­ bit instruction set  Audio controller in the SEGA Dreamcast  D­Link DSL­604+ Wireless ADSL Router.  iPod ,iRiver   Most of Nokia's mobile phone range.
  4. 4. ARM 9  ARM moved from a von Neumann  architecture (Princeton architecture) to a  Harvard architecture with separate  instruction and data bus (and caches),  significantly increasing its potential speed.  Most important change was introduction of  MMU, POSIX complaint OS could be  ported.  All smart phones
  5. 5. ARM 11  SIMD  instructions  which  can  double  MPEG­4  and  audio  digital  signal  processing algorithm  speed  Cache  is  physically  addressed,  solving  many  cache  aliasing  problems  and  reducing context switch overhead.  TI OMAP2 series processors.  All touch based smart phones.
  6. 6. Steps of Cross­Compilation  gcc:  Run  the  cross­compiler  on  the  host  machine to produce assembler files for the  target machine.   as:  Assemble  the  files  produced  by  the  cross­compiler.   ld: Link those files to make an executable.  You can do this either with a linker on the  target  machine,  or  with  a  cross­linker  on  the host machine.  
  7. 7. Specifing target for your toolchain  arm­linux  Armv4l : This makes support for the ARM  v4 architecture, as used in the StrongARM, ARM7TDMI, ARM8, ARM9.  Armv5l : This makes support for the ARM  v5 architecture, as used in the XScale and ARM10.
  8. 8. EABI target  arm­eabi  arm­none­eabi  In practice the target name makes almost no practical difference to the toolchain you
  9. 9. Other EABI options  arm­none­gnueabi: this is the name as arm­ none­eabi (specific to GNU compiler)  arm­unknown­eabi: bare metal  arm­linux­eabi: Designed to be used to  build programs with glibc under a Linux  environment.  This would what you would  use to build programs for an embeded  linux ARM device.
  10. 10. CPU options  arm7,  arm7tdmi, arm720t,   arm9', arm9e, arm920, arm920t  arm1136j­s, arm1176jz­s
  11. 11. Other configure options  ­­enable­interwork  This allows for  assembling Thumb and ARM code mixed  into the same binaries (for those chips that  support that)  ­­enable­multilib  Multilib allows the use of  libraries that are compiled multiple times  for different targets/build types.
  12. 12. EABI for Linux  GNU  EABI  is  a  new  Application  Binary  Interface  (ABI)  for  Linux  a.k.a  Embedded  ABI.  EABI specifies standard conventions for file  formats,  data  types,  register  usage,  stack  frame  organization,  and  function  parameter  passing  of  an  embedded  software program.
  13. 13. Why switch to EABI?  Compilers    that  support  the  EABI  create  object  code  that  is  compatible  with  code  generated  by  other  such  compilers,  thus  you can link libraries generated with with  object  code  generated  with  a  different  compiler.
  14. 14.  Allows use of optimized hardfloat  functions with the system's softfloat  libraries  Uses a more efficient syscall convention,  hence faster performance.  Since it's a newly adopted standard, will be  more compatible with future tools.
  15. 15. Setting up build envoirnment.  Preferably use virtual box / Vmware.  Create a new user for the installation.  Set  up  the  configure  parameters  in  the  .profile  Create separate dir for build and source.  Set PREFIX dir
  16. 16. Compilation process  Binutils   glibc  gcc  gdb
  17. 17. Bootstrapping gcc  Install all the dependencies.   The list of dependencies is on gcc.org  Mandatory  dependencies  are  GMP  and  MPFR.  The configure option ­­with­newlib tells gcc  we  are  using  newlib  (see  below)  and  ­­without­headers tells GCC not to rely on  any  C  library  (standard  or  runtime)  being  present for the target.
  18. 18. Installing glibc  Before doing any configuring or compiling,  you  must  set  the  C  compiler  that  you’re  using to be your cross­compiler, otherwise  glibc will compile as a horrible mix of ARM  code and native code  Make all­gcc.  Make install­gcc
  19. 19. Installing gcc: Part II  Make   Make install  Add compiler to path variable
  20. 20. Get more info on   http://wiki.openarmlab.org/   http://wiki.openarmlab.org/index.php? title=Building_your_own_toolchain
  21. 21. That's all Folks … Thank you
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×