Advise on setup

Never worked with ESP-IDF, can you give me a pointer ?

Well ESP-IDF is also integrated in PIO, so you should try to configure and upload this example first: platform-espressif32/examples/espidf-blink at master · platformio/platform-espressif32 · GitHub

For the native ESP-IDF start at GitHub - espressif/esp-idf: Espressif IoT Development Framework. Official development framework for Espressif SoCs. and remember to follow ESP32-SOLO-1 on DevKitC_V4 not working - ESP32 Forum (FreeRTOS on first core only in sdkconfig.h).

Tanks,

When reading, I came across this

When using ESP32-DevKitC board with ESP32-SOLO-1 module, enable single core mode 
([CONFIG_FREERTOS_UNICORE](https://docs.espressif.com/projects/esp-idf/en/latest/api- 
reference/kconfig.html#config-freertos-unicore)) in menuconfig before flashing example applications.

Is it part of platformio,? how do I set it ?

As https://dl.espressif.com/doc/esp-idf/latest/api-reference/kconfig.html says the resulting configuration from the kconfig program will be stored in the sdkconfig.h. When you create a PIO project with IDF as the framework you also get a default sdkconfig.h. In there search for FREERTOS_UNICORE and #define it to 1, or add it if it is not there.

Is there a way to set this variable in Arduino framework??

Yes.

You can do this in 2 ways:

  1. this should enable unicore for all builds:
    Go to C:\Users[your user].platformio\packages\framework-arduinoespressif32\tools\sdk\sdkconfig
    At line 472 you have “CONFIG_FREERTOS_UNICORE=”
    Set “CONFIG_FREERTOS_UNICORE=y”
    Save the sdkconfig file then build your project.

  2. this should configure unicore for current project:
    in platformio.ini env settings, add:
    “build_flags = -DCONFIG_FREERTOS_UNICORE=1”

Old thread, but still not solved ( I’ve done other things for a while ).
REFRESH,
I have a ESP32-DevKitC-S1 board from Espressif. It contains ESP32-SOLO-1 which is a stripped down ESP32 module (Just one core )
I cant get it to work.

My configuration.

[env:esp-wrover-kit]
platform = espressif32
board = esp-wrover-kit
framework = arduino
build_flags = -DCONFIG_FREERTOS_UNICORE=1
monitor_speed = 115200

My code:

#include <Arduino.h>
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
}
void loop() {
      delay(500);
      Serial.print(".");
}

The terminals shows following during upload process:

Building .pioenvs\esp-wrover-kit\firmware.bin
Memory Usage -> http://bit.ly/pio-memory-usage
DATA:    [          ]   4.3% (used 14012 bytes from 327680 bytes)
PROGRAM: [==        ]  16.6% (used 217640 bytes from 1310720 bytes)
Configuring upload protocol...
AVAILABLE: esp-prog, esptool, ftdi, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm- ......
CURRENT: upload_protocol = esptool
Looking for upload port...
Auto-detected: COM4
Uploading .pioenvs\esp-wrover-kit\firmware.bin
Serial port COM4
Connecting.......
Chip is ESP32D0WDQ5 (revision 1)
Features: WiFi, BT, Single Core
MAC: 24:0a:c4:85:cd:f4
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 15088 bytes to 9755...
Wrote 15088 bytes (9755 compressed) at 0x00001000 in 0.1 seconds (effective 1058.8 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 144...
Wrote 3072 bytes (144 compressed) at 0x00008000 in 0.0 seconds (effective 3510.9 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 13107.5 kbit/s)...
Hash of data verified.
Compressed 217776 bytes to 102879...
Wrote 217776 bytes (102879 compressed) at 0x00010000 in 1.7 seconds (effective 1005.3 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

The monitor shows the following:

Executing task in folder Test: C:\.platformio\penv\Scripts\platformio.exe device monitor <

--- Miniterm on COM4  115200,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:952
load:0x40078000,len:6084
load:0x40080000,len:7944
entry 0x40080310

Output window shows the following:

Error: no handler found
Error: no handler found
Error: no handler found
Error: no handler found
Error: no handler found
Error: no handler found
Error: no handler found

The only thing I think is strange is ( during upload process )

Leaving...
Hard resetting via RTS pin...

So, anyone who can help ??

Could you get it to work within the Arduino IDE? With which settings?

I have not tested, but this must be wrong…

but I cant find any support for

Hi

I changed board type, to esp32doit-devkit-v1 and now I have the following error.
What is menuconfig ?

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:928
ho 0 tail 12 room 4
load:0x40078000,len:9280
load:0x40080400,len:5860
entry 0x40080698
E (111) cpu_start: Running on single core chip, but application is built with dual core support.
E (111) cpu_start: Please enable CONFIG_FREERTOS_UNICORE option in menuconfig.
abort() was called at PC 0x400826e6 on core 0

Backtrace: 0x40085424:0x3ffe3be0 0x40085651:0x3ffe3c00 0x400826e6:0x3ffe3c20 0x40078f93:0x3ffe3c40 0x40078ff9:0x3ffe3c70 0x40079004:0x3ffe3ca0 0x400791a3:0x3ffe3cc0 0x400806ca:0x3ffe3df0 0x40007c31:0x3ffe3eb0 0x4000073d:0x3ffe3f20

menuconfig (or rather make menuconfig) is the command you type in a ESP-IDF project will give you a terminal-UI to select ESP-IDF compilation options. This will ultimately create the sdkconfig file which has all the chosen macro values inside. See Project Configuration - ESP32 - — ESP-IDF Programming Guide latest documentation

From the output it seems like CONFIG_FREERTOS_UNICORE wasn ot set? build_flags = -DCONFIG_FREERTOS_UNICORE is still in your platformio.ini?

Yes it is,
Current config.

[env:esp32doit-devkit-v1]
platform = espressif32
board = esp32doit-devkit-v1
framework = arduino
monitor_speed = 115200
build_flags = -DCONFIG_FREERTOS_UNICORE=YES

Do I need to install the ESP-IDF although I am only using Arduino framework ??

I have the same problem with those annoying “Error: no handler found” messages.
They appear in Task Window of Visual Studio Code.
The output of the ESP32 board is shown correctly in the Terminal Windows.
So the error does not seem to affect anything, but is annoying.

The error shows up everytime i start a Build Task or a Upload Task in Visual Studio Code while Platformio IDE is loaded.

I tried a reinstall of VSC and Platformio, but the error persists.
On another machine with the same code the error does not show up.

1 Like

Hi
I solved my problems by purchasing a ESP32-WROWER module. Now I continue with my SW application.

Still I need a solution on how to use ESP32 single core modules…
Are any of the guys from PlatformIO reading this thread ??? :slight_smile:

I think Arduino uses pre-built libraries, so even if you set

build_flags = -DCONFIG_FREERTOS_UNICORE=YES

That will not change anything. As @maxgerhardt suggested, you should try to use the IDF framework rather than the Arduino framework.

1 Like

… so the recommendation here is if I want to use the Arduino framework on a single core ESP32, I must first rebuild the Arduino framework with the menuconfig set to single core? Is there a plan to support single core ESP32 devices in the Arduino framework?

Does this work in the plain Arduino IDE framework now? Under which settings?

Not for me. I’ve tried both setting “CONFIG_FREERTOS_UNICORE=y” in the arduino sdkconfig file. I edited the file located here (I’m on windows 10):
C:\Users\Doug\.platformio\packages\framework-arduinoespressif32\tools\sdk

and I also added
“build_flags = -DCONFIG_FREERTOS_UNICORE=1”
in my platformio.ini file.

According to the update in his thread ESP32 SOLO on Arduino Framework Setup - #6 by DougCFL, yes.

I can build and flash Espressif ESP32-Solo-1 board with ESP IDF 4.1 (stable version) and 4.2 (release branch version). I have an unsuccessful run with PIO using IDF Framework Setup. I have tried a few times.

I got the same error from the chip when running the basic Hello World firmware. The firmware did not run. Instead, the below message was continuously displayed.

Running on single core chip, but application is built with dual core support.␛[0m␛[0;31mE (239) cpu_start: Please enable CONFIG_FREERTOS_UNICORE option in menuconfig.␛[0m

I have attempted these following methods.
Method 1: #define CONFIG_FREERTOS_UNICORE 1 // ignored by PIO build
Method 2: build_flags = -DCONFIG_FREERTOS_UNICORE=1 // Build failed with errors.

PIO IDE Version 2.1 and ESP IDF 4.1. I would like to know how to get around it. Thank you.

Michael