starting with ESP-IDF
- initial ESP-IDF project - starting custom component (Timber) Signed-off-by: Peter Siegmund <peter@rdkr.com>
This commit is contained in:
26
.github/workflows/esp-idf_build.yml
vendored
Normal file
26
.github/workflows/esp-idf_build.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
name: Build the ESP-IDF Project
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
matrix:
|
||||
idf_ver: [release-v5.0, release-v5.1, release-v5.2]
|
||||
idf_target: [esp32s3]
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: "recursive"
|
||||
- name: ESP-IDF build
|
||||
uses: espressif/esp-idf-ci-action@v1
|
||||
with:
|
||||
esp_idf_version: ${{ matrix.idf_ver }}
|
||||
target: ${{ matrix.idf_target }}
|
||||
path: ePaper-ESP-IDF
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
SECRETS.md
|
1
ePaper-ESP-IDF/.clang-format
Normal file
1
ePaper-ESP-IDF/.clang-format
Normal file
@@ -0,0 +1 @@
|
||||
BasedOnStyle: Chromium
|
16
ePaper-ESP-IDF/.gitignore
vendored
Normal file
16
ePaper-ESP-IDF/.gitignore
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
# esp-idf
|
||||
build/
|
||||
sdkconfig
|
||||
sdkconfig.old
|
||||
managed_components
|
||||
|
||||
# They ignored Idea (Webstorm) completely
|
||||
.idea/
|
||||
|
||||
# However, they kept the following 4 files version controlled
|
||||
.vscode/*
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
.history/*
|
||||
__pycache__
|
10
ePaper-ESP-IDF/.vscode/launch.json
vendored
Normal file
10
ePaper-ESP-IDF/.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "espidf",
|
||||
"name": "Launch",
|
||||
"request": "launch"
|
||||
}
|
||||
]
|
||||
}
|
259
ePaper-ESP-IDF/.vscode/tasks.json
vendored
Normal file
259
ePaper-ESP-IDF/.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,259 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Build - Build project",
|
||||
"type": "shell",
|
||||
"command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py build",
|
||||
"windows": {
|
||||
"command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py build",
|
||||
"options": {
|
||||
"env": {
|
||||
"PATH": "${env:PATH};${config:idf.customExtraPaths}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"env": {
|
||||
"PATH": "${env:PATH}:${config:idf.customExtraPaths}"
|
||||
}
|
||||
},
|
||||
"problemMatcher": [
|
||||
{
|
||||
"owner": "cpp",
|
||||
"fileLocation": [
|
||||
"autoDetect",
|
||||
"${workspaceFolder}"
|
||||
],
|
||||
"pattern": {
|
||||
"regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$",
|
||||
"file": 1,
|
||||
"line": 2,
|
||||
"column": 3,
|
||||
"severity": 4,
|
||||
"message": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Set ESP-IDF Target",
|
||||
"type": "shell",
|
||||
"command": "${command:espIdf.setTarget}",
|
||||
"problemMatcher": {
|
||||
"owner": "cpp",
|
||||
"fileLocation": [
|
||||
"autoDetect",
|
||||
"${workspaceFolder}"
|
||||
],
|
||||
"pattern": {
|
||||
"regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$",
|
||||
"file": 1,
|
||||
"line": 2,
|
||||
"column": 3,
|
||||
"severity": 4,
|
||||
"message": 5
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Clean - Clean the project",
|
||||
"type": "shell",
|
||||
"command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py fullclean",
|
||||
"windows": {
|
||||
"command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py fullclean",
|
||||
"options": {
|
||||
"env": {
|
||||
"PATH": "${env:PATH};${config:idf.customExtraPaths}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"env": {
|
||||
"PATH": "${env:PATH}:${config:idf.customExtraPaths}"
|
||||
}
|
||||
},
|
||||
"problemMatcher": [
|
||||
{
|
||||
"owner": "cpp",
|
||||
"fileLocation": [
|
||||
"autoDetect",
|
||||
"${workspaceFolder}"
|
||||
],
|
||||
"pattern": {
|
||||
"regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$",
|
||||
"file": 1,
|
||||
"line": 2,
|
||||
"column": 3,
|
||||
"severity": 4,
|
||||
"message": 5
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "Flash - Flash the device",
|
||||
"type": "shell",
|
||||
"command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py -p ${config:idf.port} -b ${config:idf.flashBaudRate} flash",
|
||||
"windows": {
|
||||
"command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py flash -p ${config:idf.portWin} -b ${config:idf.flashBaudRate}",
|
||||
"options": {
|
||||
"env": {
|
||||
"PATH": "${env:PATH};${config:idf.customExtraPaths}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"env": {
|
||||
"PATH": "${env:PATH}:${config:idf.customExtraPaths}"
|
||||
}
|
||||
},
|
||||
"problemMatcher": [
|
||||
{
|
||||
"owner": "cpp",
|
||||
"fileLocation": [
|
||||
"autoDetect",
|
||||
"${workspaceFolder}"
|
||||
],
|
||||
"pattern": {
|
||||
"regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$",
|
||||
"file": 1,
|
||||
"line": 2,
|
||||
"column": 3,
|
||||
"severity": 4,
|
||||
"message": 5
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "Monitor: Start the monitor",
|
||||
"type": "shell",
|
||||
"command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py -p ${config:idf.port} monitor",
|
||||
"windows": {
|
||||
"command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py -p ${config:idf.portWin} monitor",
|
||||
"options": {
|
||||
"env": {
|
||||
"PATH": "${env:PATH};${config:idf.customExtraPaths}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"env": {
|
||||
"PATH": "${env:PATH}:${config:idf.customExtraPaths}"
|
||||
}
|
||||
},
|
||||
"problemMatcher": [
|
||||
{
|
||||
"owner": "cpp",
|
||||
"fileLocation": [
|
||||
"autoDetect",
|
||||
"${workspaceFolder}"
|
||||
],
|
||||
"pattern": {
|
||||
"regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$",
|
||||
"file": 1,
|
||||
"line": 2,
|
||||
"column": 3,
|
||||
"severity": 4,
|
||||
"message": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"dependsOn": "Flash - Flash the device"
|
||||
},
|
||||
{
|
||||
"label": "OpenOCD: Start openOCD",
|
||||
"type": "shell",
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "never",
|
||||
"focus": false,
|
||||
"panel": "new"
|
||||
},
|
||||
"command": "openocd -s ${command:espIdf.getOpenOcdScriptValue} ${command:espIdf.getOpenOcdConfigs}",
|
||||
"windows": {
|
||||
"command": "openocd.exe -s ${command:espIdf.getOpenOcdScriptValue} ${command:espIdf.getOpenOcdConfigs}",
|
||||
"options": {
|
||||
"env": {
|
||||
"PATH": "${env:PATH};${config:idf.customExtraPaths}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"env": {
|
||||
"PATH": "${env:PATH}:${config:idf.customExtraPaths}"
|
||||
}
|
||||
},
|
||||
"problemMatcher": {
|
||||
"owner": "cpp",
|
||||
"fileLocation": [
|
||||
"autoDetect",
|
||||
"${workspaceFolder}"
|
||||
],
|
||||
"pattern": {
|
||||
"regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$",
|
||||
"file": 1,
|
||||
"line": 2,
|
||||
"column": 3,
|
||||
"severity": 4,
|
||||
"message": 5
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "adapter",
|
||||
"type": "shell",
|
||||
"command": "${config:idf.pythonBinPath}",
|
||||
"isBackground": true,
|
||||
"options": {
|
||||
"env": {
|
||||
"PATH": "${env:PATH}:${config:idf.customExtraPaths}",
|
||||
"PYTHONPATH": "${command:espIdf.getExtensionPath}/esp_debug_adapter/debug_adapter"
|
||||
}
|
||||
},
|
||||
"problemMatcher": {
|
||||
"background": {
|
||||
"beginsPattern": "\bDEBUG_ADAPTER_STARTED\b",
|
||||
"endsPattern": "DEBUG_ADAPTER_READY2CONNECT",
|
||||
"activeOnStart": true
|
||||
},
|
||||
"pattern": {
|
||||
"regexp": "(\\d+)-(\\d+)-(\\d+)\\s(\\d+):(\\d+):(\\d+),(\\d+)\\s-(.+)\\s(ERROR)",
|
||||
"file": 8,
|
||||
"line": 2,
|
||||
"column": 3,
|
||||
"severity": 4,
|
||||
"message": 9
|
||||
}
|
||||
},
|
||||
"args": [
|
||||
"${command:espIdf.getExtensionPath}/esp_debug_adapter/debug_adapter_main.py",
|
||||
"-e",
|
||||
"${workspaceFolder}/build/${command:espIdf.getProjectName}.elf",
|
||||
"-s",
|
||||
"$OPENOCD_SCRIPTS",
|
||||
"-dn",
|
||||
"esp32",
|
||||
"-om",
|
||||
"connect_to_instance",
|
||||
"-t",
|
||||
"xtensa-esp32-elf-"
|
||||
|
||||
],
|
||||
"windows": {
|
||||
"command": "${config:idf.pythonBinPathWin}",
|
||||
"options": {
|
||||
"env": {
|
||||
"PATH": "${env:PATH};${config:idf.customExtraPaths}",
|
||||
"PYTHONPATH": "${command:espIdf.getExtensionPath}/esp_debug_adapter/debug_adapter"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
8
ePaper-ESP-IDF/CMakeLists.txt
Normal file
8
ePaper-ESP-IDF/CMakeLists.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
# 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.16)
|
||||
|
||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||
project(TideDisplay)
|
2
ePaper-ESP-IDF/components/timber/CMakeLists.txt
Normal file
2
ePaper-ESP-IDF/components/timber/CMakeLists.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
idf_component_register(SRCS "timber.cpp" "tree.cpp" "tree_esp32.cpp"
|
||||
INCLUDE_DIRS "include")
|
15
ePaper-ESP-IDF/components/timber/include/timber.h
Normal file
15
ePaper-ESP-IDF/components/timber/include/timber.h
Normal file
@@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
#include <string>
|
||||
#include "tree.h"
|
||||
#include "tree_esp32.h"
|
||||
|
||||
class Timber {
|
||||
public:
|
||||
static void tag(char* tag);
|
||||
static void plant(Tree tree);
|
||||
static void d(char* message);
|
||||
static void i(char* message);
|
||||
static void w(char* message);
|
||||
static void e(char* message);
|
||||
static void v(char* message);
|
||||
};
|
6
ePaper-ESP-IDF/components/timber/include/tree.h
Normal file
6
ePaper-ESP-IDF/components/timber/include/tree.h
Normal file
@@ -0,0 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
class Tree {
|
||||
public:
|
||||
virtual ~Tree();
|
||||
};
|
7
ePaper-ESP-IDF/components/timber/include/tree_esp32.h
Normal file
7
ePaper-ESP-IDF/components/timber/include/tree_esp32.h
Normal file
@@ -0,0 +1,7 @@
|
||||
#pragma once
|
||||
#include "tree.h"
|
||||
|
||||
class TreeESP32 : public Tree {
|
||||
public:
|
||||
~TreeESP32();
|
||||
};
|
30
ePaper-ESP-IDF/components/timber/timber.cpp
Normal file
30
ePaper-ESP-IDF/components/timber/timber.cpp
Normal file
@@ -0,0 +1,30 @@
|
||||
#include "timber.h"
|
||||
#include <stdio.h>
|
||||
|
||||
void Timber::tag(char* tag) {
|
||||
printf("Tag: %s\n", tag);
|
||||
}
|
||||
|
||||
void Timber::plant(Tree tree) {
|
||||
printf("Planting tree\n");
|
||||
}
|
||||
|
||||
void Timber::d(char* message) {
|
||||
printf("Debug: %s\n", message);
|
||||
}
|
||||
|
||||
void Timber::i(char* message) {
|
||||
printf("Info: %s\n", message);
|
||||
}
|
||||
|
||||
void Timber::w(char* message) {
|
||||
printf("Warning: %s\n", message);
|
||||
}
|
||||
|
||||
void Timber::e(char* message) {
|
||||
printf("Error: %s\n", message);
|
||||
}
|
||||
|
||||
void Timber::v(char* message) {
|
||||
printf("Verbose: %s\n", message);
|
||||
}
|
6
ePaper-ESP-IDF/components/timber/tree.cpp
Normal file
6
ePaper-ESP-IDF/components/timber/tree.cpp
Normal file
@@ -0,0 +1,6 @@
|
||||
#include "tree.h"
|
||||
#include <stdio.h>
|
||||
|
||||
Tree::~Tree() {
|
||||
printf("Tree destructor\n");
|
||||
};
|
7
ePaper-ESP-IDF/components/timber/tree_esp32.cpp
Normal file
7
ePaper-ESP-IDF/components/timber/tree_esp32.cpp
Normal file
@@ -0,0 +1,7 @@
|
||||
#include "tree_esp32.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
TreeESP32::~TreeESP32() {
|
||||
printf("TreeESP32 destructor\n");
|
||||
};
|
15
ePaper-ESP-IDF/dependencies.lock
Normal file
15
ePaper-ESP-IDF/dependencies.lock
Normal file
@@ -0,0 +1,15 @@
|
||||
dependencies:
|
||||
idf:
|
||||
component_hash: null
|
||||
source:
|
||||
type: idf
|
||||
version: 5.2.1
|
||||
lvgl/lvgl:
|
||||
component_hash: d7c1ac037ae6e85d94897f807d6e7ba0946a83e720074fc95a4f6241da9f9f53
|
||||
source:
|
||||
service_url: https://api.components.espressif.com/
|
||||
type: service
|
||||
version: 8.4.0
|
||||
manifest_hash: bab870b38425e93ab4bb13b0cc217e242c20a60d075924a73d9521dba226ee4f
|
||||
target: esp32s3
|
||||
version: 1.0.0
|
3
ePaper-ESP-IDF/main/CMakeLists.txt
Normal file
3
ePaper-ESP-IDF/main/CMakeLists.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
idf_component_register(SRCS "main.cpp"
|
||||
INCLUDE_DIRS "."
|
||||
PRIV_REQUIRES timber)
|
7
ePaper-ESP-IDF/main/Kconfig
Normal file
7
ePaper-ESP-IDF/main/Kconfig
Normal file
@@ -0,0 +1,7 @@
|
||||
menu "Tide Display"
|
||||
config USE_TOUCH
|
||||
bool "use touch screen for navigation"
|
||||
default y
|
||||
help
|
||||
Enable touch screen support for navigation.
|
||||
endmenu
|
17
ePaper-ESP-IDF/main/idf_component.yml
Normal file
17
ePaper-ESP-IDF/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
|
||||
lvgl/lvgl: "^8.4.0"
|
7
ePaper-ESP-IDF/main/main.cpp
Normal file
7
ePaper-ESP-IDF/main/main.cpp
Normal file
@@ -0,0 +1,7 @@
|
||||
#include <stdio.h>
|
||||
#include "timber.h"
|
||||
|
||||
extern "C" void app_main(void) {
|
||||
Timber::plant(TreeESP32());
|
||||
Timber::tag("ESP32Timber");
|
||||
}
|
7
ePaper-ESP-IDF/partitions.csv
Normal file
7
ePaper-ESP-IDF/partitions.csv
Normal file
@@ -0,0 +1,7 @@
|
||||
# Name, Type, SubType, Offset, Size, Flags
|
||||
nvs, data, nvs, 0x9000, 0x5000,
|
||||
otadata, data, ota, 0xe000, 0x2000,
|
||||
app0, app, ota_0, 0x10000, 0x640000,
|
||||
app1, app, ota_1, 0x650000,0x640000,
|
||||
spiffs, data, spiffs, 0xc90000,0x360000,
|
||||
coredump, data, coredump,0xFF0000,0x10000,
|
|
16
ePaper-ESP-IDF/sdkconfig.defaults
Normal file
16
ePaper-ESP-IDF/sdkconfig.defaults
Normal file
@@ -0,0 +1,16 @@
|
||||
# Logging
|
||||
CONFIG_LOG_DEFAULT_LEVEL_DEBUG=y
|
||||
CONFIG_LOG_DEFAULT_LEVEL=4
|
||||
CONFIG_LOG_MAXIMUM_LEVEL=4
|
||||
|
||||
# Flash Size
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE="16MB"
|
||||
|
||||
# PSRAM
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_SPIRAM_MODE_OCT=y
|
||||
|
||||
# Partition
|
||||
CONFIG_PARTITION_TABLE_CUSTOM=y
|
||||
CONFIG_PARTITION_TABLE_FILENAME="partitions.csv"
|
1
ePaper-ESP-IDF/sdkconfig.defaults.esp32s3
Normal file
1
ePaper-ESP-IDF/sdkconfig.defaults.esp32s3
Normal file
@@ -0,0 +1 @@
|
||||
CONFIG_IDF_TARGET="esp32s3"
|
1
ePaper-ESP-IDF/version.txt
Normal file
1
ePaper-ESP-IDF/version.txt
Normal file
@@ -0,0 +1 @@
|
||||
0.0.1
|
Reference in New Issue
Block a user