[esp] Add ESP-IDF cmake example.
This commit is contained in:
4
esp/cpp/04_esp-idf-arduino/.gitignore
vendored
Normal file
4
esp/cpp/04_esp-idf-arduino/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
build
|
||||
managed_components
|
||||
dependencies.lock
|
||||
sdkconfig.old
|
||||
18
esp/cpp/04_esp-idf-arduino/CMakeLists.txt
Normal file
18
esp/cpp/04_esp-idf-arduino/CMakeLists.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
# For more information about build system see
|
||||
# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html
|
||||
# The following five lines of boilerplate have to be in your project's
|
||||
# CMakeLists in this exact order for cmake to work correctly
|
||||
cmake_minimum_required(VERSION 3.26)
|
||||
|
||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||
|
||||
project(
|
||||
#[[NAME]] esp-idf-arduino
|
||||
VERSION 0.1
|
||||
DESCRIPTION "Example ESP-IDF cmake project"
|
||||
LANGUAGES CXX
|
||||
)
|
||||
|
||||
# For writing pure cmake components, see the documentation
|
||||
# https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/build-system.html#writing-pure-cmake-components
|
||||
idf_build_set_property(COMPILE_OPTIONS "-Wno-error" APPEND)
|
||||
81
esp/cpp/04_esp-idf-arduino/README.md
Normal file
81
esp/cpp/04_esp-idf-arduino/README.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# 04_esp-idf-arduino
|
||||
|
||||
There is no schematic for this example, it simply prints some output to the serial monitor at 115200.
|
||||
This is more of a build system example for untethering yourself from the Arduino IDE.
|
||||
|
||||
To build this example you can run the following commands.
|
||||
|
||||
```bash
|
||||
# See Dependencies section below for instructions.
|
||||
source ~/path/to/esp-idf/export.sh
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
make -j $(nproc)
|
||||
|
||||
# Flash the example to the ESP.
|
||||
make flash
|
||||
|
||||
# Check the serial monitor for 'Hello world!' output.
|
||||
idf.py monitor -b 115200
|
||||
```
|
||||
|
||||
To flash to your ESP or access the `idf.py menuconfig` menu from the ESP-IDF you can run the same commands with `make`.
|
||||
|
||||
```bash
|
||||
make flash
|
||||
make menuconfig
|
||||
```
|
||||
|
||||
If Ninja is preferred:
|
||||
|
||||
```bash
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -G Nina
|
||||
ninja
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
|
||||
Install the [ESP-IDF](https://github.com/espressif/esp-idf?tab=readme-ov-file#setup-build-environment)
|
||||
|
||||
```bash
|
||||
# https://docs.espressif.com/projects/esp-idf/en/v5.3.2/esp32/get-started/linux-macos-setup.html#for-linux-users
|
||||
sudo apt-get install -y git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
|
||||
|
||||
git clone -b v5.3.2 --recursive https://github.com/espressif/esp-idf
|
||||
cd esp-idf
|
||||
./install.sh
|
||||
. ./export.sh
|
||||
```
|
||||
|
||||
In CLion there is an official [Serial Monitor](https://plugins.jetbrains.com/plugin/8031-serial-port-monitor) plugin, or use ESP-IDF -
|
||||
|
||||
```bash
|
||||
idf.py monitor -b 115200
|
||||
```
|
||||
|
||||
## Starting Over
|
||||
|
||||
To set up this project from scratch the following commands were used
|
||||
|
||||
```bash
|
||||
# My example project directory
|
||||
cd ~/Code/klips/esp/cpp/04_esp-idf-arduino
|
||||
idf.py set-target esp32
|
||||
idf.py add-dependency "espressif/arduino-esp32^3.1.1"
|
||||
|
||||
# Autostart Arduino for use of `loop()` and `setup()` functions
|
||||
# You can also use the esp-idf `app_main()` function if preferred
|
||||
# https://docs.espressif.com/projects/arduino-esp32/en/latest/esp-idf_component.html#configuration
|
||||
# You can alternatively do this in the GUI tool `idf.py menuconfig`
|
||||
echo "CONFIG_AUTOSTART_ARDUINO=y" >> sdkconfig
|
||||
sed -i -e 's/CONFIG_FREERTOS_HZ=100/CONFIG_FREERTOS_HZ=1000/' sdkconfig
|
||||
|
||||
# Build the project
|
||||
idf.py build
|
||||
```
|
||||
|
||||
To set this project up in CLion, see [JetBrains documentation](https://www.jetbrains.com/help/clion/esp-idf.html#env-vars).
|
||||
4
esp/cpp/04_esp-idf-arduino/main/CMakeLists.txt
Normal file
4
esp/cpp/04_esp-idf-arduino/main/CMakeLists.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
idf_component_register(
|
||||
SRCS "main.cpp"
|
||||
INCLUDE_DIRS "."
|
||||
)
|
||||
17
esp/cpp/04_esp-idf-arduino/main/idf_component.yml
Normal file
17
esp/cpp/04_esp-idf-arduino/main/idf_component.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
## IDF Component Manager Manifest File
|
||||
dependencies:
|
||||
## Required IDF version
|
||||
idf:
|
||||
version: '>=4.1.0'
|
||||
# # Put list of dependencies here
|
||||
# # For components maintained by Espressif:
|
||||
# component: "~1.0.0"
|
||||
# # For 3rd party components:
|
||||
# username/component: ">=1.0.0,<2.0.0"
|
||||
# username2/component2:
|
||||
# version: "~1.0.0"
|
||||
# # For transient dependencies `public` flag can be set.
|
||||
# # `public` flag doesn't have an effect dependencies of the `main` component.
|
||||
# # All dependencies of `main` are public by default.
|
||||
# public: true
|
||||
espressif/arduino-esp32: ^3.1.1
|
||||
10
esp/cpp/04_esp-idf-arduino/main/main.cpp
Normal file
10
esp/cpp/04_esp-idf-arduino/main/main.cpp
Normal file
@@ -0,0 +1,10 @@
|
||||
#include "Arduino.h"
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
Serial.println("Hello world!");
|
||||
delay(1000);
|
||||
}
|
||||
2405
esp/cpp/04_esp-idf-arduino/sdkconfig
Normal file
2405
esp/cpp/04_esp-idf-arduino/sdkconfig
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user