Difference between revisions of "AVR"

From Free Pascal wiki
Jump to navigationJump to search
(→‎Resources: Replaced link to Atmel site as the old one now redirects to Atmel's landing page)
(→‎Building Cross compiler: Retrieving bintutils and make options)
Line 12: Line 12:
 
* You should use the latest Free Pascal sources as there is the most recent support for more controllers.
 
* You should use the latest Free Pascal sources as there is the most recent support for more controllers.
 
* Binutils for avr target
 
* Binutils for avr target
 +
** Atmel provides bintuils binaries for Linux, Mac OS X and Windows. Please visit http://distribute.atmel.no/tools/opensource/Atmel-AVR-GNU-Toolchain/3.5.0/ (registration required) and follow the appropriate link for your operating system.
 +
** On Linux host, you may either install bintuils for avr target from your distribution or use also the binaries provided by Atmel.
 +
** You may also use the bintuils distributed with the Arduino IDE; on Windows they are installed to e.g. C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\bin
 +
** Keep in mind, the Free Pacal Compiler will search for e.g. avr-embedded-as. So you must either rename the binary files, create symlinks (on Linux only) or adjust command line switch -XP<prefix> for FPC.
 +
** You may need to set FPC's command line switch -FD<directory with binutils>
 
* Latest ''stable'' Free Pascal Compiler
 
* Latest ''stable'' Free Pascal Compiler
  
Line 18: Line 23:
 
<code lang="shell">
 
<code lang="shell">
 
make buildbase installbase CPU_TARGET=avr OS_TARGET=embedded SUBARCH=avr5 CROSSINSTALL=1 INSTALL_PREFIX=~/fpc NOGDB=1 PP=/usr/bin/fpc CROSSBINDIR=/usr/avr/bin
 
make buildbase installbase CPU_TARGET=avr OS_TARGET=embedded SUBARCH=avr5 CROSSINSTALL=1 INSTALL_PREFIX=~/fpc NOGDB=1 PP=/usr/bin/fpc CROSSBINDIR=/usr/avr/bin
 +
</code>
 +
 +
You may also set the bintuils prefix for this (equivialent to -XP switch)
 +
 +
<code lang="shell">
 +
make buildbase installbase CPU_TARGET=avr OS_TARGET=embedded SUBARCH=avr5 CROSSINSTALL=1 INSTALL_PREFIX=~/fpc NOGDB=1 PP=/usr/bin/fpc CROSSBINDIR=/usr/avr/bin  BINUTILSPREFIX=avr-
 
</code>
 
</code>
  

Revision as of 22:40, 11 November 2015

Arduino Logo.svg

This article applies to Arduino boards only.

See also: Multiplatform Programming Guide

General information

The FPC-AVR port is currently experimental and non working. It uses the GCC AVR tool chain and will be compatible with GCC regarding calling conventions etc.

Implementation details

FPC considers AVR being a 16 bit CPU. So the type tregister actually describes a register pair being the second register implicitly named.

Building Cross compiler

There are some requirements, you should know about

  • You should use the latest Free Pascal sources as there is the most recent support for more controllers.
  • Binutils for avr target
    • Atmel provides bintuils binaries for Linux, Mac OS X and Windows. Please visit http://distribute.atmel.no/tools/opensource/Atmel-AVR-GNU-Toolchain/3.5.0/ (registration required) and follow the appropriate link for your operating system.
    • On Linux host, you may either install bintuils for avr target from your distribution or use also the binaries provided by Atmel.
    • You may also use the bintuils distributed with the Arduino IDE; on Windows they are installed to e.g. C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\bin
    • Keep in mind, the Free Pacal Compiler will search for e.g. avr-embedded-as. So you must either rename the binary files, create symlinks (on Linux only) or adjust command line switch -XP<prefix> for FPC.
    • You may need to set FPC's command line switch -FD<directory with binutils>
  • Latest stable Free Pascal Compiler

Then you can build your cross compiler. Please choose SUBARCH according to your Arduino board / AVR microprocessor.

make buildbase installbase CPU_TARGET=avr OS_TARGET=embedded SUBARCH=avr5 CROSSINSTALL=1 INSTALL_PREFIX=~/fpc NOGDB=1 PP=/usr/bin/fpc CROSSBINDIR=/usr/avr/bin

You may also set the bintuils prefix for this (equivialent to -XP switch)

make buildbase installbase CPU_TARGET=avr OS_TARGET=embedded SUBARCH=avr5 CROSSINSTALL=1 INSTALL_PREFIX=~/fpc NOGDB=1 PP=/usr/bin/fpc CROSSBINDIR=/usr/avr/bin BINUTILSPREFIX=avr-

Subarchitecture

The operating system target embedded requires you to specify a aubarchicture when building a cross compiler. The subarchitectures are compatible to the ones used by gcc.

There is a list at: http://www.nongnu.org/avr-libc/user-manual/using_tools.html

Resources