Difference between revisions of "ARM Embedded Tutorial - Installing Lazarus and Free Pascal"

From Lazarus wiki
Jump to navigationJump to search
m (Fix typos; add markup; MacOSX -> macOS)
 
(15 intermediate revisions by 3 users not shown)
Line 1: Line 1:
The easiest way to install Embedded Support for a huge variety of embedded controllers is to use fpcupdeluxe and to then load a pre-compiled version of FPC and other tools.
+
{{ARM Embedded Tutorial - Installing Lazarus and Free Pascal}}
  
Download latest fpcupdeluxe from [https://github.com/LongDirtyAnimAlf/fpcupdeluxe/releases fpcupdeluxe releases on github].
+
== Quickstart Installation via FPCUPdeluxe ==
  
Select the current stable FPC version and trunk version of Lazarus. You will need trunk version of Lazarus for better support of debugging, when you do not plan to use IDE-based debugging the stable Lazarus is also OK. It is important that you select FPC stable.
+
The easiest way to install Embedded Support for a huge variety of embedded controllers is to use fpcupdeluxe.
  
The only exception is darwin-aarch64, for this platform no stable FPC exists, you have to use the trunk (development version) of FPC.
+
Download latest(!!!) FPCUPdeluxe from
  
Then select <tt>C:\fpcupdeluxe-embedded</tt> or <tt>$HOME/fpcupdeluxe-embedded</tt> as the installation target and hit the button to build both FPC and Lazarus.
+
[https://github.com/LongDirtyAnimAlf/fpcupdeluxe/releases fpcupdeluxe releases on github].
  
For now, do not install anything else, especially do not install the embedded support as this part is currently limited to support for armv6m targets.
+
Make sure that you use a version >= v1.8.2r of FPCUPdeluxe, the tutorial references features that are only in this and newer versions.
  
More information on fpcupdeluxe can be found here: [[fpcupdeluxe|FpcUpDeluxe Wiki]].
+
As we are using trunk versions we highly recommend to create an extra installation for embedded targets so that issues in compiler/lazarus do not effect your other work.
  
== Download Compiler and Debugger Pack for you fpcupdeluxe installation ==
+
== Steps for people mainly interested in Wio Terminal or Raspberry Pico ==
  
=== Windows ===
+
When your primary targts of interest are the Wio Terminal or the Raspberry Pico, then installation consists of entering an installation directory for fpcupdeluxe on top left and then selecting the speedbutton for 'Wio' or 'Pico' on the bottom of the screen:
  
[http://temp.michael-ring.org/binutils-gdb-arm-embedded-win64.zip Binutils for arm-embedded (x86_64)]
+
[[File:SelectEmbeddedandTrunk.png|800px]]
  
[http://temp.michael-ring.org/fpc-arm-embedded-3.3.1-win64-20210129.zip FPC Pack for arm-embedded (x86_64)]
+
== Steps for people interested in other targets like arm avr or espressif microcontrollers ==
  
=== macOS ===
+
For all other targets select embedded (or trunk.git) for fpc and trunk.git for lazarus.
  
[http://temp.michael-ring.org/binutils-gdb-arm-embedded-darwin-x86_64.zip Binutils for arm-embedded (x86_64)]
+
The reason to choose embedded would be to have support for more arm-embedded controllers that are currently not yet available in fpc trunk and installing trunk.git instead of stable lazarus is a good idea because debugging for embedded targets is much improved in lazarus trunk.
  
[http://temp.michael-ring.org/fpc-arm-embedded-3.3.1-darwin-x86_64-20210129.zip FPC Pack for arm-embedded (x86_64)]
+
For all platforms besides arm trunk.git is likely the best choice for both fpc and lazarus.  
  
[http://temp.michael-ring.org/binutils-gdb-arm-embedded-darwin-aarch64.zip Binutils for arm-embedded (aarch64)]
+
To build your embedded version of Lazarus follow those simple steps:
  
[http://temp.michael-ring.org/fpc-arm-embedded-3.3.1-darwin-aarch64-20210129.zip FPC Pack for arm-embedded (aarch64)]
+
* Select the target directory for your installation
 +
* Select embedded or trunk.git for fpc
 +
* Select trunk.git for lazarus
  
=== Linux ===
+
Hit the Install/update FPC+Laz button.
  
Todo
 
  
Unzip the downloaded files inside of the fpcupdeluxe-embedded directory.
+
[[File:SelectEmbeddedandTrunk.png|800px]]
  
== Minor Fixes in the installation ==
+
After installation of FPC+Lazarus is done switch to the 'Cross' Tab
  
The FPC pack provides support for several architectures (armv6m, armv7m and armv7em) in one package. To make this work properly the <tt>fpc.cfg</tt> file located inside of your installation needs a small change to be able to find the proper libraries for building.
+
In the Cross tab select the desired CPU and the desired OS und then click on the 'Set subarch' button to define the subarch that you would like to use:
  
=== Windows ===
 
  
Open the <tt>fpc.cfg</tt> file located in <tt>C:\fpcupdeluxe-embedded\fpc\bin\x86_64-win64\</tt> with your favorite editor and search for these lines:
+
[[File:fpcupdeluxe manual install 1.png|800px]]
  
    # searchpath for units and other system dependent things
+
Now you can select 'Install compiler' button and the selected subarch will be installed.....
    -FuC:\fpcupdeluxe-embedded\fpc\units\$fpctarget
 
    -FuC:\fpcupdeluxe-embedded\fpc\units\$fpctarget\*
 
    -FuC:\fpcupdeluxe-embedded\fpc\units\$fpctarget\rtl
 
  
and add this line:
+
You may repeat this step for all CPU's subarchs you wish to install.
  
    -FuC:\fpcupdeluxe-embedded\fpc\units\$fpctarget\$fpcsubarch\rtl
+
Some hints on Subarchs:
  
The last thing to do is to double check that all went well....
+
* armv6m Subarch is good for Raspberry Pico, SAMD21 based board like the Arduino Zero or STM32F0/G0/L0 families
  
Take the Path
+
* armv7m is for the Bluepill, Arduino Due or STM32F1/L1
 
    C:\fpcupdeluxe-embedded\fpc\units\$fpctarget\$fpcsubarch\rtl
 
  
and replace <tt>$fpctarget</tt> with <tt>arm-embedded</tt> and <tt>$fpcsubarch</tt> with <tt>armv7m</tt> which will give you:
+
* armv7em is for the Wio Terminal, Blackpill or SAMD51 / STM32F3/F4/G4/H7/L4 families
  
    C:\fpcupdeluxe-embedded\fpc\units\arm-embedded\armv7m\rtl
+
* avr5 is for Arduino Uno
  
Check that this directory exists and that it contains <tt>system.ppu</tt>. Then change to the Directory
+
* lx6 is for ESP32 based boards
  
    C:\fpcupdeluxe-embedded\fpc\bin\x86_64-win64\
 
  
and check that the file <tt>arm-embedded-as.exe</tt> exists.
+
== Install extra devel tools ==
  
When all checks are done, you should be ready to compile your first program.
+
There is an extra module available to ease development by providing pre-compiled binaries for some usefull tools:
  
=== macOS ===
+
For avr development:
  
Open the <tt>fpc.cfg</tt> file located here:
+
* avarice (gdbserver for several debug probes manufactured by Microchip)
  
    $HOME/fpcupdeluxe-embedded/fpc/bin/x86_64-darwin/fpc.cfg
+
* bossac  (upload firmwares to avr controllers)
  
with your favorite editor and search for these lines:
+
for arm development:
  
    -Fu/Users/XXXXX/fpcupdeluxe-embedded/fpc/units/$fpctarget
+
* openocd  (gdbserver for all kinds of debug probes)
    -Fu/Users/XXXXX/fpcupdeluxe-embedded/fpc/units/$fpctarget/*
 
    -Fu/Users/XXXXX/fpcupdeluxe-embedded/fpc/units/$fpctarget/rtl
 
  
and add this line:
+
* st-util  (gdbserver specially for st-link v2/v3 debug probes)
  
    -Fu/Users/XXXXX/fpcupdeluxe-embedded/fpc/units/$fpctarget/$fpcsubarch/rtl`
+
for the Raspberry Pico:
  
''Please note that you have to substitute the actual path of your $HOME for the '/Users/XXXXX' part of the path above.''
+
* openocd-picodebug (gdbserver for running a debug probe on the 2nd cpu of your pico)
  
The last thing to do is to double check that all went well...
+
* openocd-rp2040    (gdbserver for using a 2nd pico as a debug probe)
  
Take the Path
+
general:
  
    $HOME/fpcupdeluxe-embedded/fpc/units/$fpctarget/$fpcsubarch/rtl
+
* gdb-multiarch        (one gdb to debug all embedded archs available)
  
and replace <tt>$fpctarget</tt> with <tt>arm-embedded</tt> and <tt>$fpcsubarch</tt> with <tt>armv7m</tt>
+
* gdb-multiarch-8.3.1  (an older version of gdb that works better for avr)
  
which will give you:
+
Install it by selection develtools4fpc on the Modules tab of fpcupdeluxe by selection develtools4fpc and clicking 'Install Module':
  
    $HOME/fpcupdeluxe-embedded/fpc/units/arm-embedded/armv7m/rtl
+
[[File:modules devtools4fpc.png|800px]]
  
Check that this directory exists and that it contains <tt>system.ppu</tt>:
+
the files will then get deployed to the ccr/devtools4fpc directory inside of your fpcupdeluxe installation
  
    ls -l $HOME/fpcupdeluxe-embedded/fpc/units/arm-embedded/armv7m/rtl/system.ppu
 
  
Then change to the directory <tt>$HOME/fpcupdeluxe-embedded/fpc/bin/x86_64-darwin</tt> and check that the file <tt>arm-embedded-as</tt> exists:
 
  
    ls -l $HOME/fpcupdeluxe-embedded/fpc/bin/x86_64-darwin/arm-embedded-as
 
  
When all checks are done, you should be ready to compile your first program.
 
  
=== Linux ===
+
More information on fpcupdeluxe can be found here: [[fpcupdeluxe|FpcUpDeluxe Wiki]].
 
 
ToDo
 

Latest revision as of 15:55, 15 April 2021

English (en)

Quickstart Installation via FPCUPdeluxe

The easiest way to install Embedded Support for a huge variety of embedded controllers is to use fpcupdeluxe.

Download latest(!!!) FPCUPdeluxe from

fpcupdeluxe releases on github.

Make sure that you use a version >= v1.8.2r of FPCUPdeluxe, the tutorial references features that are only in this and newer versions.

As we are using trunk versions we highly recommend to create an extra installation for embedded targets so that issues in compiler/lazarus do not effect your other work.

Steps for people mainly interested in Wio Terminal or Raspberry Pico

When your primary targts of interest are the Wio Terminal or the Raspberry Pico, then installation consists of entering an installation directory for fpcupdeluxe on top left and then selecting the speedbutton for 'Wio' or 'Pico' on the bottom of the screen:

SelectEmbeddedandTrunk.png

Steps for people interested in other targets like arm avr or espressif microcontrollers

For all other targets select embedded (or trunk.git) for fpc and trunk.git for lazarus.

The reason to choose embedded would be to have support for more arm-embedded controllers that are currently not yet available in fpc trunk and installing trunk.git instead of stable lazarus is a good idea because debugging for embedded targets is much improved in lazarus trunk.

For all platforms besides arm trunk.git is likely the best choice for both fpc and lazarus.

To build your embedded version of Lazarus follow those simple steps:

  • Select the target directory for your installation
  • Select embedded or trunk.git for fpc
  • Select trunk.git for lazarus

Hit the Install/update FPC+Laz button.


SelectEmbeddedandTrunk.png

After installation of FPC+Lazarus is done switch to the 'Cross' Tab

In the Cross tab select the desired CPU and the desired OS und then click on the 'Set subarch' button to define the subarch that you would like to use:


fpcupdeluxe manual install 1.png

Now you can select 'Install compiler' button and the selected subarch will be installed.....

You may repeat this step for all CPU's subarchs you wish to install.

Some hints on Subarchs:

  • armv6m Subarch is good for Raspberry Pico, SAMD21 based board like the Arduino Zero or STM32F0/G0/L0 families
  • armv7m is for the Bluepill, Arduino Due or STM32F1/L1
  • armv7em is for the Wio Terminal, Blackpill or SAMD51 / STM32F3/F4/G4/H7/L4 families
  • avr5 is for Arduino Uno
  • lx6 is for ESP32 based boards


Install extra devel tools

There is an extra module available to ease development by providing pre-compiled binaries for some usefull tools:

For avr development:

  • avarice (gdbserver for several debug probes manufactured by Microchip)
  • bossac (upload firmwares to avr controllers)

for arm development:

  • openocd (gdbserver for all kinds of debug probes)
  • st-util (gdbserver specially for st-link v2/v3 debug probes)

for the Raspberry Pico:

  • openocd-picodebug (gdbserver for running a debug probe on the 2nd cpu of your pico)
  • openocd-rp2040 (gdbserver for using a 2nd pico as a debug probe)

general:

  • gdb-multiarch (one gdb to debug all embedded archs available)
  • gdb-multiarch-8.3.1 (an older version of gdb that works better for avr)

Install it by selection develtools4fpc on the Modules tab of fpcupdeluxe by selection develtools4fpc and clicking 'Install Module':

modules devtools4fpc.png

the files will then get deployed to the ccr/devtools4fpc directory inside of your fpcupdeluxe installation



More information on fpcupdeluxe can be found here: FpcUpDeluxe Wiki.