Giter VIP home page Giter VIP logo

esp31_rtos_sdk's Introduction

ESP32_RTOS_SDK

ESP32 SDK based on FreeRTOS.

Toolchain

We suggest to choose Crosstool-ng as the compiler toolchain. Follow the instructions below to install Crosstool-ng.

Step 1. Install the required toolchain packages.

sudo apt-get install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-i386 python-serial libexpat-dev

Step 2. Create a directory (e.g./opt/Espressif) to store the toolchain.

sudo mkdir /opt/Espressif

Step 3. Make the current user the owner.

sudo chown $USER /opt/Espressif/

Step 4. Download the latest toolchain installation file to the directory created in Step 2.

cd /opt/Espressif/
git clone -b esp108-1.21.0 git://github.com/jcmvbkbc/crosstool-NG.git

Step 5. Install toolchain.

cd crosstool-NG
./bootstrap && ./configure --prefix=`pwd` && make && make install 
./ct-ng xtensa-esp108-elf 
./ct-ng build

Step 6. Set the PATH variable to point to the newly compiled toolchain.

export PATH=/opt/Espressif/crosstool-NG/builds/xtensa-esp108-elf/bin:$PATH

Notice: You need to do Step 6 once you open a new shell, or you can put it inside your .bashrc file

Project template Compile

Step 1. Create a directory (e.g.~/Workspace) to store a new project.

mkdir ~/Workspace

Step 2. Clone ESP32 RTOS SDK.

cd ~/Workspace
git clone https://github.com/espressif/ESP32_RTOS_SDK.git

Step 3. Copy ESP32_RTOS_SDK/examples/project_template to Workspace directory created in Step 1.

cp ~/Workspace/ESP32_RTOS_SDK/examples/project_template ~/Workspace/ -r

Step 4. Create a directory (e.g.~/Workspace/ESP32_BIN) to store the bin files compiled.

mkdir –p ~/Workspace/ESP32_BIN

Step 5. Set SDK_PATH as the path of SDK files and BIN_PATH as the path of .bin files compiled.

export SDK_PATH=~/Workspace/ESP32_RTOS_SDK 
export BIN_PATH=~/Workspace/ESP32_BIN

Notice: Make sure you set the correct paths, or it will occur a compile error. export BIN_PATH is optional, default BIN_PATH is ./bin.

Step 6. Start to compile files

cd ~/Workspace/project_template
make clean
make

Notice: You need to do Step 5 every time you open a new shell, or you can put it inside your .bashrc file.

If your project is successfully compiled, the drom0.bin, irom0_flash.bin, and user.ota files will be generated in BIN_PATH directory.

Makefile Options

esp.conf in project_template includes makefile supported options, you can modify according to your needs.

1. esptool parameters

  • serial port, depend on your platform, default /dev/ttyUSB0

     ESP_PORT = /dev/ttyUSB0
    
  • serial baudrate, default 230400

     ESP_BAUD = 230400
    
  • spi flash size: 1MB/2MB/4MB/8MB/16MB, default 1MB

     ESP_FS = 1MB
    
  • spi flash freq: 40m/26m/20m/80m, default 40m

     ESP_FF = 40m
    
  • spi flash mode: qio/qout/dio/dout, default qio

     ESP_FM = qio
    

2. compile & link parameters

  • ld folder location choose: 0/1, default 0

    • 0: use ld folder at sdk.
    • 1: use local ld folder at your project.

    Notice: you can copy ld folder from sdk to your project, then do some modifications.

     ESP_LOCAL_LD = 1
    
  • ld file name

    Notice: if ESP_LOCAL_LD is set to 1, ESP_LD_NAME MUST be set.

     ESP_LD_FILE = pro.map.ld
    
  • ram map mode, default 1.1

    • 1.1: not use app cpu's iram, use drom0(dcache) to store rodata.
    • 1.2: not use app cpu's iram, not use drom0(dcache).
    • 2.1: use all app cpu's iram as pro cpu's dram, use drom0(dcache) to store rodata.
    • 2.2: use all app cpu's iram as pro cpu's dram, not use drom0(dcache).
    • 3.1: reverse 16K for app cpu, other as pro cpu's dram, use drom0(dcache) to store rodata.
    • 3.2: reverse 16K for app cpu, other as pro cpu's dram, not use drom0(dcache).

    Notice: if ESP_LOCAL_LD is set to 0, ESP_MAP_MODE CAN be set.

     ESP_MAP_MODE = 1.1
    

Download

1. Use Espressif's 'Flash Download tools'

Download addresses:

  • For map 1.1/2.1/3.1

     boot.bin---------->0x00000
     drom0.bin--------->0x04000
     irom0_flash.bin--->0x40000
     blank.bin--------->0xfe000(for 1MB SPI Flash)
    
  • For map 1.2/2.2/3.2

     boot.bin---------->0x00000
     irom0_flash.bin--->0x04000
     blank.bin--------->0xfe000(for 1MB SPI Flash)
    

2. Use esptool.py

Prepare: modify esptool options in esp.conf.

makefile supports targets:

  • flash_all : upload boot.bin/app.bin/blank.bin

     make flash_all
    
  • flash_boot : upload boot.bin

     make flash_boot
    

    Notice: only needed when boot.bin update

  • flash_app : update user application (drom0.bin/irom0_flash.bin)

     make flash_app
    
  • flash_blank : update blank.bin to system parameter address

     make flash_blank
    

    Notice: only needed when the system parameters needed to be restored

For more details, please refer to http://www.esp32.com

esp31_rtos_sdk's People

Contributors

wujiangang avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.