How freeRTOS works?

Hi at all,

I’m programming and I’m choosing the platform on how to devolop my application.

Currently I’m evaluating the ESP32-WROOM-32 programming with the espressid IDE but

  1. I don’t clearly understand where and how freeRTOS is placed in this architecture.

  2. when and how is compiled?

  3. when the freeRTOS is called when I launch my application void main()?

  4. where I can configure my application i’m try to find the FreeRTOSConfig.h (actually i see only a file that is called sdkconfig)

  5. Why my board says that I have only 180k of memory when the esp32 should have 500k?


I (29) boot: ESP-IDF v4.4.1 2nd stage bootloader
I (29) boot: compile time 15:45:00
I (29) boot: chip revision: 1
I (32) boot_comm: chip revision: 1, min. bootloader chip revision: 0        
I (39) boot.esp32: SPI Speed      : 40MHz
I (43) boot.esp32: SPI Mode       : DIO
I (48) boot.esp32: SPI Flash Size : 4MB
I (52) boot: Enabling RNG early entropy source...
I (58) boot: Partition Table:
I (61) boot: ## Label            Usage          Type ST Offset   Length     
I (69) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (76) boot:  1 phy_init         RF data          01 01 0000f000 00001000   
I (84) boot:  2 factory          factory app      00 00 00010000 00100000   
I (91) boot: End of partition table
I (95) boot_comm: chip revision: 1, min. application chip revision: 0       
I (102) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=078cch ( 30924) map
I (122) esp_image: segment 1: paddr=000178f4 vaddr=3ffb0000 size=02340h (  9024) load
I (126) esp_image: segment 2: paddr=00019c3c vaddr=40080000 size=063dch ( 25564) load
I (141) esp_image: segment 3: paddr=00020020 vaddr=400d0020 size=149d4h ( 84436) map
I (171) esp_image: segment 4: paddr=000349fc vaddr=400863dc size=04e48h ( 20040) load
I (180) esp_image: segment 5: paddr=0003984c vaddr=50000000 size=00010h (    16) load
I (186) boot: Loaded app from partition at offset 0x10000
I (186) boot: Disabling RNG early entropy source...
I (202) cpu_start: Pro cpu up.
I (203) cpu_start: Starting app cpu, entry point is 0x40080ff8
0x40080ff8: call_start_cpu1 at C:/Users/giana/esp/esp-idf/components/esp_system/port/cpu_start.c:160

I (189) cpu_start: App cpu up.
I (217) cpu_start: Pro cpu start user code
I (217) cpu_start: cpu freq: 160000000
I (217) cpu_start: Application information:
I (221) cpu_start: Project name:     main
I (226) cpu_start: App version:      1
I (230) cpu_start: Compile time:     Jun 12 2022 15:44:37
I (237) cpu_start: ELF file SHA256:  d7bde2dcf61459aa...
I (243) cpu_start: ESP-IDF:          v4.4.1
I (248) heap_init: Initializing. RAM available for dynamic allocation:      
I (255) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (261) heap_init: At 3FFB2C28 len 0002D3D8 (180 KiB): DRAM
I (267) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (273) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (280) heap_init: At 4008B224 len 00014DDC (83 KiB): IRAM
I (287) spi_flash: detected chip: generic
I (291) spi_flash: flash io: dio
I (296) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.


Espressif include FreeRTOS as part of their IDF (IoT Development Framework), which uses a menu configuration systems (“make menu config”). We are happy to answer FreeRTOS specific questions, but you are probably best asking Espressif about anything that is specific to their integration or tools. There is a lot of online docs and getting started guides on their website, for example: Get Started - ESP32 - — ESP-IDF Programming Guide latest documentation