Difference between revisions of "Xtensa"

From Free Pascal wiki
Jump to navigationJump to search
(Added more details on installation)
Line 5: Line 5:
 
== Preparations ==
 
== Preparations ==
 
----
 
----
So far Linux only
+
So far Linux and Mac only
 
----
 
----
Install esp-idf and execute
+
Install esp-idf based on the instructions given here:
  
 +
[https://docs.espressif.com/projects/esp-idf/en/stable/get-started/index.html Get Started (for Stable Release)]
 +
 +
Follow the instructions to a least step 8 where you build the hello_word demo project.
 +
 +
copy all the freshly compiled .a files from the current project directory to a directory of your choice:
 +
 +
  mkdir ~/esp/xtensa-esp32-elf-libs
 +
  find . -name "*.a" -exec cp {} ~/esp/xtensa-esp32-elf-libs \;
 +
 +
Now you are ready to compile fpc and rtl.
 +
 +
execute
 +
 +
export IDF_PATH=~/esp/esp-idf
 
  source ~/eps/esp-idf/export.sh
 
  source ~/eps/esp-idf/export.sh
  
to get the pathes and environment set (namely tools path and  $IDF_PATH are needed)
+
to get the path and environment set (namely tools path and  $IDF_PATH are needed)
 +
 
  
 
Change into the fpc directory and run
 
Change into the fpc directory and run
Line 21: Line 36:
 
Create a hello world program in the fpc dir and compile it with
 
Create a hello world program in the fpc dir and compile it with
  
   compiler/ppcrossxtensa -Furtl/units/xtensa-freertos/ -Tfreertos -Cawindowed -XPxtensa-esp32-elf- -O3 -Wpesp32 -Fl~/xtensa-esp32-elf-libs  -Fl$HOME/.espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/xtensa-esp32-elf/lib/ hello
+
   compiler/ppcrossxtensa -Furtl/units/xtensa-freertos/ -Tfreertos -Cawindowed -XPxtensa-esp32-elf- -O3 -Wpesp32 -Fl~/esp/xtensa-esp32-elf-libs  -Fl~/.espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/xtensa-esp32-elf/lib/ hello
  
 
Get partition-table.bin and bootloader.bin from the hello_world example compiled above and copy them into the same dir as the compiled  hello.bin
 
Get partition-table.bin and bootloader.bin from the hello_world example compiled above and copy them into the same dir as the compiled  hello.bin

Revision as of 09:27, 7 April 2020

Warning-icon.png

Warning: The ESP32 support is highly experimental and prone to be broken. This description is work in progress.

Building FPC

Preparations


So far Linux and Mac only


Install esp-idf based on the instructions given here:

Get Started (for Stable Release)

Follow the instructions to a least step 8 where you build the hello_word demo project.

copy all the freshly compiled .a files from the current project directory to a directory of your choice:

 mkdir ~/esp/xtensa-esp32-elf-libs
 find . -name "*.a" -exec cp {} ~/esp/xtensa-esp32-elf-libs \; 

Now you are ready to compile fpc and rtl.

execute

export IDF_PATH=~/esp/esp-idf
source ~/eps/esp-idf/export.sh

to get the path and environment set (namely tools path and $IDF_PATH are needed)


Change into the fpc directory and run

 make FPC=fpc CPU_TARGET=xtensa OS_TARGET=freertos "CROSSOPT=-Cplx6 -XPxtensa-esp32-elf- -Cfhard" all

to get ppcrossxtensa .

Create a hello world program in the fpc dir and compile it with

 compiler/ppcrossxtensa -Furtl/units/xtensa-freertos/ -Tfreertos -Cawindowed -XPxtensa-esp32-elf- -O3 -Wpesp32 -Fl~/esp/xtensa-esp32-elf-libs  -Fl~/.espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/xtensa-esp32-elf/lib/ hello

Get partition-table.bin and bootloader.bin from the hello_world example compiled above and copy them into the same dir as the compiled hello.bin

Flash with

 esptool.py -p /dev/ttyUSB0 -b 460800 --before default_reset --after hard_reset --chip esp32  write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x1000 bootloader.bin 0x8000 partition-table.bin 0x10000 hello.bin

Monitor the output with:

 idf_monitor.py  --port /dev/ttyUSB0 hello.elf