From b1f56880c126460605b18dec6253cc91d6224f0f Mon Sep 17 00:00:00 2001 From: Jonas Arnold Date: Thu, 27 Oct 2022 15:47:42 +0200 Subject: [PATCH] added ESP32 project for eclipse, added config files for openocd --- ADIS_ESP32_Eclipse/CMakeLists.txt | 6 +++ ADIS_ESP32_Eclipse/FT2232HL.cfg | 52 ++++++++++++++++++++++ ADIS_ESP32_Eclipse/Makefile | 8 ++++ ADIS_ESP32_Eclipse/README.md | 52 ++++++++++++++++++++++ ADIS_ESP32_Eclipse/esp-adis.cfg | 3 ++ ADIS_ESP32_Eclipse/example_test.py | 20 +++++++++ ADIS_ESP32_Eclipse/main/CMakeLists.txt | 2 + ADIS_ESP32_Eclipse/main/component.mk | 4 ++ ADIS_ESP32_Eclipse/main/hello_world_main.c | 44 ++++++++++++++++++ ADIS_ESP32_Eclipse/sdkconfig.ci | 0 ADIS_IDF_hello_world/FT2232HL.cfg | 52 ++++++++++++++++++++++ ADIS_IDF_hello_world/esp-adis.cfg | 3 ++ 12 files changed, 246 insertions(+) create mode 100644 ADIS_ESP32_Eclipse/CMakeLists.txt create mode 100644 ADIS_ESP32_Eclipse/FT2232HL.cfg create mode 100644 ADIS_ESP32_Eclipse/Makefile create mode 100644 ADIS_ESP32_Eclipse/README.md create mode 100644 ADIS_ESP32_Eclipse/esp-adis.cfg create mode 100644 ADIS_ESP32_Eclipse/example_test.py create mode 100644 ADIS_ESP32_Eclipse/main/CMakeLists.txt create mode 100644 ADIS_ESP32_Eclipse/main/component.mk create mode 100644 ADIS_ESP32_Eclipse/main/hello_world_main.c create mode 100644 ADIS_ESP32_Eclipse/sdkconfig.ci create mode 100644 ADIS_IDF_hello_world/FT2232HL.cfg create mode 100644 ADIS_IDF_hello_world/esp-adis.cfg diff --git a/ADIS_ESP32_Eclipse/CMakeLists.txt b/ADIS_ESP32_Eclipse/CMakeLists.txt new file mode 100644 index 0000000..bcc12fe --- /dev/null +++ b/ADIS_ESP32_Eclipse/CMakeLists.txt @@ -0,0 +1,6 @@ +# The following 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.5) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(esp32-adis) diff --git a/ADIS_ESP32_Eclipse/FT2232HL.cfg b/ADIS_ESP32_Eclipse/FT2232HL.cfg new file mode 100644 index 0000000..ea87175 --- /dev/null +++ b/ADIS_ESP32_Eclipse/FT2232HL.cfg @@ -0,0 +1,52 @@ +# +# OpenOCD configuration file for the FTDI FT2232HL +# evaluation board used as JTAG adapter +# Please modify this file to your local setup. +# + +# Include the configuration for the JTAG adapter. +# If you have a different interface, please edit this to include the +# configuration file of yours. +#source [find interface/ftdi/mbftdi.cfg] +adapter driver ftdi +ftdi vid_pid 0x0403 0x6010 +ftdi channel 0 +ftdi layout_init 0x0038 0x003b + +# The ESP32 only supports JTAG. +#transport select jtag + +# The speed of the JTAG interface, in KHz. If you get DSR/DIR errors (and they +# do not relate to OpenOCD trying to read from a memory range without physical +# memory being present there), you can try lowering this. +adapter speed 8000 + +# With no variables set, openocd will configure JTAG for the two cores of the ESP32 and +# will do automatic RTOS detection. This can be adjusted by uncommenting any of the +# following lines: + +# Only configure the PRO CPU +#set ESP32_ONLYCPU 1 +# Only configure the APP CPU +#set ESP32_ONLYCPU 2 +# Disable RTOS support +# set ESP32_RTOS none +# Force RTOS to be FreeRTOS +#set ESP32_RTOS FreeRTOS + +#Source the ESP32 configuration file +#source [find target/esp32.cfg] + + +# The TDI pin of ESP32 is also a bootstrap pin that selects the voltage the SPI flash +# chip runs at. When a hard reset happens (e.g. because someone switches the board off +# and on) the ESP32 will use the current TDI value as the bootstrap value because the +# JTAG adapter overrides the pull-up or pull-down resistor that is supposed to do the +# bootstrapping. These lines basically set the idle value of the TDO line to a +# specified value, therefore reducing the chance of a bad bootup due to a bad flash +# voltage greatly. + +# Enable this for 1.8V SPI flash +#esp108 flashbootstrap 1.8 +# Enable this for 3.3V SPI flash +# esp108 flashbootstrap 3.3 diff --git a/ADIS_ESP32_Eclipse/Makefile b/ADIS_ESP32_Eclipse/Makefile new file mode 100644 index 0000000..f602d96 --- /dev/null +++ b/ADIS_ESP32_Eclipse/Makefile @@ -0,0 +1,8 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# + +PROJECT_NAME := esp32-adis + +include $(IDF_PATH)/make/project.mk diff --git a/ADIS_ESP32_Eclipse/README.md b/ADIS_ESP32_Eclipse/README.md new file mode 100644 index 0000000..7afca17 --- /dev/null +++ b/ADIS_ESP32_Eclipse/README.md @@ -0,0 +1,52 @@ +# Hello World Example + +Starts a FreeRTOS task to print "Hello World". + +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +## How to use example + +Follow detailed instructions provided specifically for this example. + +Select the instructions depending on Espressif chip installed on your development board: + +- [ESP32 Getting Started Guide](https://docs.espressif.com/projects/esp-idf/en/stable/get-started/index.html) +- [ESP32-S2 Getting Started Guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html) + + +## Example folder contents + +The project **hello_world** contains one source file in C language [hello_world_main.c](main/hello_world_main.c). The file is located in folder [main](main). + +ESP-IDF projects are built using CMake. The project build configuration is contained in `CMakeLists.txt` files that provide set of directives and instructions describing the project's source files and targets (executable, library, or both). + +Below is short explanation of remaining files in the project folder. + +``` +├── CMakeLists.txt +├── example_test.py Python script used for automated example testing +├── main +│   ├── CMakeLists.txt +│   ├── component.mk Component make file +│   └── hello_world_main.c +├── Makefile Makefile used by legacy GNU Make +└── README.md This is the file you are currently reading +``` + +For more information on structure and contents of ESP-IDF projects, please refer to Section [Build System](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/build-system.html) of the ESP-IDF Programming Guide. + +## Troubleshooting + +* Program upload failure + + * Hardware connection is not correct: run `idf.py -p PORT monitor`, and reboot your board to see if there are any output logs. + * The baud rate for downloading is too high: lower your baud rate in the `menuconfig` menu, and try again. + +## Technical support and feedback + +Please use the following feedback channels: + +* For technical queries, go to the [esp32.com](https://esp32.com/) forum +* For a feature request or bug report, create a [GitHub issue](https://github.com/espressif/esp-idf/issues) + +We will get back to you as soon as possible. diff --git a/ADIS_ESP32_Eclipse/esp-adis.cfg b/ADIS_ESP32_Eclipse/esp-adis.cfg new file mode 100644 index 0000000..cc7695a --- /dev/null +++ b/ADIS_ESP32_Eclipse/esp-adis.cfg @@ -0,0 +1,3 @@ +set ESP32_FLASH_VOLTAGE 3.3 +adapter speed 8000 +source [find target/esp32.cfg] \ No newline at end of file diff --git a/ADIS_ESP32_Eclipse/example_test.py b/ADIS_ESP32_Eclipse/example_test.py new file mode 100644 index 0000000..9901d5c --- /dev/null +++ b/ADIS_ESP32_Eclipse/example_test.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python + +from __future__ import division, print_function, unicode_literals + +import ttfw_idf + + +@ttfw_idf.idf_example_test(env_tag='Example_GENERIC', target=['esp32', 'esp32s2', 'esp32c3'], ci_target=['esp32']) +def test_examples_hello_world(env, extra_data): + app_name = 'hello_world' + dut = env.get_dut(app_name, 'examples/get-started/hello_world') + dut.start_app() + res = dut.expect(ttfw_idf.MINIMUM_FREE_HEAP_SIZE_RE) + if not res: + raise ValueError('Maximum heap size info not found') + ttfw_idf.print_heap_size(app_name, dut.app.config_name, dut.TARGET, res[0]) + + +if __name__ == '__main__': + test_examples_hello_world() diff --git a/ADIS_ESP32_Eclipse/main/CMakeLists.txt b/ADIS_ESP32_Eclipse/main/CMakeLists.txt new file mode 100644 index 0000000..07686dc --- /dev/null +++ b/ADIS_ESP32_Eclipse/main/CMakeLists.txt @@ -0,0 +1,2 @@ +idf_component_register(SRCS "hello_world_main.c" + INCLUDE_DIRS "") diff --git a/ADIS_ESP32_Eclipse/main/component.mk b/ADIS_ESP32_Eclipse/main/component.mk new file mode 100644 index 0000000..a98f634 --- /dev/null +++ b/ADIS_ESP32_Eclipse/main/component.mk @@ -0,0 +1,4 @@ +# +# "main" pseudo-component makefile. +# +# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) diff --git a/ADIS_ESP32_Eclipse/main/hello_world_main.c b/ADIS_ESP32_Eclipse/main/hello_world_main.c new file mode 100644 index 0000000..d867234 --- /dev/null +++ b/ADIS_ESP32_Eclipse/main/hello_world_main.c @@ -0,0 +1,44 @@ +/* Hello World Example + + This example code is in the Public Domain (or CC0 licensed, at your option.) + + Unless required by applicable law or agreed to in writing, this + software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. +*/ +#include +#include "sdkconfig.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "esp_system.h" +#include "esp_spi_flash.h" + +void app_main(void) +{ + printf("Hello world!\n"); + + /* Print chip information */ + esp_chip_info_t chip_info; + esp_chip_info(&chip_info); + printf("This is %s chip with %d CPU core(s), WiFi%s%s, ", + CONFIG_IDF_TARGET, + chip_info.cores, + (chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "", + (chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : ""); + + printf("silicon revision %d, ", chip_info.revision); + + printf("%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024), + (chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external"); + + printf("Minimum free heap size: %d bytes\n", esp_get_minimum_free_heap_size()); + + for (int i = 5; i <= 100; i++) { + printf("Hello Test nr. %d\n", i); + //printf("Restarting in %d seconds...\n", i); + vTaskDelay(1000 / portTICK_PERIOD_MS); + } + printf("Restarting now.\n"); + fflush(stdout); + esp_restart(); +} diff --git a/ADIS_ESP32_Eclipse/sdkconfig.ci b/ADIS_ESP32_Eclipse/sdkconfig.ci new file mode 100644 index 0000000..e69de29 diff --git a/ADIS_IDF_hello_world/FT2232HL.cfg b/ADIS_IDF_hello_world/FT2232HL.cfg new file mode 100644 index 0000000..ea87175 --- /dev/null +++ b/ADIS_IDF_hello_world/FT2232HL.cfg @@ -0,0 +1,52 @@ +# +# OpenOCD configuration file for the FTDI FT2232HL +# evaluation board used as JTAG adapter +# Please modify this file to your local setup. +# + +# Include the configuration for the JTAG adapter. +# If you have a different interface, please edit this to include the +# configuration file of yours. +#source [find interface/ftdi/mbftdi.cfg] +adapter driver ftdi +ftdi vid_pid 0x0403 0x6010 +ftdi channel 0 +ftdi layout_init 0x0038 0x003b + +# The ESP32 only supports JTAG. +#transport select jtag + +# The speed of the JTAG interface, in KHz. If you get DSR/DIR errors (and they +# do not relate to OpenOCD trying to read from a memory range without physical +# memory being present there), you can try lowering this. +adapter speed 8000 + +# With no variables set, openocd will configure JTAG for the two cores of the ESP32 and +# will do automatic RTOS detection. This can be adjusted by uncommenting any of the +# following lines: + +# Only configure the PRO CPU +#set ESP32_ONLYCPU 1 +# Only configure the APP CPU +#set ESP32_ONLYCPU 2 +# Disable RTOS support +# set ESP32_RTOS none +# Force RTOS to be FreeRTOS +#set ESP32_RTOS FreeRTOS + +#Source the ESP32 configuration file +#source [find target/esp32.cfg] + + +# The TDI pin of ESP32 is also a bootstrap pin that selects the voltage the SPI flash +# chip runs at. When a hard reset happens (e.g. because someone switches the board off +# and on) the ESP32 will use the current TDI value as the bootstrap value because the +# JTAG adapter overrides the pull-up or pull-down resistor that is supposed to do the +# bootstrapping. These lines basically set the idle value of the TDO line to a +# specified value, therefore reducing the chance of a bad bootup due to a bad flash +# voltage greatly. + +# Enable this for 1.8V SPI flash +#esp108 flashbootstrap 1.8 +# Enable this for 3.3V SPI flash +# esp108 flashbootstrap 3.3 diff --git a/ADIS_IDF_hello_world/esp-adis.cfg b/ADIS_IDF_hello_world/esp-adis.cfg new file mode 100644 index 0000000..cc7695a --- /dev/null +++ b/ADIS_IDF_hello_world/esp-adis.cfg @@ -0,0 +1,3 @@ +set ESP32_FLASH_VOLTAGE 3.3 +adapter speed 8000 +source [find target/esp32.cfg] \ No newline at end of file