├── .gitattributes ├── .gitignore ├── .gitmodules ├── CMakeLists.txt ├── Makefile ├── README.md ├── main ├── CMakeLists.txt ├── component.mk ├── fft │ ├── .DS_Store │ ├── README.md │ ├── fft.c │ └── include │ │ └── fft.h └── i2s_example_main.c └── sdkconfig /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | main/.DS_Store 3 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "main/esp32-fft"] 2 | path = main/esp32-fft 3 | url = https://github.com/fakufaku/esp32-fft 4 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(esp32-i2s-driver-example) 7 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # This is a project Makefile. It is assumed the directory this Makefile resides in is a 3 | # project subdirectory. 4 | # 5 | VERBOSE = 1 6 | PROJECT_NAME := esp32-i2s-driver-example 7 | include $(IDF_PATH)/make/project.mk 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ESP32 PDM Mic FFT Example 2 | hacked together demo of PDM mic FFT on ESP32 3 | mostly intended for my own reference + familiarization with the i2s driver 4 | using: 5 | * [ESP32 Pico D4](https://www.espressif.com/sites/default/files/documentation/esp32-pico-d4_datasheet_en.pdf) 6 | * [Knowles SPH0641LM4H-1](https://media.digikey.com/pdf/Data%20Sheets/Knowles%20Acoustics%20PDFs/SPH0641LM4H-1.pdf) PDM mic 7 | -------------------------------------------------------------------------------- /main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( SRCS 2 | "i2s_example_main.c" 3 | "./esp32-fft/components/fft/fft.c" 4 | INCLUDE_DIRS 5 | "." 6 | "./esp32-fft/components/fft/include" 7 | ) 8 | -------------------------------------------------------------------------------- /main/component.mk: -------------------------------------------------------------------------------- 1 | # 2 | # "main" pseudo-component makefile. 3 | # 4 | # (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) 5 | 6 | COMPONENT_ADD_INCLUDEDIRS := . 7 | -------------------------------------------------------------------------------- /main/fft/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oclyke/esp32-i2s-pdm-fft/e4073185a9d3d7ec3bb4b226407598bae3ce4921/main/fft/.DS_Store -------------------------------------------------------------------------------- /main/fft/README.md: -------------------------------------------------------------------------------- 1 | # license 2 | 3 | the code within this directory and any sub-directory within comes with the following license information 4 | 5 | ``` 6 | Copyright (c) 2017 Robin Scheibler 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in all 16 | copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 24 | SOFTWARE. 25 | ``` 26 | -------------------------------------------------------------------------------- /main/fft/fft.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | ESP32 FFT 4 | ========= 5 | 6 | This provides a vanilla radix-2 FFT implementation and a test example. 7 | 8 | Author 9 | ------ 10 | 11 | This code was written by [Robin Scheibler](http://www.robinscheibler.org) during rainy days in October 2017. 12 | 13 | License 14 | ------- 15 | 16 | Copyright (c) 2017 Robin Scheibler 17 | 18 | Permission is hereby granted, free of charge, to any person obtaining a copy 19 | of this software and associated documentation files (the "Software"), to deal 20 | in the Software without restriction, including without limitation the rights 21 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 22 | copies of the Software, and to permit persons to whom the Software is 23 | furnished to do so, subject to the following conditions: 24 | 25 | The above copyright notice and this permission notice shall be included in all 26 | copies or substantial portions of the Software. 27 | 28 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 29 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 30 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 31 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 32 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 33 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 34 | SOFTWARE. 35 | 36 | */ 37 | #include 38 | #include 39 | #include 40 | #include 41 | 42 | #include "fft.h" 43 | 44 | #define TWO_PI 6.28318530 45 | #define USE_SPLIT_RADIX 1 46 | #define LARGE_BASE_CASE 1 47 | 48 | fft_config_t *fft_init(int size, fft_type_t type, fft_direction_t direction, float *input, float *output) 49 | { 50 | /* 51 | * Prepare an FFT of correct size and types. 52 | * 53 | * If no input or output buffers are provided, they will be allocated. 54 | */ 55 | int k,m; 56 | 57 | fft_config_t *config = (fft_config_t *)malloc(sizeof(fft_config_t)); 58 | 59 | // Check if the size is a power of two 60 | if ((size & (size-1)) != 0) // tests if size is a power of two 61 | return NULL; 62 | 63 | // start configuration 64 | config->flags = 0; 65 | config->type = type; 66 | config->direction = direction; 67 | config->size = size; 68 | 69 | // Allocate and precompute twiddle factors 70 | config->twiddle_factors = (float *)malloc(2 * config->size * sizeof(float)); 71 | 72 | float two_pi_by_n = TWO_PI / config->size; 73 | 74 | for (k = 0, m = 0 ; k < config->size ; k++, m+=2) 75 | { 76 | config->twiddle_factors[m] = cosf(two_pi_by_n * k); // real 77 | config->twiddle_factors[m+1] = sinf(two_pi_by_n * k); // imag 78 | } 79 | 80 | // Allocate input buffer 81 | if (input != NULL) 82 | config->input = input; 83 | else 84 | { 85 | if (config->type == FFT_REAL) 86 | config->input = (float *)malloc(config->size * sizeof(float)); 87 | else if (config->type == FFT_COMPLEX) 88 | config->input = (float *)malloc(2 * config->size * sizeof(float)); 89 | 90 | config->flags |= FFT_OWN_INPUT_MEM; 91 | } 92 | 93 | if (config->input == NULL) 94 | return NULL; 95 | 96 | // Allocate output buffer 97 | if (output != NULL) 98 | config->output = output; 99 | else 100 | { 101 | if (config->type == FFT_REAL) 102 | config->output = (float *)malloc(config->size * sizeof(float)); 103 | else if (config->type == FFT_COMPLEX) 104 | config->output = (float *)malloc(2 * config->size * sizeof(float)); 105 | 106 | config->flags |= FFT_OWN_OUTPUT_MEM; 107 | } 108 | 109 | if (config->output == NULL) 110 | return NULL; 111 | 112 | return config; 113 | } 114 | 115 | void fft_destroy(fft_config_t *config) 116 | { 117 | if (config->flags & FFT_OWN_INPUT_MEM) 118 | free(config->input); 119 | 120 | if (config->flags & FFT_OWN_OUTPUT_MEM) 121 | free(config->output); 122 | 123 | free(config->twiddle_factors); 124 | free(config); 125 | } 126 | 127 | void fft_execute(fft_config_t *config) 128 | { 129 | if (config->type == FFT_REAL && config->direction == FFT_FORWARD) 130 | rfft(config->input, config->output, config->twiddle_factors, config->size); 131 | else if (config->type == FFT_REAL && config->direction == FFT_BACKWARD) 132 | irfft(config->input, config->output, config->twiddle_factors, config->size); 133 | else if (config->type == FFT_COMPLEX && config->direction == FFT_FORWARD) 134 | fft(config->input, config->output, config->twiddle_factors, config->size); 135 | else if (config->type == FFT_COMPLEX && config->direction == FFT_BACKWARD) 136 | ifft(config->input, config->output, config->twiddle_factors, config->size); 137 | } 138 | 139 | void fft(float *input, float *output, float *twiddle_factors, int n) 140 | { 141 | /* 142 | * Forward fast Fourier transform 143 | * DIT, radix-2, out-of-place implementation 144 | * 145 | * Parameters 146 | * ---------- 147 | * input (float *) 148 | * The input array containing the complex samples with 149 | * real/imaginary parts interleaved [Re(x0), Im(x0), ..., Re(x_n-1), Im(x_n-1)] 150 | * output (float *) 151 | * The output array containing the complex samples with 152 | * real/imaginary parts interleaved [Re(x0), Im(x0), ..., Re(x_n-1), Im(x_n-1)] 153 | * n (int) 154 | * The FFT size, should be a power of 2 155 | */ 156 | 157 | #if USE_SPLIT_RADIX 158 | split_radix_fft(input, output, n, 2, twiddle_factors, 2); 159 | #else 160 | fft_primitive(input, output, n, 2, twiddle_factors, 2); 161 | #endif 162 | } 163 | 164 | void ifft(float *input, float *output, float *twiddle_factors, int n) 165 | { 166 | /* 167 | * Inverse fast Fourier transform 168 | * DIT, radix-2, out-of-place implementation 169 | * 170 | * Parameters 171 | * ---------- 172 | * input (float *) 173 | * The input array containing the complex samples with 174 | * real/imaginary parts interleaved [Re(x0), Im(x0), ..., Re(x_n-1), Im(x_n-1)] 175 | * output (float *) 176 | * The output array containing the complex samples with 177 | * real/imaginary parts interleaved [Re(x0), Im(x0), ..., Re(x_n-1), Im(x_n-1)] 178 | * n (int) 179 | * The FFT size, should be a power of 2 180 | */ 181 | ifft_primitive(input, output, n, 2, twiddle_factors, 2); 182 | } 183 | 184 | void rfft(float *x, float *y, float *twiddle_factors, int n) 185 | { 186 | 187 | // This code uses the two-for-the-price-of-one strategy 188 | #if USE_SPLIT_RADIX 189 | split_radix_fft(x, y, n / 2, 2, twiddle_factors, 4); 190 | #else 191 | fft_primitive(x, y, n / 2, 2, twiddle_factors, 4); 192 | #endif 193 | 194 | // Now apply post processing to recover positive 195 | // frequencies of the real FFT 196 | float t = y[0]; 197 | y[0] = t + y[1]; // DC coefficient 198 | y[1] = t - y[1]; // Center coefficient 199 | 200 | // Apply post processing to quarter element 201 | // this boils down to taking complex conjugate 202 | y[n/2+1] = -y[n/2+1]; 203 | 204 | // Now process all the other frequencies 205 | int k; 206 | for (k = 2 ; k < n / 2 ; k += 2) 207 | { 208 | float xer, xei, xor, xoi, c, s, tr, ti; 209 | 210 | c = twiddle_factors[k]; 211 | s = twiddle_factors[k+1]; 212 | 213 | // even half coefficient 214 | xer = 0.5 * (y[k] + y[n-k]); 215 | xei = 0.5 * (y[k+1] - y[n-k+1]); 216 | 217 | // odd half coefficient 218 | xor = 0.5 * (y[k+1] + y[n-k+1]); 219 | xoi = - 0.5 * (y[k] - y[n-k]); 220 | 221 | tr = c * xor + s * xoi; 222 | ti = -s * xor + c * xoi; 223 | 224 | y[k] = xer + tr; 225 | y[k+1] = xei + ti; 226 | 227 | y[n-k] = xer - tr; 228 | y[n-k+1] = -(xei - ti); 229 | } 230 | } 231 | 232 | void irfft(float *x, float *y, float *twiddle_factors, int n) 233 | { 234 | /* 235 | * Destroys content of input vector 236 | */ 237 | int k; 238 | 239 | // Here we need to apply a pre-processing first 240 | float t = x[0]; 241 | x[0] = 0.5 * (t + x[1]); 242 | x[1] = 0.5 * (t - x[1]); 243 | 244 | x[n/2+1] = -x[n/2+1]; 245 | 246 | for (k = 2 ; k < n / 2 ; k += 2) 247 | { 248 | float xer, xei, xor, xoi, c, s, tr, ti; 249 | 250 | c = twiddle_factors[k]; 251 | s = twiddle_factors[k+1]; 252 | 253 | xer = 0.5 * (x[k] + x[n-k]); 254 | tr = 0.5 * (x[k] - x[n-k]); 255 | 256 | xei = 0.5 * (x[k+1] - x[n-k+1]); 257 | ti = 0.5 * (x[k+1] + x[n-k+1]); 258 | 259 | xor = c * tr - s * ti; 260 | xoi = s * tr + c * ti; 261 | 262 | x[k] = xer - xoi; 263 | x[k+1] = xor + xei; 264 | 265 | x[n-k] = xer + xoi; 266 | x[n-k+1] = xor - xei; 267 | } 268 | 269 | ifft_primitive(x, y, n / 2, 2, twiddle_factors, 4); 270 | } 271 | 272 | void fft_primitive(float *x, float *y, int n, int stride, float *twiddle_factors, int tw_stride) 273 | { 274 | /* 275 | * This code will compute the FFT of the input vector x 276 | * 277 | * The input data is assumed to be real/imag interleaved 278 | * 279 | * The size n should be a power of two 280 | * 281 | * y is an output buffer of size 2n to accomodate for complex numbers 282 | * 283 | * Forward fast Fourier transform 284 | * DIT, radix-2, out-of-place implementation 285 | * 286 | * For a complex FFT, call first stage as: 287 | * fft(x, y, n, 2, 2); 288 | * 289 | * Parameters 290 | * ---------- 291 | * x (float *) 292 | * The input array containing the complex samples with 293 | * real/imaginary parts interleaved [Re(x0), Im(x0), ..., Re(x_n-1), Im(x_n-1)] 294 | * y (float *) 295 | * The output array containing the complex samples with 296 | * real/imaginary parts interleaved [Re(x0), Im(x0), ..., Re(x_n-1), Im(x_n-1)] 297 | * n (int) 298 | * The FFT size, should be a power of 2 299 | * stride (int) 300 | * The number of elements to skip between two successive samples 301 | * tw_stride (int) 302 | * The number of elements to skip between two successive twiddle factors 303 | */ 304 | int k; 305 | float t; 306 | 307 | #if LARGE_BASE_CASE 308 | // End condition, stop at n=8 to avoid one trivial recursion 309 | if (n == 8) 310 | { 311 | fft8(x, stride, y, 2); 312 | return; 313 | } 314 | #else 315 | // End condition, stop at n=2 to avoid one trivial recursion 316 | if (n == 2) 317 | { 318 | y[0] = x[0] + x[stride]; 319 | y[1] = x[1] + x[stride + 1]; 320 | y[2] = x[0] - x[stride]; 321 | y[3] = x[1] - x[stride + 1]; 322 | return; 323 | } 324 | #endif 325 | 326 | // Recursion -- Decimation In Time algorithm 327 | fft_primitive(x, y, n / 2, 2 * stride, twiddle_factors, 2 * tw_stride); // even half 328 | fft_primitive(x + stride, y+n, n / 2, 2 * stride, twiddle_factors, 2 * tw_stride); // odd half 329 | 330 | // Stitch back together 331 | 332 | // We can a few multiplications in the first step 333 | t = y[0]; 334 | y[0] = t + y[n]; 335 | y[n] = t - y[n]; 336 | 337 | t = y[1]; 338 | y[1] = t + y[n+1]; 339 | y[n+1] = t - y[n+1]; 340 | 341 | for (k = 1 ; k < n / 2 ; k++) 342 | { 343 | float x1r, x1i, x2r, x2i, c, s; 344 | c = twiddle_factors[k * tw_stride]; 345 | s = twiddle_factors[k * tw_stride + 1]; 346 | 347 | x1r = y[2 * k]; 348 | x1i = y[2 * k + 1]; 349 | x2r = c * y[n + 2 * k] + s * y[n + 2 * k + 1]; 350 | x2i = -s * y[n + 2 * k] + c * y[n + 2 * k + 1]; 351 | 352 | y[2 * k] = x1r + x2r; 353 | y[2 * k + 1] = x1i + x2i; 354 | 355 | y[n + 2 * k] = x1r - x2r; 356 | y[n + 2 * k + 1] = x1i - x2i; 357 | } 358 | 359 | } 360 | 361 | void split_radix_fft(float *x, float *y, int n, int stride, float *twiddle_factors, int tw_stride) 362 | { 363 | /* 364 | * This code will compute the FFT of the input vector x 365 | * 366 | * The input data is assumed to be real/imag interleaved 367 | * 368 | * The size n should be a power of two 369 | * 370 | * y is an output buffer of size 2n to accomodate for complex numbers 371 | * 372 | * Forward fast Fourier transform 373 | * Split-Radix 374 | * DIT, radix-2, out-of-place implementation 375 | * 376 | * For a complex FFT, call first stage as: 377 | * fft(x, y, n, 2, 2); 378 | * 379 | * Parameters 380 | * ---------- 381 | * x (float *) 382 | * The input array containing the complex samples with 383 | * real/imaginary parts interleaved [Re(x0), Im(x0), ..., Re(x_n-1), Im(x_n-1)] 384 | * y (float *) 385 | * The output array containing the complex samples with 386 | * real/imaginary parts interleaved [Re(x0), Im(x0), ..., Re(x_n-1), Im(x_n-1)] 387 | * n (int) 388 | * The FFT size, should be a power of 2 389 | * stride (int) 390 | * The number of elements to skip between two successive samples 391 | * twiddle_factors (float *) 392 | * The array of twiddle factors 393 | * tw_stride (int) 394 | * The number of elements to skip between two successive twiddle factors 395 | */ 396 | int k; 397 | 398 | #if LARGE_BASE_CASE 399 | // End condition, stop at n=2 to avoid one trivial recursion 400 | if (n == 8) 401 | { 402 | fft8(x, stride, y, 2); 403 | return; 404 | } 405 | else if (n == 4) 406 | { 407 | fft4(x, stride, y, 2); 408 | return; 409 | } 410 | #else 411 | // End condition, stop at n=2 to avoid one trivial recursion 412 | if (n == 2) 413 | { 414 | y[0] = x[0] + x[stride]; 415 | y[1] = x[1] + x[stride + 1]; 416 | y[2] = x[0] - x[stride]; 417 | y[3] = x[1] - x[stride + 1]; 418 | return; 419 | } 420 | else if (n == 1) 421 | { 422 | y[0] = x[0]; 423 | y[1] = x[1]; 424 | return; 425 | } 426 | #endif 427 | 428 | // Recursion -- Decimation In Time algorithm 429 | split_radix_fft(x, y, n / 2, 2 * stride, twiddle_factors, 2 * tw_stride); 430 | split_radix_fft(x + stride, y + n, n / 4, 4 * stride, twiddle_factors, 4 * tw_stride); 431 | split_radix_fft(x + 3 * stride, y + n + n / 2, n / 4, 4 * stride, twiddle_factors, 4 * tw_stride); 432 | 433 | // Stitch together the output 434 | float u1r, u1i, u2r, u2i, x1r, x1i, x2r, x2i; 435 | float t; 436 | 437 | // We can save a few multiplications in the first step 438 | u1r = y[0]; 439 | u1i = y[1]; 440 | u2r = y[n / 2]; 441 | u2i = y[n / 2 + 1]; 442 | 443 | x1r = y[n]; 444 | x1i = y[n + 1]; 445 | x2r = y[n / 2 + n]; 446 | x2i = y[n / 2 + n + 1]; 447 | 448 | t = x1r + x2r; 449 | y[0] = u1r + t; 450 | y[n] = u1r - t; 451 | 452 | t = x1i + x2i; 453 | y[1] = u1i + t; 454 | y[n + 1] = u1i - t; 455 | 456 | t = x2i - x1i; 457 | y[n / 2] = u2r - t; 458 | y[n + n / 2] = u2r + t; 459 | 460 | t = x1r - x2r; 461 | y[n / 2 + 1] = u2i - t; 462 | y[n + n / 2 + 1] = u2i + t; 463 | 464 | for (k = 1 ; k < n / 4 ; k++) 465 | { 466 | float u1r, u1i, u2r, u2i, x1r, x1i, x2r, x2i, c1, s1, c2, s2; 467 | c1 = twiddle_factors[k * tw_stride]; 468 | s1 = twiddle_factors[k * tw_stride + 1]; 469 | c2 = twiddle_factors[3 * k * tw_stride]; 470 | s2 = twiddle_factors[3 * k * tw_stride + 1]; 471 | 472 | u1r = y[2 * k]; 473 | u1i = y[2 * k + 1]; 474 | u2r = y[2 * k + n / 2]; 475 | u2i = y[2 * k + n / 2 + 1]; 476 | 477 | x1r = c1 * y[n + 2 * k] + s1 * y[n + 2 * k + 1]; 478 | x1i = -s1 * y[n + 2 * k] + c1 * y[n + 2 * k + 1]; 479 | x2r = c2 * y[n / 2 + n + 2 * k] + s2 * y[n / 2 + n + 2 * k + 1]; 480 | x2i = -s2 * y[n / 2 + n + 2 * k] + c2 * y[n / 2 + n + 2 * k + 1]; 481 | 482 | t = x1r + x2r; 483 | y[2 * k] = u1r + t; 484 | y[2 * k + n] = u1r - t; 485 | 486 | t = x1i + x2i; 487 | y[2 * k + 1] = u1i + t; 488 | y[2 * k + n + 1] = u1i - t; 489 | 490 | t = x2i - x1i; 491 | y[2 * k + n / 2] = u2r - t; 492 | y[2 * k + n + n / 2] = u2r + t; 493 | 494 | t = x1r - x2r; 495 | y[2 * k + n / 2 + 1] = u2i - t; 496 | y[2 * k + n + n / 2 + 1] = u2i + t; 497 | } 498 | 499 | } 500 | 501 | 502 | void ifft_primitive(float *input, float *output, int n, int stride, float *twiddle_factors, int tw_stride) 503 | { 504 | 505 | #if USE_SPLIT_RADIX 506 | split_radix_fft(input, output, n, stride, twiddle_factors, tw_stride); 507 | #else 508 | fft_primitive(input, output, n, stride, twiddle_factors, tw_stride); 509 | #endif 510 | 511 | int ks; 512 | 513 | int ns = n * stride; 514 | 515 | // reverse all coefficients from 1 to n / 2 - 1 516 | for (ks = stride ; ks < ns / 2 ; ks += stride) 517 | { 518 | float t; 519 | 520 | t = output[ks]; 521 | output[ks] = output[ns-ks]; 522 | output[ns-ks] = t; 523 | 524 | t = output[ks+1]; 525 | output[ks+1] = output[ns-ks+1]; 526 | output[ns-ks+1] = t; 527 | } 528 | 529 | // Apply normalization 530 | float norm = 1. / n; 531 | for (ks = 0 ; ks < ns ; ks += stride) 532 | { 533 | output[ks] *= norm; 534 | output[ks+1] *= norm; 535 | } 536 | 537 | } 538 | 539 | inline void fft8(float *input, int stride_in, float *output, int stride_out) 540 | { 541 | /* 542 | * Unrolled implementation of FFT8 for a little more performance 543 | */ 544 | float a0r, a1r, a2r, a3r, a4r, a5r, a6r, a7r; 545 | float a0i, a1i, a2i, a3i, a4i, a5i, a6i, a7i; 546 | float b0r, b1r, b2r, b3r, b4r, b5r, b6r, b7r; 547 | float b0i, b1i, b2i, b3i, b4i, b5i, b6i, b7i; 548 | float t; 549 | float sin_pi_4 = 0.7071067812; 550 | 551 | a0r = input[0]; 552 | a0i = input[1]; 553 | a1r = input[stride_in]; 554 | a1i = input[stride_in+1]; 555 | a2r = input[2*stride_in]; 556 | a2i = input[2*stride_in+1]; 557 | a3r = input[3*stride_in]; 558 | a3i = input[3*stride_in+1]; 559 | a4r = input[4*stride_in]; 560 | a4i = input[4*stride_in+1]; 561 | a5r = input[5*stride_in]; 562 | a5i = input[5*stride_in+1]; 563 | a6r = input[6*stride_in]; 564 | a6i = input[6*stride_in+1]; 565 | a7r = input[7*stride_in]; 566 | a7i = input[7*stride_in+1]; 567 | 568 | // Stage 1 569 | 570 | b0r = a0r + a4r; 571 | b0i = a0i + a4i; 572 | 573 | b1r = a1r + a5r; 574 | b1i = a1i + a5i; 575 | 576 | b2r = a2r + a6r; 577 | b2i = a2i + a6i; 578 | 579 | b3r = a3r + a7r; 580 | b3i = a3i + a7i; 581 | 582 | b4r = a0r - a4r; 583 | b4i = a0i - a4i; 584 | 585 | b5r = a1r - a5r; 586 | b5i = a1i - a5i; 587 | // W_8^1 = 1/sqrt(2) - j / sqrt(2) 588 | t = b5r + b5i; 589 | b5i = (b5i - b5r) * sin_pi_4; 590 | b5r = t * sin_pi_4; 591 | 592 | // W_8^2 = -j 593 | b6r = a2i - a6i; 594 | b6i = a6r - a2r; 595 | 596 | b7r = a3r - a7r; 597 | b7i = a3i - a7i; 598 | // W_8^3 = -1 / sqrt(2) + j / sqrt(2) 599 | t = sin_pi_4 * (b7i - b7r); 600 | b7i = - (b7r + b7i) * sin_pi_4; 601 | b7r = t; 602 | 603 | // Stage 2 604 | 605 | a0r = b0r + b2r; 606 | a0i = b0i + b2i; 607 | 608 | a1r = b1r + b3r; 609 | a1i = b1i + b3i; 610 | 611 | a2r = b0r - b2r; 612 | a2i = b0i - b2i; 613 | 614 | // * j 615 | a3r = b1i - b3i; 616 | a3i = b3r - b1r; 617 | 618 | a4r = b4r + b6r; 619 | a4i = b4i + b6i; 620 | 621 | a5r = b5r + b7r; 622 | a5i = b5i + b7i; 623 | 624 | a6r = b4r - b6r; 625 | a6i = b4i - b6i; 626 | 627 | // * j 628 | a7r = b5i - b7i; 629 | a7i = b7r - b5r; 630 | 631 | // Stage 3 632 | 633 | // X[0] 634 | output[0] = a0r + a1r; 635 | output[1] = a0i + a1i; 636 | 637 | // X[4] 638 | output[4*stride_out] = a0r - a1r; 639 | output[4*stride_out+1] = a0i - a1i; 640 | 641 | // X[2] 642 | output[2*stride_out] = a2r + a3r; 643 | output[2*stride_out+1] = a2i + a3i; 644 | 645 | // X[6] 646 | output[6*stride_out] = a2r - a3r; 647 | output[6*stride_out+1] = a2i - a3i; 648 | 649 | // X[1] 650 | output[stride_out] = a4r + a5r; 651 | output[stride_out+1] = a4i + a5i; 652 | 653 | // X[5] 654 | output[5*stride_out] = a4r - a5r; 655 | output[5*stride_out+1] = a4i - a5i; 656 | 657 | // X[3] 658 | output[3*stride_out] = a6r + a7r; 659 | output[3*stride_out+1] = a6i + a7i; 660 | 661 | // X[7] 662 | output[7*stride_out] = a6r - a7r; 663 | output[7*stride_out+1] = a6i - a7i; 664 | 665 | } 666 | 667 | inline void fft4(float *input, int stride_in, float *output, int stride_out) 668 | { 669 | /* 670 | * Unrolled implementation of FFT4 for a little more performance 671 | */ 672 | float t1, t2; 673 | 674 | t1 = input[0] + input[2*stride_in]; 675 | t2 = input[stride_in] + input[3*stride_in]; 676 | output[0] = t1 + t2; 677 | output[2*stride_out] = t1 - t2; 678 | 679 | t1 = input[1] + input[2*stride_in+1]; 680 | t2 = input[stride_in+1] + input[3*stride_in+1]; 681 | output[1] = t1 + t2; 682 | output[2*stride_out+1] = t1 - t2; 683 | 684 | t1 = input[0] - input[2*stride_in]; 685 | t2 = input[stride_in+1] - input[3*stride_in+1]; 686 | output[stride_out] = t1 + t2; 687 | output[3*stride_out] = t1 - t2; 688 | 689 | t1 = input[1] - input[2*stride_in+1]; 690 | t2 = input[3*stride_in] - input[stride_in]; 691 | output[stride_out+1] = t1 + t2; 692 | output[3*stride_out+1] = t1 - t2; 693 | } 694 | -------------------------------------------------------------------------------- /main/fft/include/fft.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | ESP32 FFT 4 | ========= 5 | 6 | This provides a vanilla radix-2 FFT implementation and a test example. 7 | 8 | Author 9 | ------ 10 | 11 | This code was written by [Robin Scheibler](http://www.robinscheibler.org) during rainy days in October 2017. 12 | 13 | License 14 | ------- 15 | 16 | Copyright (c) 2017 Robin Scheibler 17 | 18 | Permission is hereby granted, free of charge, to any person obtaining a copy 19 | of this software and associated documentation files (the "Software"), to deal 20 | in the Software without restriction, including without limitation the rights 21 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 22 | copies of the Software, and to permit persons to whom the Software is 23 | furnished to do so, subject to the following conditions: 24 | 25 | The above copyright notice and this permission notice shall be included in all 26 | copies or substantial portions of the Software. 27 | 28 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 29 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 30 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 31 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 32 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 33 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 34 | SOFTWARE. 35 | 36 | */ 37 | #ifndef __FFT_H__ 38 | #define __FFT_H__ 39 | 40 | typedef enum 41 | { 42 | FFT_REAL, 43 | FFT_COMPLEX 44 | } fft_type_t; 45 | 46 | typedef enum 47 | { 48 | FFT_FORWARD, 49 | FFT_BACKWARD 50 | } fft_direction_t; 51 | 52 | #define FFT_OWN_INPUT_MEM 1 53 | #define FFT_OWN_OUTPUT_MEM 2 54 | 55 | typedef struct 56 | { 57 | int size; // FFT size 58 | float *input; // pointer to input buffer 59 | float *output; // pointer to output buffer 60 | float *twiddle_factors; // pointer to buffer holding twiddle factors 61 | fft_type_t type; // real or complex 62 | fft_direction_t direction; // forward or backward 63 | unsigned int flags; // FFT flags 64 | } fft_config_t; 65 | 66 | fft_config_t *fft_init(int size, fft_type_t type, fft_direction_t direction, float *input, float *output); 67 | void fft_destroy(fft_config_t *config); 68 | void fft_execute(fft_config_t *config); 69 | void fft(float *input, float *output, float *twiddle_factors, int n); 70 | void ifft(float *input, float *output, float *twiddle_factors, int n); 71 | void rfft(float *x, float *y, float *twiddle_factors, int n); 72 | void irfft(float *x, float *y, float *twiddle_factors, int n); 73 | void fft_primitive(float *x, float *y, int n, int stride, float *twiddle_factors, int tw_stride); 74 | void split_radix_fft(float *x, float *y, int n, int stride, float *twiddle_factors, int tw_stride); 75 | void ifft_primitive(float *input, float *output, int n, int stride, float *twiddle_factors, int tw_stride); 76 | void fft8(float *input, int stride_in, float *output, int stride_out); 77 | void fft4(float *input, int stride_in, float *output, int stride_out); 78 | 79 | #endif // __FFT_H__ 80 | -------------------------------------------------------------------------------- /main/i2s_example_main.c: -------------------------------------------------------------------------------- 1 | /* 2 | // This file is subject to the terms and conditions defined in 3 | // file 'LICENSE.md', which is part of this source code package. 4 | */ 5 | 6 | #include 7 | #include "freertos/FreeRTOS.h" 8 | #include "freertos/task.h" 9 | #include "freertos/message_buffer.h" 10 | #include "driver/i2s.h" 11 | #include "driver/gpio.h" 12 | #include "esp_system.h" 13 | #include "esp_log.h" 14 | #include 15 | 16 | #include "fft.h" // github.com/fakufaku/esp32-fft 17 | 18 | ///////////// 19 | // USER SETUP 20 | 21 | // #define DEBUG_PRINT_RAW 22 | // #define DEBUG_PRINT_AVG 23 | // #define DEBUG_FFT_FULL_BIN_INFO 24 | #define DEBUG_FFT_STRONGEST 25 | 26 | #define PIN_CLK (5) 27 | #define PIN_DATA (35) 28 | 29 | #define SAMPLE_BIT_SIZE (I2S_BITS_PER_SAMPLE_16BIT) 30 | #define SAMPLE_RATE_HZ (44100) // not sure if decimation is considered? 31 | 32 | #define FFT_BUF_SAMPLES (2048) // (4096), <-- does not trigger watchdog ====== triggers watchdog --> (1024) (512) 33 | #define FFT_BUFFERS (2) // double buffering 34 | 35 | #define DMA_BUF_BYTES (1024) // maximum allowable size is 1024 (by i2s driver implemnetation) 36 | 37 | // END USER SETUP 38 | ///////////////// 39 | 40 | // determine overall buffer size 41 | #if SAMPLE_BIT_SIZE == I2S_BITS_PER_SAMPLE_32BIT 42 | #define FFT_BYTES_PER_SAMPLE (4) 43 | #elif SAMPLE_BIT_SIZE == I2S_BITS_PER_SAMPLE_24BIT 44 | #error "24 bit depth not supported currently" 45 | #elif SAMPLE_BIT_SIZE == I2S_BITS_PER_SAMPLE_16BIT 46 | #define FFT_BYTES_PER_SAMPLE (2) 47 | #elif SAMPLE_BIT_SIZE == I2S_BITS_PER_SAMPLE_8BIT 48 | #define FFT_BYTES_PER_SAMPLE (1) 49 | #else 50 | #error "sample bit size incorrectly configured" 51 | #endif 52 | 53 | #define FFT_BUF_BYTES (FFT_BUF_SAMPLES * FFT_BYTES_PER_SAMPLE) 54 | #define PDM_BUF_BYTES (FFT_BUF_BYTES * FFT_BUFFERS) 55 | #define DMA_BUFFERS ((FFT_BUF_BYTES * FFT_BUFFERS) / DMA_BUF_BYTES) 56 | 57 | #define BIN_WIDTH_HZ ((float)SAMPLE_RATE_HZ / (float)FFT_BUF_SAMPLES) // just a total guess lahmaoh 58 | 59 | // note: though presented as an unsigned buffer this is really a signed value - functions that interpret 60 | // these values should use proper casting (to a signed type) 61 | uint8_t PDMDataBuffer[PDM_BUF_BYTES]; 62 | 63 | MessageBufferHandle_t buf_idx_msg_handle; 64 | const size_t buf_idx_msg_bytes = sizeof(size_t) + sizeof(size_t); // one size_t for buffer index, another size_t for MessageBuffer overhead 65 | 66 | // fwd declarations 67 | void disp_buf(uint8_t* buf, size_t length); 68 | void disp_avg_buf(uint8_t* buf, size_t length); 69 | void i2s_init(); 70 | 71 | 72 | // //***************************************************************************** 73 | // // 74 | // // Analyze and print frequency data. 75 | // // 76 | // //***************************************************************************** 77 | // void 78 | // pcm_fft_print(void) 79 | // { 80 | // float fMaxValue; 81 | // uint32_t ui32MaxIndex; 82 | // int16_t *pi16PDMData = (int16_t *) g_ui32PDMDataBuffer; 83 | // uint32_t ui32LoudestFrequency; 84 | 85 | // // 86 | // // Convert the PDM samples to floats, and arrange them in the format 87 | // // required by the FFT function. 88 | // // 89 | // for (uint32_t i = 0; i < PDM_FFT_SIZE; i++) 90 | // { 91 | // if (PRINT_PDM_DATA) 92 | // { 93 | // am_util_stdio_printf("%d\n", pi16PDMData[i]); 94 | // } 95 | 96 | // g_fPDMTimeDomain[2 * i] = pi16PDMData[i] / 1.0; 97 | // g_fPDMTimeDomain[2 * i + 1] = 0.0; 98 | // } 99 | 100 | // if (PRINT_PDM_DATA) 101 | // { 102 | // am_util_stdio_printf("END\n"); 103 | // } 104 | 105 | // // 106 | // // Perform the FFT. 107 | // // 108 | // arm_cfft_radix4_instance_f32 S; 109 | // arm_cfft_radix4_init_f32(&S, PDM_FFT_SIZE, 0, 1); 110 | // arm_cfft_radix4_f32(&S, g_fPDMTimeDomain); 111 | // arm_cmplx_mag_f32(g_fPDMTimeDomain, g_fPDMMagnitudes, PDM_FFT_SIZE); 112 | 113 | // if (PRINT_FFT_DATA) 114 | // { 115 | // for (uint32_t i = 0; i < PDM_FFT_SIZE / 2; i++) 116 | // { 117 | // am_util_stdio_printf("%f\n", g_fPDMMagnitudes[i]); 118 | // } 119 | 120 | // am_util_stdio_printf("END\n"); 121 | // } 122 | 123 | // // 124 | // // Find the frequency bin with the largest magnitude. 125 | // // 126 | // arm_max_f32(g_fPDMMagnitudes, PDM_FFT_SIZE / 2, &fMaxValue, &ui32MaxIndex); 127 | 128 | // ui32LoudestFrequency = (g_ui32SampleFreq * ui32MaxIndex) / PDM_FFT_SIZE; 129 | 130 | // if (PRINT_FFT_DATA) 131 | // { 132 | // am_util_stdio_printf("Loudest frequency bin: %d\n", ui32MaxIndex); 133 | // } 134 | 135 | // am_util_stdio_printf("Loudest frequency: %d \n", ui32LoudestFrequency); 136 | // } 137 | 138 | 139 | void tsk_process (void* arg) { 140 | size_t buf_idx = 0; 141 | uint8_t* buf = NULL; 142 | 143 | while (1) { 144 | size_t rx_bytes = xMessageBufferReceive( buf_idx_msg_handle, (void*)(&buf_idx), sizeof(buf_idx), portMAX_DELAY ); 145 | assert(rx_bytes == sizeof(buf_idx)); 146 | buf = &PDMDataBuffer[buf_idx * FFT_BUF_BYTES]; // get the proper buffer space 147 | // ESP_LOGI("processor", "received %d bytes, buffer index %d", rx_bytes, buf_idx); 148 | 149 | #ifndef DEBUG_PRINT_RAW 150 | 151 | #else 152 | disp_buf(buf, FFT_BUF_BYTES); // print the buffer contents 153 | #endif 154 | 155 | #ifdef DEBUG_PRINT_AVG 156 | disp_avg_buf(buf, FFT_BUF_BYTES); // print avg value 157 | #endif 158 | 159 | #if SAMPLE_BIT_SIZE != I2S_BITS_PER_SAMPLE_16BIT 160 | #error "fft code is currently assuming 16 bit samples - need work to change the sample bit size" 161 | #endif 162 | // init FFT w/ dynamic memory allocation 163 | fft_config_t *real_fft_plan = fft_init(FFT_BUF_SAMPLES, FFT_REAL, FFT_FORWARD, NULL, NULL); 164 | assert(real_fft_plan); 165 | assert(real_fft_plan->size == FFT_BUF_SAMPLES); 166 | 167 | // prepare input to fft 168 | int16_t* i16buf = (int16_t*)buf; 169 | for(size_t k = 0; k < real_fft_plan->size; k++){ 170 | real_fft_plan->input[k] = (float)i16buf[k]; 171 | } 172 | 173 | // perform fft 174 | fft_execute(real_fft_plan); 175 | 176 | // use the results: 177 | #ifdef DEBUG_FFT_FULL_BIN_INFO 178 | printf("DC component : %f\n", real_fft_plan->output[0]); // DC is at [0] 179 | for (size_t k = 1 ; k < real_fft_plan->size / 2 ; k++){ 180 | printf("%d-th freq : %f+j%f\n", k, real_fft_plan->output[2*k], real_fft_plan->output[2*k+1]); 181 | } 182 | printf("Middle component : %f\n", real_fft_plan->output[1]); // N/2 is real and stored at [1] 183 | #endif 184 | 185 | #ifdef DEBUG_FFT_STRONGEST 186 | size_t strongest_k = 0; 187 | float strongest_val = 0.0; 188 | for (size_t k = 1 ; k < real_fft_plan->size / 2 ; k++){ 189 | float val = real_fft_plan->output[2*k]; 190 | if(fabs(strongest_val) < fabs(val)){ 191 | strongest_val = val; 192 | strongest_k = k; 193 | } 194 | } 195 | printf("%f\n", (float)strongest_k*BIN_WIDTH_HZ); 196 | #endif 197 | 198 | // clean up output 199 | fft_destroy(real_fft_plan); 200 | } 201 | } 202 | 203 | void tsk_record (void* arg) { 204 | size_t buf_idx = 0; 205 | size_t bytes_read = 0; 206 | uint8_t* buf = NULL; 207 | 208 | buf_idx_msg_handle = xMessageBufferCreate( buf_idx_msg_bytes ); 209 | assert(buf_idx_msg_handle); 210 | xTaskCreate(tsk_process, "process task", 1024 * 2, NULL, 5, NULL); 211 | 212 | while (1) { 213 | bytes_read = 0; 214 | buf = &PDMDataBuffer[buf_idx * FFT_BUF_BYTES]; // get the proper buffer space 215 | i2s_read(I2S_NUM_0, buf, FFT_BUF_BYTES, &bytes_read, portMAX_DELAY); 216 | assert(bytes_read == FFT_BUF_BYTES); 217 | 218 | // signal the processing task which buffer to handle 219 | size_t tx_bytes = xMessageBufferSend(buf_idx_msg_handle, &buf_idx, sizeof(size_t), portMAX_DELAY); 220 | 221 | // increment the buffer to use 222 | buf_idx++; 223 | if(buf_idx >= FFT_BUFFERS){ 224 | buf_idx = 0; 225 | } 226 | } 227 | } 228 | 229 | 230 | void app_main() { 231 | i2s_init(); 232 | vTaskDelay(1000 / portTICK_RATE_MS); 233 | xTaskCreate(tsk_record, "record task", 1024 * 2, NULL, 5, NULL); 234 | 235 | } 236 | 237 | 238 | // debug display functions 239 | void disp_buf(uint8_t* buf, size_t length) { 240 | #if SAMPLE_BIT_SIZE == I2S_BITS_PER_SAMPLE_32BIT 241 | int32_t* b = (int32_t*)buf; 242 | #elif SAMPLE_BIT_SIZE == I2S_BITS_PER_SAMPLE_24BIT 243 | #error "24 bit depth not supported currently" 244 | #elif SAMPLE_BIT_SIZE == I2S_BITS_PER_SAMPLE_16BIT 245 | int16_t* b = (int16_t*)buf; 246 | #elif SAMPLE_BIT_SIZE == I2S_BITS_PER_SAMPLE_8BIT 247 | int8_t* b = (int8_t*)buf; 248 | #else 249 | #error "sample bit size incorrectly configured" 250 | #endif 251 | 252 | for (size_t i = 0; i < length; i++) { 253 | printf("%i\n", b[i]); 254 | } 255 | } 256 | 257 | void disp_avg_buf(uint8_t* buf, size_t length) { 258 | int64_t acc = 0; 259 | int16_t* b = (int16_t*)buf; 260 | for (size_t idx = 0; idx < length; idx++) { 261 | acc += b[idx]; 262 | } 263 | printf("%i\n", (int16_t)(acc/length)); 264 | } 265 | 266 | 267 | 268 | // i2s initialization 269 | void i2s_init() { 270 | int i2s_num = 0; 271 | i2s_config_t i2s_config = { 272 | .mode = I2S_MODE_MASTER | I2S_MODE_RX |I2S_MODE_PDM, 273 | .sample_rate = SAMPLE_RATE_HZ, 274 | .bits_per_sample = SAMPLE_BIT_SIZE, 275 | .communication_format = I2S_COMM_FORMAT_STAND_PCM_SHORT, 276 | // .channel_format = I2S_CHANNEL_FMT_ONLY_RIGHT, 277 | .channel_format = I2S_CHANNEL_FMT_ONLY_LEFT, 278 | .intr_alloc_flags = 0, 279 | .dma_buf_count = DMA_BUFFERS, 280 | .dma_buf_len = DMA_BUF_BYTES, 281 | }; 282 | 283 | i2s_pin_config_t pin_config = { 284 | .ws_io_num = PIN_CLK, 285 | .data_in_num = PIN_DATA, 286 | }; 287 | 288 | //install and start i2s driver 289 | i2s_driver_install(i2s_num, &i2s_config, 0, NULL); 290 | i2s_set_pin(I2S_NUM_0, &pin_config); 291 | } 292 | -------------------------------------------------------------------------------- /sdkconfig: -------------------------------------------------------------------------------- 1 | # 2 | # Automatically generated file. DO NOT EDIT. 3 | # Espressif IoT Development Framework (ESP-IDF) Project Configuration 4 | # 5 | CONFIG_IDF_CMAKE=y 6 | CONFIG_IDF_TARGET_ARCH_XTENSA=y 7 | CONFIG_IDF_TARGET="esp32" 8 | CONFIG_IDF_TARGET_ESP32=y 9 | CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 10 | 11 | # 12 | # SDK tool configuration 13 | # 14 | CONFIG_SDK_TOOLPREFIX="xtensa-esp32-elf-" 15 | # CONFIG_SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS is not set 16 | # end of SDK tool configuration 17 | 18 | # 19 | # Build type 20 | # 21 | CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y 22 | # CONFIG_APP_BUILD_TYPE_ELF_RAM is not set 23 | CONFIG_APP_BUILD_GENERATE_BINARIES=y 24 | CONFIG_APP_BUILD_BOOTLOADER=y 25 | CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y 26 | # end of Build type 27 | 28 | # 29 | # Application manager 30 | # 31 | CONFIG_APP_COMPILE_TIME_DATE=y 32 | # CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set 33 | # CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set 34 | # CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set 35 | CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16 36 | # end of Application manager 37 | 38 | # 39 | # Bootloader config 40 | # 41 | CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000 42 | CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y 43 | # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set 44 | # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set 45 | # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set 46 | # CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set 47 | # CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set 48 | # CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set 49 | CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y 50 | # CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set 51 | # CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set 52 | CONFIG_BOOTLOADER_LOG_LEVEL=3 53 | # CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set 54 | CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y 55 | # CONFIG_BOOTLOADER_FACTORY_RESET is not set 56 | # CONFIG_BOOTLOADER_APP_TEST is not set 57 | CONFIG_BOOTLOADER_WDT_ENABLE=y 58 | # CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set 59 | CONFIG_BOOTLOADER_WDT_TIME_MS=9000 60 | # CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set 61 | # CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set 62 | # CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set 63 | # CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set 64 | CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 65 | # CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set 66 | # end of Bootloader config 67 | 68 | # 69 | # Security features 70 | # 71 | # CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set 72 | # CONFIG_SECURE_BOOT is not set 73 | # CONFIG_SECURE_FLASH_ENC_ENABLED is not set 74 | # end of Security features 75 | 76 | # 77 | # Serial flasher config 78 | # 79 | CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 80 | # CONFIG_ESPTOOLPY_NO_STUB is not set 81 | # CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set 82 | # CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set 83 | CONFIG_ESPTOOLPY_FLASHMODE_DIO=y 84 | # CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set 85 | CONFIG_ESPTOOLPY_FLASHMODE="dio" 86 | # CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set 87 | CONFIG_ESPTOOLPY_FLASHFREQ_40M=y 88 | # CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set 89 | # CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set 90 | CONFIG_ESPTOOLPY_FLASHFREQ="40m" 91 | # CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set 92 | CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y 93 | # CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set 94 | # CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set 95 | # CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set 96 | CONFIG_ESPTOOLPY_FLASHSIZE="2MB" 97 | CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y 98 | CONFIG_ESPTOOLPY_BEFORE_RESET=y 99 | # CONFIG_ESPTOOLPY_BEFORE_NORESET is not set 100 | CONFIG_ESPTOOLPY_BEFORE="default_reset" 101 | CONFIG_ESPTOOLPY_AFTER_RESET=y 102 | # CONFIG_ESPTOOLPY_AFTER_NORESET is not set 103 | CONFIG_ESPTOOLPY_AFTER="hard_reset" 104 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_CONSOLE is not set 105 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_9600B is not set 106 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_57600B is not set 107 | CONFIG_ESPTOOLPY_MONITOR_BAUD_115200B=y 108 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_230400B is not set 109 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_921600B is not set 110 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_2MB is not set 111 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER is not set 112 | CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER_VAL=115200 113 | CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 114 | # end of Serial flasher config 115 | 116 | # 117 | # Partition Table 118 | # 119 | CONFIG_PARTITION_TABLE_SINGLE_APP=y 120 | # CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set 121 | # CONFIG_PARTITION_TABLE_TWO_OTA is not set 122 | # CONFIG_PARTITION_TABLE_CUSTOM is not set 123 | CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" 124 | CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" 125 | CONFIG_PARTITION_TABLE_OFFSET=0x8000 126 | CONFIG_PARTITION_TABLE_MD5=y 127 | # end of Partition Table 128 | 129 | # 130 | # Compiler options 131 | # 132 | CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y 133 | # CONFIG_COMPILER_OPTIMIZATION_SIZE is not set 134 | # CONFIG_COMPILER_OPTIMIZATION_PERF is not set 135 | # CONFIG_COMPILER_OPTIMIZATION_NONE is not set 136 | CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y 137 | # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set 138 | # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set 139 | CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 140 | # CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set 141 | CONFIG_COMPILER_HIDE_PATHS_MACROS=y 142 | # CONFIG_COMPILER_CXX_EXCEPTIONS is not set 143 | # CONFIG_COMPILER_CXX_RTTI is not set 144 | CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y 145 | # CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set 146 | # CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set 147 | # CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set 148 | # CONFIG_COMPILER_WARN_WRITE_STRINGS is not set 149 | # CONFIG_COMPILER_DISABLE_GCC8_WARNINGS is not set 150 | # CONFIG_COMPILER_DUMP_RTL_FILES is not set 151 | # end of Compiler options 152 | 153 | # 154 | # Component config 155 | # 156 | 157 | # 158 | # Application Level Tracing 159 | # 160 | # CONFIG_APPTRACE_DEST_JTAG is not set 161 | CONFIG_APPTRACE_DEST_NONE=y 162 | CONFIG_APPTRACE_LOCK_ENABLE=y 163 | # end of Application Level Tracing 164 | 165 | # 166 | # ESP-ASIO 167 | # 168 | # CONFIG_ASIO_SSL_SUPPORT is not set 169 | # end of ESP-ASIO 170 | 171 | # 172 | # Bluetooth 173 | # 174 | # CONFIG_BT_ENABLED is not set 175 | CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=0 176 | CONFIG_BTDM_CTRL_PCM_ROLE_EFF=0 177 | CONFIG_BTDM_CTRL_PCM_POLAR_EFF=0 178 | CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=0 179 | CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=0 180 | CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0 181 | CONFIG_BTDM_CTRL_PINNED_TO_CORE=0 182 | CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF=1 183 | CONFIG_BT_CTRL_MODE_EFF=1 184 | CONFIG_BT_CTRL_BLE_MAX_ACT=10 185 | CONFIG_BT_CTRL_BLE_MAX_ACT_EFF=10 186 | CONFIG_BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB=0 187 | CONFIG_BT_CTRL_PINNED_TO_CORE=0 188 | CONFIG_BT_CTRL_HCI_TL=1 189 | CONFIG_BT_CTRL_ADV_DUP_FILT_MAX=30 190 | CONFIG_BT_CTRL_HW_CCA_EFF=0 191 | CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_EFF=0 192 | CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP=y 193 | CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM=100 194 | CONFIG_BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD=20 195 | CONFIG_BT_CTRL_BLE_SCAN_DUPL=y 196 | CONFIG_BT_CTRL_SCAN_DUPL_TYPE=0 197 | CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE=100 198 | CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EFF=0 199 | CONFIG_BT_CTRL_SLEEP_MODE_EFF=0 200 | CONFIG_BT_CTRL_SLEEP_CLOCK_EFF=0 201 | CONFIG_BT_CTRL_HCI_TL_EFF=1 202 | CONFIG_BT_RESERVE_DRAM=0 203 | CONFIG_BT_NIMBLE_USE_ESP_TIMER=y 204 | # end of Bluetooth 205 | 206 | # 207 | # CoAP Configuration 208 | # 209 | CONFIG_COAP_MBEDTLS_PSK=y 210 | # CONFIG_COAP_MBEDTLS_PKI is not set 211 | # CONFIG_COAP_MBEDTLS_DEBUG is not set 212 | CONFIG_COAP_LOG_DEFAULT_LEVEL=0 213 | # end of CoAP Configuration 214 | 215 | # 216 | # Driver configurations 217 | # 218 | 219 | # 220 | # ADC configuration 221 | # 222 | # CONFIG_ADC_FORCE_XPD_FSM is not set 223 | CONFIG_ADC_DISABLE_DAC=y 224 | # end of ADC configuration 225 | 226 | # 227 | # SPI configuration 228 | # 229 | # CONFIG_SPI_MASTER_IN_IRAM is not set 230 | CONFIG_SPI_MASTER_ISR_IN_IRAM=y 231 | # CONFIG_SPI_SLAVE_IN_IRAM is not set 232 | CONFIG_SPI_SLAVE_ISR_IN_IRAM=y 233 | # end of SPI configuration 234 | 235 | # 236 | # TWAI configuration 237 | # 238 | # CONFIG_TWAI_ISR_IN_IRAM is not set 239 | # CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC is not set 240 | # CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST is not set 241 | # CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID is not set 242 | # CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT is not set 243 | # end of TWAI configuration 244 | 245 | # 246 | # UART configuration 247 | # 248 | # CONFIG_UART_ISR_IN_IRAM is not set 249 | # end of UART configuration 250 | 251 | # 252 | # RTCIO configuration 253 | # 254 | # CONFIG_RTCIO_SUPPORT_RTC_GPIO_DESC is not set 255 | # end of RTCIO configuration 256 | 257 | # 258 | # GPIO Configuration 259 | # 260 | # CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set 261 | # end of GPIO Configuration 262 | # end of Driver configurations 263 | 264 | # 265 | # eFuse Bit Manager 266 | # 267 | # CONFIG_EFUSE_CUSTOM_TABLE is not set 268 | # CONFIG_EFUSE_VIRTUAL is not set 269 | # CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE is not set 270 | CONFIG_EFUSE_CODE_SCHEME_COMPAT_3_4=y 271 | # CONFIG_EFUSE_CODE_SCHEME_COMPAT_REPEAT is not set 272 | CONFIG_EFUSE_MAX_BLK_LEN=192 273 | # end of eFuse Bit Manager 274 | 275 | # 276 | # ESP-TLS 277 | # 278 | CONFIG_ESP_TLS_USING_MBEDTLS=y 279 | # CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set 280 | # CONFIG_ESP_TLS_SERVER is not set 281 | # CONFIG_ESP_TLS_PSK_VERIFICATION is not set 282 | # CONFIG_ESP_TLS_INSECURE is not set 283 | # end of ESP-TLS 284 | 285 | # 286 | # ESP32-specific 287 | # 288 | CONFIG_ESP32_REV_MIN_0=y 289 | # CONFIG_ESP32_REV_MIN_1 is not set 290 | # CONFIG_ESP32_REV_MIN_2 is not set 291 | # CONFIG_ESP32_REV_MIN_3 is not set 292 | CONFIG_ESP32_REV_MIN=0 293 | CONFIG_ESP32_DPORT_WORKAROUND=y 294 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set 295 | CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y 296 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set 297 | CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 298 | # CONFIG_ESP32_SPIRAM_SUPPORT is not set 299 | # CONFIG_ESP32_TRAX is not set 300 | CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 301 | # CONFIG_ESP32_ULP_COPROC_ENABLED is not set 302 | CONFIG_ESP32_ULP_COPROC_RESERVE_MEM=0 303 | CONFIG_ESP32_DEBUG_OCDAWARE=y 304 | CONFIG_ESP32_BROWNOUT_DET=y 305 | CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y 306 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set 307 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set 308 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set 309 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set 310 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set 311 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set 312 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set 313 | CONFIG_ESP32_BROWNOUT_DET_LVL=0 314 | CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y 315 | # CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set 316 | # CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set 317 | # CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set 318 | CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y 319 | # CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set 320 | # CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set 321 | # CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set 322 | CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 323 | CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 324 | CONFIG_ESP32_XTAL_FREQ_40=y 325 | # CONFIG_ESP32_XTAL_FREQ_26 is not set 326 | # CONFIG_ESP32_XTAL_FREQ_AUTO is not set 327 | CONFIG_ESP32_XTAL_FREQ=40 328 | # CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set 329 | # CONFIG_ESP32_NO_BLOBS is not set 330 | # CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set 331 | # CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set 332 | # CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set 333 | CONFIG_ESP32_DPORT_DIS_INTERRUPT_LVL=5 334 | # end of ESP32-specific 335 | 336 | # 337 | # ADC-Calibration 338 | # 339 | CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y 340 | CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y 341 | CONFIG_ADC_CAL_LUT_ENABLE=y 342 | # end of ADC-Calibration 343 | 344 | # 345 | # Common ESP-related 346 | # 347 | CONFIG_ESP_ERR_TO_NAME_LOOKUP=y 348 | # end of Common ESP-related 349 | 350 | # 351 | # Ethernet 352 | # 353 | CONFIG_ETH_ENABLED=y 354 | CONFIG_ETH_USE_ESP32_EMAC=y 355 | CONFIG_ETH_PHY_INTERFACE_RMII=y 356 | CONFIG_ETH_RMII_CLK_INPUT=y 357 | # CONFIG_ETH_RMII_CLK_OUTPUT is not set 358 | CONFIG_ETH_RMII_CLK_IN_GPIO=0 359 | CONFIG_ETH_DMA_BUFFER_SIZE=512 360 | CONFIG_ETH_DMA_RX_BUFFER_NUM=10 361 | CONFIG_ETH_DMA_TX_BUFFER_NUM=10 362 | CONFIG_ETH_USE_SPI_ETHERNET=y 363 | # CONFIG_ETH_SPI_ETHERNET_DM9051 is not set 364 | # CONFIG_ETH_SPI_ETHERNET_W5500 is not set 365 | # CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set 366 | # CONFIG_ETH_USE_OPENETH is not set 367 | # end of Ethernet 368 | 369 | # 370 | # Event Loop Library 371 | # 372 | # CONFIG_ESP_EVENT_LOOP_PROFILING is not set 373 | CONFIG_ESP_EVENT_POST_FROM_ISR=y 374 | CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y 375 | # end of Event Loop Library 376 | 377 | # 378 | # GDB Stub 379 | # 380 | # end of GDB Stub 381 | 382 | # 383 | # ESP HTTP client 384 | # 385 | CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y 386 | # CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set 387 | CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH=y 388 | # end of ESP HTTP client 389 | 390 | # 391 | # HTTP Server 392 | # 393 | CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 394 | CONFIG_HTTPD_MAX_URI_LEN=512 395 | CONFIG_HTTPD_ERR_RESP_NO_DELAY=y 396 | CONFIG_HTTPD_PURGE_BUF_LEN=32 397 | # CONFIG_HTTPD_LOG_PURGE_DATA is not set 398 | # CONFIG_HTTPD_WS_SUPPORT is not set 399 | # end of HTTP Server 400 | 401 | # 402 | # ESP HTTPS OTA 403 | # 404 | # CONFIG_OTA_ALLOW_HTTP is not set 405 | # end of ESP HTTPS OTA 406 | 407 | # 408 | # ESP HTTPS server 409 | # 410 | # CONFIG_ESP_HTTPS_SERVER_ENABLE is not set 411 | # end of ESP HTTPS server 412 | 413 | # 414 | # Hardware Settings 415 | # 416 | 417 | # 418 | # MAC Config 419 | # 420 | CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y 421 | CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y 422 | CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y 423 | CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y 424 | # CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set 425 | CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y 426 | CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 427 | # end of MAC Config 428 | 429 | # 430 | # Sleep Config 431 | # 432 | CONFIG_ESP_SLEEP_POWER_DOWN_FLASH=y 433 | # end of Sleep Config 434 | # end of Hardware Settings 435 | 436 | # 437 | # LCD and Touch Panel 438 | # 439 | # end of LCD and Touch Panel 440 | 441 | # 442 | # ESP NETIF Adapter 443 | # 444 | CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 445 | CONFIG_ESP_NETIF_TCPIP_LWIP=y 446 | # CONFIG_ESP_NETIF_LOOPBACK is not set 447 | CONFIG_ESP_NETIF_TCPIP_ADAPTER_COMPATIBLE_LAYER=y 448 | # end of ESP NETIF Adapter 449 | 450 | # 451 | # PHY 452 | # 453 | CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y 454 | # CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set 455 | CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 456 | CONFIG_ESP32_PHY_MAX_TX_POWER=20 457 | CONFIG_ESP32_REDUCE_PHY_TX_POWER=y 458 | # end of PHY 459 | 460 | # 461 | # Power Management 462 | # 463 | # CONFIG_PM_ENABLE is not set 464 | # end of Power Management 465 | 466 | # 467 | # ESP System Settings 468 | # 469 | # CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set 470 | CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y 471 | # CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set 472 | # CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set 473 | # CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set 474 | 475 | # 476 | # Memory protection 477 | # 478 | # end of Memory protection 479 | 480 | CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 481 | CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 482 | CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 483 | CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y 484 | # CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set 485 | # CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set 486 | CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 487 | CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 488 | CONFIG_ESP_CONSOLE_UART_DEFAULT=y 489 | # CONFIG_ESP_CONSOLE_UART_CUSTOM is not set 490 | # CONFIG_ESP_CONSOLE_NONE is not set 491 | CONFIG_ESP_CONSOLE_UART=y 492 | CONFIG_ESP_CONSOLE_MULTIPLE_UART=y 493 | CONFIG_ESP_CONSOLE_UART_NUM=0 494 | CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 495 | CONFIG_ESP_INT_WDT=y 496 | CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 497 | CONFIG_ESP_INT_WDT_CHECK_CPU1=y 498 | CONFIG_ESP_TASK_WDT=y 499 | # CONFIG_ESP_TASK_WDT_PANIC is not set 500 | CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 501 | CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y 502 | CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y 503 | CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 504 | CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y 505 | # CONFIG_ESP_PANIC_HANDLER_IRAM is not set 506 | # end of ESP System Settings 507 | 508 | # 509 | # High resolution timer (esp_timer) 510 | # 511 | # CONFIG_ESP_TIMER_PROFILING is not set 512 | CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y 513 | CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y 514 | CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 515 | CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 516 | # CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set 517 | # CONFIG_ESP_TIMER_IMPL_FRC2 is not set 518 | CONFIG_ESP_TIMER_IMPL_TG0_LAC=y 519 | # end of High resolution timer (esp_timer) 520 | 521 | # 522 | # Wi-Fi 523 | # 524 | CONFIG_ESP32_WIFI_ENABLED=y 525 | CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 526 | CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 527 | # CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set 528 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y 529 | CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 530 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 531 | # CONFIG_ESP32_WIFI_CSI_ENABLED is not set 532 | CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y 533 | CONFIG_ESP32_WIFI_TX_BA_WIN=6 534 | CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y 535 | CONFIG_ESP32_WIFI_RX_BA_WIN=6 536 | CONFIG_ESP32_WIFI_NVS_ENABLED=y 537 | CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y 538 | # CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set 539 | CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 540 | CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 541 | CONFIG_ESP32_WIFI_IRAM_OPT=y 542 | CONFIG_ESP32_WIFI_RX_IRAM_OPT=y 543 | CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y 544 | # CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set 545 | # CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set 546 | # end of Wi-Fi 547 | 548 | # 549 | # Core dump 550 | # 551 | # CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set 552 | # CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set 553 | CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y 554 | # end of Core dump 555 | 556 | # 557 | # FAT Filesystem support 558 | # 559 | # CONFIG_FATFS_CODEPAGE_DYNAMIC is not set 560 | CONFIG_FATFS_CODEPAGE_437=y 561 | # CONFIG_FATFS_CODEPAGE_720 is not set 562 | # CONFIG_FATFS_CODEPAGE_737 is not set 563 | # CONFIG_FATFS_CODEPAGE_771 is not set 564 | # CONFIG_FATFS_CODEPAGE_775 is not set 565 | # CONFIG_FATFS_CODEPAGE_850 is not set 566 | # CONFIG_FATFS_CODEPAGE_852 is not set 567 | # CONFIG_FATFS_CODEPAGE_855 is not set 568 | # CONFIG_FATFS_CODEPAGE_857 is not set 569 | # CONFIG_FATFS_CODEPAGE_860 is not set 570 | # CONFIG_FATFS_CODEPAGE_861 is not set 571 | # CONFIG_FATFS_CODEPAGE_862 is not set 572 | # CONFIG_FATFS_CODEPAGE_863 is not set 573 | # CONFIG_FATFS_CODEPAGE_864 is not set 574 | # CONFIG_FATFS_CODEPAGE_865 is not set 575 | # CONFIG_FATFS_CODEPAGE_866 is not set 576 | # CONFIG_FATFS_CODEPAGE_869 is not set 577 | # CONFIG_FATFS_CODEPAGE_932 is not set 578 | # CONFIG_FATFS_CODEPAGE_936 is not set 579 | # CONFIG_FATFS_CODEPAGE_949 is not set 580 | # CONFIG_FATFS_CODEPAGE_950 is not set 581 | CONFIG_FATFS_CODEPAGE=437 582 | CONFIG_FATFS_LFN_NONE=y 583 | # CONFIG_FATFS_LFN_HEAP is not set 584 | # CONFIG_FATFS_LFN_STACK is not set 585 | CONFIG_FATFS_FS_LOCK=0 586 | CONFIG_FATFS_TIMEOUT_MS=10000 587 | CONFIG_FATFS_PER_FILE_CACHE=y 588 | # CONFIG_FATFS_USE_FASTSEEK is not set 589 | # end of FAT Filesystem support 590 | 591 | # 592 | # Modbus configuration 593 | # 594 | CONFIG_FMB_COMM_MODE_TCP_EN=y 595 | CONFIG_FMB_TCP_PORT_DEFAULT=502 596 | CONFIG_FMB_TCP_PORT_MAX_CONN=5 597 | CONFIG_FMB_TCP_CONNECTION_TOUT_SEC=20 598 | CONFIG_FMB_COMM_MODE_RTU_EN=y 599 | CONFIG_FMB_COMM_MODE_ASCII_EN=y 600 | CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=150 601 | CONFIG_FMB_MASTER_DELAY_MS_CONVERT=200 602 | CONFIG_FMB_QUEUE_LENGTH=20 603 | CONFIG_FMB_PORT_TASK_STACK_SIZE=4096 604 | CONFIG_FMB_SERIAL_BUF_SIZE=256 605 | CONFIG_FMB_SERIAL_ASCII_BITS_PER_SYMB=8 606 | CONFIG_FMB_SERIAL_ASCII_TIMEOUT_RESPOND_MS=1000 607 | CONFIG_FMB_PORT_TASK_PRIO=10 608 | CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT=y 609 | CONFIG_FMB_CONTROLLER_SLAVE_ID=0x00112233 610 | CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20 611 | CONFIG_FMB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 612 | CONFIG_FMB_CONTROLLER_STACK_SIZE=4096 613 | CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20 614 | CONFIG_FMB_TIMER_PORT_ENABLED=y 615 | CONFIG_FMB_TIMER_GROUP=0 616 | CONFIG_FMB_TIMER_INDEX=0 617 | # CONFIG_FMB_TIMER_ISR_IN_IRAM is not set 618 | # end of Modbus configuration 619 | 620 | # 621 | # FreeRTOS 622 | # 623 | # CONFIG_FREERTOS_UNICORE is not set 624 | CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF 625 | CONFIG_FREERTOS_CORETIMER_0=y 626 | # CONFIG_FREERTOS_CORETIMER_1 is not set 627 | CONFIG_FREERTOS_HZ=100 628 | CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y 629 | # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set 630 | # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set 631 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y 632 | # CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set 633 | CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y 634 | CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 635 | CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y 636 | # CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE is not set 637 | # CONFIG_FREERTOS_ASSERT_DISABLE is not set 638 | CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2304 639 | CONFIG_FREERTOS_ISR_STACKSIZE=1536 640 | # CONFIG_FREERTOS_LEGACY_HOOKS is not set 641 | CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 642 | CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y 643 | # CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set 644 | CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 645 | CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 646 | CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 647 | CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 648 | # CONFIG_FREERTOS_USE_TRACE_FACILITY is not set 649 | # CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set 650 | CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y 651 | CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y 652 | # CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set 653 | # CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set 654 | CONFIG_FREERTOS_DEBUG_OCDAWARE=y 655 | # CONFIG_FREERTOS_FPU_IN_ISR is not set 656 | # end of FreeRTOS 657 | 658 | # 659 | # Hardware Abstraction Layer (HAL) and Low Level (LL) 660 | # 661 | CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y 662 | # CONFIG_HAL_ASSERTION_DISABLE is not set 663 | # CONFIG_HAL_ASSERTION_SILIENT is not set 664 | # CONFIG_HAL_ASSERTION_ENABLE is not set 665 | CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 666 | # end of Hardware Abstraction Layer (HAL) and Low Level (LL) 667 | 668 | # 669 | # Heap memory debugging 670 | # 671 | CONFIG_HEAP_POISONING_DISABLED=y 672 | # CONFIG_HEAP_POISONING_LIGHT is not set 673 | # CONFIG_HEAP_POISONING_COMPREHENSIVE is not set 674 | CONFIG_HEAP_TRACING_OFF=y 675 | # CONFIG_HEAP_TRACING_STANDALONE is not set 676 | # CONFIG_HEAP_TRACING_TOHOST is not set 677 | # CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set 678 | # end of Heap memory debugging 679 | 680 | # 681 | # jsmn 682 | # 683 | # CONFIG_JSMN_PARENT_LINKS is not set 684 | # CONFIG_JSMN_STRICT is not set 685 | # end of jsmn 686 | 687 | # 688 | # libsodium 689 | # 690 | # end of libsodium 691 | 692 | # 693 | # Log output 694 | # 695 | # CONFIG_LOG_DEFAULT_LEVEL_NONE is not set 696 | # CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set 697 | # CONFIG_LOG_DEFAULT_LEVEL_WARN is not set 698 | CONFIG_LOG_DEFAULT_LEVEL_INFO=y 699 | # CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set 700 | # CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set 701 | CONFIG_LOG_DEFAULT_LEVEL=3 702 | CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y 703 | # CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set 704 | # CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set 705 | CONFIG_LOG_MAXIMUM_LEVEL=3 706 | CONFIG_LOG_COLORS=y 707 | CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y 708 | # CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set 709 | # end of Log output 710 | 711 | # 712 | # LWIP 713 | # 714 | CONFIG_LWIP_LOCAL_HOSTNAME="espressif" 715 | # CONFIG_LWIP_NETIF_API is not set 716 | CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y 717 | # CONFIG_LWIP_L2_TO_L3_COPY is not set 718 | # CONFIG_LWIP_IRAM_OPTIMIZATION is not set 719 | CONFIG_LWIP_TIMERS_ONDEMAND=y 720 | CONFIG_LWIP_MAX_SOCKETS=10 721 | # CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set 722 | # CONFIG_LWIP_SO_LINGER is not set 723 | CONFIG_LWIP_SO_REUSE=y 724 | CONFIG_LWIP_SO_REUSE_RXTOALL=y 725 | # CONFIG_LWIP_SO_RCVBUF is not set 726 | # CONFIG_LWIP_NETBUF_RECVINFO is not set 727 | CONFIG_LWIP_IP4_FRAG=y 728 | CONFIG_LWIP_IP6_FRAG=y 729 | # CONFIG_LWIP_IP4_REASSEMBLY is not set 730 | # CONFIG_LWIP_IP6_REASSEMBLY is not set 731 | # CONFIG_LWIP_IP_FORWARD is not set 732 | # CONFIG_LWIP_STATS is not set 733 | # CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set 734 | CONFIG_LWIP_ESP_GRATUITOUS_ARP=y 735 | CONFIG_LWIP_GARP_TMR_INTERVAL=60 736 | CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 737 | CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y 738 | # CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set 739 | # CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set 740 | 741 | # 742 | # DHCP server 743 | # 744 | CONFIG_LWIP_DHCPS=y 745 | CONFIG_LWIP_DHCPS_LEASE_UNIT=60 746 | CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 747 | # end of DHCP server 748 | 749 | # CONFIG_LWIP_AUTOIP is not set 750 | CONFIG_LWIP_IPV6=y 751 | # CONFIG_LWIP_IPV6_AUTOCONFIG is not set 752 | CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 753 | # CONFIG_LWIP_IPV6_FORWARD is not set 754 | CONFIG_LWIP_IPV6_RDNSS_MAX_DNS_SERVERS=0 755 | # CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set 756 | CONFIG_LWIP_NETIF_LOOPBACK=y 757 | CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 758 | 759 | # 760 | # TCP 761 | # 762 | CONFIG_LWIP_MAX_ACTIVE_TCP=16 763 | CONFIG_LWIP_MAX_LISTENING_TCP=16 764 | CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y 765 | CONFIG_LWIP_TCP_MAXRTX=12 766 | CONFIG_LWIP_TCP_SYNMAXRTX=12 767 | CONFIG_LWIP_TCP_MSS=1440 768 | CONFIG_LWIP_TCP_TMR_INTERVAL=250 769 | CONFIG_LWIP_TCP_MSL=60000 770 | CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744 771 | CONFIG_LWIP_TCP_WND_DEFAULT=5744 772 | CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 773 | CONFIG_LWIP_TCP_QUEUE_OOSEQ=y 774 | # CONFIG_LWIP_TCP_SACK_OUT is not set 775 | # CONFIG_LWIP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set 776 | CONFIG_LWIP_TCP_OVERSIZE_MSS=y 777 | # CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set 778 | # CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set 779 | CONFIG_LWIP_TCP_RTO_TIME=1500 780 | # end of TCP 781 | 782 | # 783 | # UDP 784 | # 785 | CONFIG_LWIP_MAX_UDP_PCBS=16 786 | CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 787 | # end of UDP 788 | 789 | # 790 | # Checksums 791 | # 792 | # CONFIG_LWIP_CHECKSUM_CHECK_IP is not set 793 | # CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set 794 | CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y 795 | # end of Checksums 796 | 797 | CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 798 | CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y 799 | # CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set 800 | # CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set 801 | CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF 802 | # CONFIG_LWIP_PPP_SUPPORT is not set 803 | CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 804 | CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 805 | # CONFIG_LWIP_SLIP_SUPPORT is not set 806 | 807 | # 808 | # ICMP 809 | # 810 | CONFIG_LWIP_ICMP=y 811 | # CONFIG_LWIP_MULTICAST_PING is not set 812 | # CONFIG_LWIP_BROADCAST_PING is not set 813 | # end of ICMP 814 | 815 | # 816 | # LWIP RAW API 817 | # 818 | CONFIG_LWIP_MAX_RAW_PCBS=16 819 | # end of LWIP RAW API 820 | 821 | # 822 | # SNTP 823 | # 824 | CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 825 | CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 826 | # end of SNTP 827 | 828 | CONFIG_LWIP_ESP_LWIP_ASSERT=y 829 | 830 | # 831 | # Hooks 832 | # 833 | # CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set 834 | CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y 835 | # CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set 836 | CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y 837 | # CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set 838 | # CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set 839 | CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y 840 | # CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set 841 | # CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set 842 | CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y 843 | # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set 844 | # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set 845 | # end of Hooks 846 | 847 | # CONFIG_LWIP_DEBUG is not set 848 | # end of LWIP 849 | 850 | # 851 | # mbedTLS 852 | # 853 | CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y 854 | # CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set 855 | # CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set 856 | CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y 857 | CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 858 | CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 859 | # CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set 860 | # CONFIG_MBEDTLS_DEBUG is not set 861 | 862 | # 863 | # Certificate Bundle 864 | # 865 | CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y 866 | CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y 867 | # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set 868 | # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set 869 | # CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set 870 | # end of Certificate Bundle 871 | 872 | # CONFIG_MBEDTLS_ECP_RESTARTABLE is not set 873 | # CONFIG_MBEDTLS_CMAC_C is not set 874 | CONFIG_MBEDTLS_HARDWARE_AES=y 875 | CONFIG_MBEDTLS_HARDWARE_MPI=y 876 | CONFIG_MBEDTLS_HARDWARE_SHA=y 877 | CONFIG_MBEDTLS_ROM_MD5=y 878 | # CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set 879 | # CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set 880 | CONFIG_MBEDTLS_HAVE_TIME=y 881 | # CONFIG_MBEDTLS_HAVE_TIME_DATE is not set 882 | CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y 883 | CONFIG_MBEDTLS_SHA512_C=y 884 | CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y 885 | # CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set 886 | # CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set 887 | # CONFIG_MBEDTLS_TLS_DISABLED is not set 888 | CONFIG_MBEDTLS_TLS_SERVER=y 889 | CONFIG_MBEDTLS_TLS_CLIENT=y 890 | CONFIG_MBEDTLS_TLS_ENABLED=y 891 | 892 | # 893 | # TLS Key Exchange Methods 894 | # 895 | # CONFIG_MBEDTLS_PSK_MODES is not set 896 | CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y 897 | CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y 898 | CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y 899 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y 900 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y 901 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y 902 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y 903 | # end of TLS Key Exchange Methods 904 | 905 | CONFIG_MBEDTLS_SSL_RENEGOTIATION=y 906 | # CONFIG_MBEDTLS_SSL_PROTO_SSL3 is not set 907 | CONFIG_MBEDTLS_SSL_PROTO_TLS1=y 908 | CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y 909 | CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y 910 | # CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set 911 | CONFIG_MBEDTLS_SSL_ALPN=y 912 | CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y 913 | CONFIG_MBEDTLS_X509_CHECK_KEY_USAGE=y 914 | CONFIG_MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE=y 915 | CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y 916 | 917 | # 918 | # Symmetric Ciphers 919 | # 920 | CONFIG_MBEDTLS_AES_C=y 921 | # CONFIG_MBEDTLS_CAMELLIA_C is not set 922 | # CONFIG_MBEDTLS_DES_C is not set 923 | CONFIG_MBEDTLS_RC4_DISABLED=y 924 | # CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT is not set 925 | # CONFIG_MBEDTLS_RC4_ENABLED is not set 926 | # CONFIG_MBEDTLS_BLOWFISH_C is not set 927 | # CONFIG_MBEDTLS_XTEA_C is not set 928 | CONFIG_MBEDTLS_CCM_C=y 929 | CONFIG_MBEDTLS_GCM_C=y 930 | # CONFIG_MBEDTLS_NIST_KW_C is not set 931 | # end of Symmetric Ciphers 932 | 933 | # CONFIG_MBEDTLS_RIPEMD160_C is not set 934 | 935 | # 936 | # Certificates 937 | # 938 | CONFIG_MBEDTLS_PEM_PARSE_C=y 939 | CONFIG_MBEDTLS_PEM_WRITE_C=y 940 | CONFIG_MBEDTLS_X509_CRL_PARSE_C=y 941 | CONFIG_MBEDTLS_X509_CSR_PARSE_C=y 942 | # end of Certificates 943 | 944 | CONFIG_MBEDTLS_ECP_C=y 945 | CONFIG_MBEDTLS_ECDH_C=y 946 | CONFIG_MBEDTLS_ECDSA_C=y 947 | # CONFIG_MBEDTLS_ECJPAKE_C is not set 948 | CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y 949 | CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y 950 | CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y 951 | CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y 952 | CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y 953 | CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y 954 | CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y 955 | CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y 956 | CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y 957 | CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y 958 | CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y 959 | CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y 960 | CONFIG_MBEDTLS_ECP_NIST_OPTIM=y 961 | # CONFIG_MBEDTLS_POLY1305_C is not set 962 | # CONFIG_MBEDTLS_CHACHA20_C is not set 963 | # CONFIG_MBEDTLS_HKDF_C is not set 964 | # CONFIG_MBEDTLS_THREADING_C is not set 965 | # CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set 966 | # CONFIG_MBEDTLS_SECURITY_RISKS is not set 967 | # end of mbedTLS 968 | 969 | # 970 | # mDNS 971 | # 972 | CONFIG_MDNS_MAX_SERVICES=10 973 | CONFIG_MDNS_TASK_PRIORITY=1 974 | CONFIG_MDNS_TASK_STACK_SIZE=4096 975 | # CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set 976 | CONFIG_MDNS_TASK_AFFINITY_CPU0=y 977 | # CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set 978 | CONFIG_MDNS_TASK_AFFINITY=0x0 979 | CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000 980 | # CONFIG_MDNS_STRICT_MODE is not set 981 | CONFIG_MDNS_TIMER_PERIOD_MS=100 982 | # end of mDNS 983 | 984 | # 985 | # ESP-MQTT Configurations 986 | # 987 | CONFIG_MQTT_PROTOCOL_311=y 988 | CONFIG_MQTT_TRANSPORT_SSL=y 989 | CONFIG_MQTT_TRANSPORT_WEBSOCKET=y 990 | CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y 991 | # CONFIG_MQTT_MSG_ID_INCREMENTAL is not set 992 | # CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set 993 | # CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set 994 | # CONFIG_MQTT_USE_CUSTOM_CONFIG is not set 995 | # CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set 996 | # CONFIG_MQTT_CUSTOM_OUTBOX is not set 997 | # end of ESP-MQTT Configurations 998 | 999 | # 1000 | # Newlib 1001 | # 1002 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y 1003 | # CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set 1004 | # CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set 1005 | # CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set 1006 | # CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set 1007 | CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y 1008 | # CONFIG_NEWLIB_NANO_FORMAT is not set 1009 | # end of Newlib 1010 | 1011 | # 1012 | # NVS 1013 | # 1014 | # end of NVS 1015 | 1016 | # 1017 | # OpenSSL 1018 | # 1019 | # CONFIG_OPENSSL_DEBUG is not set 1020 | CONFIG_OPENSSL_ERROR_STACK=y 1021 | # CONFIG_OPENSSL_ASSERT_DO_NOTHING is not set 1022 | CONFIG_OPENSSL_ASSERT_EXIT=y 1023 | # end of OpenSSL 1024 | 1025 | # 1026 | # OpenThread 1027 | # 1028 | # CONFIG_OPENTHREAD_ENABLED is not set 1029 | # end of OpenThread 1030 | 1031 | # 1032 | # PThreads 1033 | # 1034 | CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 1035 | CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 1036 | CONFIG_PTHREAD_STACK_MIN=768 1037 | CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y 1038 | # CONFIG_PTHREAD_DEFAULT_CORE_0 is not set 1039 | # CONFIG_PTHREAD_DEFAULT_CORE_1 is not set 1040 | CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 1041 | CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" 1042 | # end of PThreads 1043 | 1044 | # 1045 | # SPI Flash driver 1046 | # 1047 | # CONFIG_SPI_FLASH_VERIFY_WRITE is not set 1048 | # CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set 1049 | CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y 1050 | CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y 1051 | # CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set 1052 | # CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set 1053 | # CONFIG_SPI_FLASH_USE_LEGACY_IMPL is not set 1054 | # CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set 1055 | # CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set 1056 | CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y 1057 | CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 1058 | CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 1059 | CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 1060 | # CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set 1061 | # CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set 1062 | # CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set 1063 | 1064 | # 1065 | # Auto-detect flash chips 1066 | # 1067 | CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y 1068 | CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y 1069 | CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y 1070 | CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y 1071 | # end of Auto-detect flash chips 1072 | 1073 | CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y 1074 | # end of SPI Flash driver 1075 | 1076 | # 1077 | # SPIFFS Configuration 1078 | # 1079 | CONFIG_SPIFFS_MAX_PARTITIONS=3 1080 | 1081 | # 1082 | # SPIFFS Cache Configuration 1083 | # 1084 | CONFIG_SPIFFS_CACHE=y 1085 | CONFIG_SPIFFS_CACHE_WR=y 1086 | # CONFIG_SPIFFS_CACHE_STATS is not set 1087 | # end of SPIFFS Cache Configuration 1088 | 1089 | CONFIG_SPIFFS_PAGE_CHECK=y 1090 | CONFIG_SPIFFS_GC_MAX_RUNS=10 1091 | # CONFIG_SPIFFS_GC_STATS is not set 1092 | CONFIG_SPIFFS_PAGE_SIZE=256 1093 | CONFIG_SPIFFS_OBJ_NAME_LEN=32 1094 | # CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set 1095 | CONFIG_SPIFFS_USE_MAGIC=y 1096 | CONFIG_SPIFFS_USE_MAGIC_LENGTH=y 1097 | CONFIG_SPIFFS_META_LENGTH=4 1098 | CONFIG_SPIFFS_USE_MTIME=y 1099 | 1100 | # 1101 | # Debug Configuration 1102 | # 1103 | # CONFIG_SPIFFS_DBG is not set 1104 | # CONFIG_SPIFFS_API_DBG is not set 1105 | # CONFIG_SPIFFS_GC_DBG is not set 1106 | # CONFIG_SPIFFS_CACHE_DBG is not set 1107 | # CONFIG_SPIFFS_CHECK_DBG is not set 1108 | # CONFIG_SPIFFS_TEST_VISUALISATION is not set 1109 | # end of Debug Configuration 1110 | # end of SPIFFS Configuration 1111 | 1112 | # 1113 | # TCP Transport 1114 | # 1115 | 1116 | # 1117 | # Websocket 1118 | # 1119 | CONFIG_WS_TRANSPORT=y 1120 | CONFIG_WS_BUFFER_SIZE=1024 1121 | # end of Websocket 1122 | # end of TCP Transport 1123 | 1124 | # 1125 | # TinyUSB 1126 | # 1127 | # end of TinyUSB 1128 | 1129 | # 1130 | # Unity unit testing library 1131 | # 1132 | CONFIG_UNITY_ENABLE_FLOAT=y 1133 | CONFIG_UNITY_ENABLE_DOUBLE=y 1134 | # CONFIG_UNITY_ENABLE_64BIT is not set 1135 | # CONFIG_UNITY_ENABLE_COLOR is not set 1136 | CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y 1137 | # CONFIG_UNITY_ENABLE_FIXTURE is not set 1138 | # CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set 1139 | # end of Unity unit testing library 1140 | 1141 | # 1142 | # Virtual file system 1143 | # 1144 | CONFIG_VFS_SUPPORT_IO=y 1145 | CONFIG_VFS_SUPPORT_DIR=y 1146 | CONFIG_VFS_SUPPORT_SELECT=y 1147 | CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y 1148 | CONFIG_VFS_SUPPORT_TERMIOS=y 1149 | 1150 | # 1151 | # Host File System I/O (Semihosting) 1152 | # 1153 | CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 1154 | CONFIG_VFS_SEMIHOSTFS_HOST_PATH_MAX_LEN=128 1155 | # end of Host File System I/O (Semihosting) 1156 | # end of Virtual file system 1157 | 1158 | # 1159 | # Wear Levelling 1160 | # 1161 | # CONFIG_WL_SECTOR_SIZE_512 is not set 1162 | CONFIG_WL_SECTOR_SIZE_4096=y 1163 | CONFIG_WL_SECTOR_SIZE=4096 1164 | # end of Wear Levelling 1165 | 1166 | # 1167 | # Wi-Fi Provisioning Manager 1168 | # 1169 | CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 1170 | CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 1171 | # end of Wi-Fi Provisioning Manager 1172 | 1173 | # 1174 | # Supplicant 1175 | # 1176 | CONFIG_WPA_MBEDTLS_CRYPTO=y 1177 | # CONFIG_WPA_WAPI_PSK is not set 1178 | # CONFIG_WPA_DEBUG_PRINT is not set 1179 | # CONFIG_WPA_TESTING_OPTIONS is not set 1180 | # CONFIG_WPA_WPS_STRICT is not set 1181 | # CONFIG_WPA_11KV_SUPPORT is not set 1182 | # end of Supplicant 1183 | # end of Component config 1184 | 1185 | # 1186 | # Compatibility options 1187 | # 1188 | # CONFIG_LEGACY_INCLUDE_COMMON_HEADERS is not set 1189 | # end of Compatibility options 1190 | 1191 | # Deprecated options for backward compatibility 1192 | CONFIG_TOOLPREFIX="xtensa-esp32-elf-" 1193 | # CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set 1194 | # CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set 1195 | # CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set 1196 | CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y 1197 | # CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set 1198 | # CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set 1199 | CONFIG_LOG_BOOTLOADER_LEVEL=3 1200 | # CONFIG_APP_ROLLBACK_ENABLE is not set 1201 | # CONFIG_FLASH_ENCRYPTION_ENABLED is not set 1202 | # CONFIG_FLASHMODE_QIO is not set 1203 | # CONFIG_FLASHMODE_QOUT is not set 1204 | CONFIG_FLASHMODE_DIO=y 1205 | # CONFIG_FLASHMODE_DOUT is not set 1206 | # CONFIG_MONITOR_BAUD_9600B is not set 1207 | # CONFIG_MONITOR_BAUD_57600B is not set 1208 | CONFIG_MONITOR_BAUD_115200B=y 1209 | # CONFIG_MONITOR_BAUD_230400B is not set 1210 | # CONFIG_MONITOR_BAUD_921600B is not set 1211 | # CONFIG_MONITOR_BAUD_2MB is not set 1212 | # CONFIG_MONITOR_BAUD_OTHER is not set 1213 | CONFIG_MONITOR_BAUD_OTHER_VAL=115200 1214 | CONFIG_MONITOR_BAUD=115200 1215 | CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y 1216 | # CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set 1217 | CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y 1218 | # CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set 1219 | # CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set 1220 | CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 1221 | # CONFIG_CXX_EXCEPTIONS is not set 1222 | CONFIG_STACK_CHECK_NONE=y 1223 | # CONFIG_STACK_CHECK_NORM is not set 1224 | # CONFIG_STACK_CHECK_STRONG is not set 1225 | # CONFIG_STACK_CHECK_ALL is not set 1226 | # CONFIG_WARN_WRITE_STRINGS is not set 1227 | # CONFIG_DISABLE_GCC8_WARNINGS is not set 1228 | # CONFIG_ESP32_APPTRACE_DEST_TRAX is not set 1229 | CONFIG_ESP32_APPTRACE_DEST_NONE=y 1230 | CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y 1231 | CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 1232 | CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 1233 | CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 1234 | CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 1235 | CONFIG_ADC2_DISABLE_DAC=y 1236 | # CONFIG_SPIRAM_SUPPORT is not set 1237 | CONFIG_TRACEMEM_RESERVE_DRAM=0x0 1238 | # CONFIG_ULP_COPROC_ENABLED is not set 1239 | CONFIG_ULP_COPROC_RESERVE_MEM=0 1240 | CONFIG_BROWNOUT_DET=y 1241 | CONFIG_BROWNOUT_DET_LVL_SEL_0=y 1242 | # CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set 1243 | # CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set 1244 | # CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set 1245 | # CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set 1246 | # CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set 1247 | # CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set 1248 | # CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set 1249 | CONFIG_BROWNOUT_DET_LVL=0 1250 | CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y 1251 | # CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set 1252 | # CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set 1253 | # CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set 1254 | # CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set 1255 | # CONFIG_NO_BLOBS is not set 1256 | # CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set 1257 | # CONFIG_EVENT_LOOP_PROFILING is not set 1258 | CONFIG_POST_EVENTS_FROM_ISR=y 1259 | CONFIG_POST_EVENTS_FROM_IRAM_ISR=y 1260 | # CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set 1261 | CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y 1262 | CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 1263 | CONFIG_ESP_SYSTEM_PD_FLASH=y 1264 | CONFIG_REDUCE_PHY_TX_POWER=y 1265 | # CONFIG_ESP32S2_PANIC_PRINT_HALT is not set 1266 | CONFIG_ESP32S2_PANIC_PRINT_REBOOT=y 1267 | # CONFIG_ESP32S2_PANIC_SILENT_REBOOT is not set 1268 | # CONFIG_ESP32S2_PANIC_GDBSTUB is not set 1269 | CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 1270 | CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 1271 | CONFIG_MAIN_TASK_STACK_SIZE=3584 1272 | CONFIG_CONSOLE_UART_DEFAULT=y 1273 | # CONFIG_CONSOLE_UART_CUSTOM is not set 1274 | # CONFIG_ESP_CONSOLE_UART_NONE is not set 1275 | CONFIG_CONSOLE_UART=y 1276 | CONFIG_CONSOLE_UART_NUM=0 1277 | CONFIG_CONSOLE_UART_BAUDRATE=115200 1278 | CONFIG_INT_WDT=y 1279 | CONFIG_INT_WDT_TIMEOUT_MS=300 1280 | CONFIG_INT_WDT_CHECK_CPU1=y 1281 | CONFIG_TASK_WDT=y 1282 | # CONFIG_TASK_WDT_PANIC is not set 1283 | CONFIG_TASK_WDT_TIMEOUT_S=5 1284 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y 1285 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y 1286 | CONFIG_IPC_TASK_STACK_SIZE=1024 1287 | CONFIG_TIMER_TASK_STACK_SIZE=3584 1288 | # CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set 1289 | # CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set 1290 | CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y 1291 | CONFIG_MB_MASTER_TIMEOUT_MS_RESPOND=150 1292 | CONFIG_MB_MASTER_DELAY_MS_CONVERT=200 1293 | CONFIG_MB_QUEUE_LENGTH=20 1294 | CONFIG_MB_SERIAL_TASK_STACK_SIZE=4096 1295 | CONFIG_MB_SERIAL_BUF_SIZE=256 1296 | CONFIG_MB_SERIAL_TASK_PRIO=10 1297 | CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT=y 1298 | CONFIG_MB_CONTROLLER_SLAVE_ID=0x00112233 1299 | CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 1300 | CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 1301 | CONFIG_MB_CONTROLLER_STACK_SIZE=4096 1302 | CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 1303 | CONFIG_MB_TIMER_PORT_ENABLED=y 1304 | CONFIG_MB_TIMER_GROUP=0 1305 | CONFIG_MB_TIMER_INDEX=0 1306 | # CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set 1307 | CONFIG_TIMER_TASK_PRIORITY=1 1308 | CONFIG_TIMER_TASK_STACK_DEPTH=2048 1309 | CONFIG_TIMER_QUEUE_LENGTH=10 1310 | # CONFIG_L2_TO_L3_COPY is not set 1311 | # CONFIG_USE_ONLY_LWIP_SELECT is not set 1312 | CONFIG_ESP_GRATUITOUS_ARP=y 1313 | CONFIG_GARP_TMR_INTERVAL=60 1314 | CONFIG_TCPIP_RECVMBOX_SIZE=32 1315 | CONFIG_TCP_MAXRTX=12 1316 | CONFIG_TCP_SYNMAXRTX=12 1317 | CONFIG_TCP_MSS=1440 1318 | CONFIG_TCP_MSL=60000 1319 | CONFIG_TCP_SND_BUF_DEFAULT=5744 1320 | CONFIG_TCP_WND_DEFAULT=5744 1321 | CONFIG_TCP_RECVMBOX_SIZE=6 1322 | CONFIG_TCP_QUEUE_OOSEQ=y 1323 | # CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set 1324 | CONFIG_TCP_OVERSIZE_MSS=y 1325 | # CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set 1326 | # CONFIG_TCP_OVERSIZE_DISABLE is not set 1327 | CONFIG_UDP_RECVMBOX_SIZE=6 1328 | CONFIG_TCPIP_TASK_STACK_SIZE=3072 1329 | CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y 1330 | # CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set 1331 | # CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set 1332 | CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF 1333 | # CONFIG_PPP_SUPPORT is not set 1334 | CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 1335 | CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 1336 | CONFIG_ESP32_PTHREAD_STACK_MIN=768 1337 | CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y 1338 | # CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set 1339 | # CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set 1340 | CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 1341 | CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" 1342 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y 1343 | # CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set 1344 | # CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set 1345 | CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y 1346 | CONFIG_SUPPORT_TERMIOS=y 1347 | CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 1348 | CONFIG_SEMIHOSTFS_HOST_PATH_MAX_LEN=128 1349 | # End of deprecated options 1350 | --------------------------------------------------------------------------------