1717#include " soc/spi_reg.h"
1818#include < soc/efuse_reg.h>
1919
20+ #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(4, 0, 0)
21+ #include " esp_chip_info.h" // esp-idf v4.4.x
22+ #else
23+ #include " esp_system.h" // esp-idf v3.x
24+ #endif
25+
2026#if CONFIG_IDF_TARGET_ESP32
2127#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(4, 0, 0)
2228 #include " esp32/rom/spi_flash.h"
@@ -163,7 +169,9 @@ typedef struct {
163169 case 3 :
164170 if (single_core) { return F (" ESP32-S0WD-OEM" ); } // Max 160MHz, Single core, QFN 5*5, Xiaomi Yeelight
165171 else { return F (" ESP32-D0WD-OEM" ); } // Max 240MHz, Dual core, QFN 5*5
166- case 4 : return F (" ESP32-U4WDH" ); // Max 160MHz, Single core, QFN 5*5, 4MB embedded flash, ESP32-MINI-1, ESP32-DevKitM-1
172+ case 4 :
173+ if (single_core) { return F (" ESP32-U4WDH-S" ); } // Max 160MHz, Single core, QFN 5*5, 4MB embedded flash, ESP32-MINI-1, ESP32-DevKitM-1
174+ else { return F (" ESP32-U4WDH-D" ); } // Max 240MHz, Dual core, QFN 5*5, 4MB embedded flash
167175 case 5 :
168176 if (rev3) { return F (" ESP32-PICO-V3" ); } // Max 240MHz, Dual core, LGA 7*7, ESP32-PICO-V3-ZERO, ESP32-PICO-V3-ZERO-DevKit
169177 else { return F (" ESP32-PICO-D4" ); } // Max 240MHz, Dual core, LGA 7*7, 4MB embedded flash, ESP32-PICO-KIT
@@ -295,11 +303,14 @@ String my_GetDeviceHardwareRevision(void) {
295303
296304 esp_chip_info_t chip_info;
297305 esp_chip_info (&chip_info);
298- char revision[10 ] = { 0 };
306+ char revision[24 ] = { 0 };
299307 if (chip_info.revision ) {
300- snprintf_P (revision, sizeof (revision), PSTR (" rev.%d" ) , chip_info.revision );
308+ snprintf_P (revision, sizeof (revision), PSTR (" rev.%d (0x%x) " ), chip_info. revision , chip_info.revision );
301309 }
302310 result += revision; // ESP32-C3 rev.3
311+ #if CONFIG_ESP32_ECO3_CACHE_LOCK_FIX
312+ result += soc_has_cache_lock_bug () ? F (" , chip has cache lock bug" ) : F (" , free of cache lock bug" );
313+ #endif
303314
304315 return result;
305316}
@@ -318,12 +329,17 @@ static void my_show_chip_info(void) {
318329#if 0
319330 Serial.println("ESP Chip Info:");
320331 switch ((int)my_info.model) {
321- case (int)CHIP_ESP32: Serial.print("ESP32 "); break;
322- case 2: Serial.print("ESP32-S2 "); break;
323- case 9: Serial.print("ESP32-S3 "); break;
324- case 5: Serial.print("ESP32-C3 "); break;
325- case 6: Serial.print("ESP32-H2 "); break;
332+ case 1: Serial.print("ESP32 "); break;
333+ case 2: Serial.print("ESP32-S2 "); break;
334+ case 9: Serial.print("ESP32-S3 "); break;
335+ case 5: Serial.print("ESP32-C3 "); break;
336+ case 6: Serial.print("ESP32-H2/H4 "); break; // ESP-IFD 4.x
326337 case 12: Serial.print("ESP32-C2 "); break;
338+ case 13: Serial.print("ESP32-C6 "); break;
339+ case 16: Serial.print("ESP32-H2 "); break; // ESP-IFD 5.x
340+ case 17: Serial.print("ESP32-C5 beta3 "); break;
341+ case 18: Serial.print("ESP32-P4 "); break;
342+ case 999: Serial.print("POSIX/Linux simulator "); break;
327343 default: Serial.print("(unknown) 0x"); Serial.print((int)my_info.model, HEX); Serial.print(" "); break;
328344 }
329345 Serial.print(" Rev ");
@@ -394,6 +410,7 @@ static void my_show_chip_info(void) {
394410// reason > 6 = user-defined reason codes
395411#endif
396412
413+ #if 0 // duplicate - this info is also printed by getCoreResetReason()
397414void my_print_reset_reason(int reason)
398415{
399416 Serial.print(reason);
@@ -449,7 +466,7 @@ void my_verbose_print_reset_reason(int reason)
449466 default : Serial.print ("other "); Serial.print(reason);
450467 }
451468}
452-
469+ # endif
453470
454471/*
455472 * parts below were created by softhack007, licenced under GPL v3.0
@@ -461,7 +478,7 @@ void show_psram_info_part1(void)
461478 // if (esp_spiram_is_initialized() == false) esp_spiram_init();
462479 Serial.println (psramFound () ? " ESP32 PSRAM: found." : " ESP32 PSRAM: not found!" );
463480 if (!psramFound ()) return ;
464- psramInit ();
481+ // psramInit(); // already doe by arduino framework
465482
466483 // the next part only works on "classic" ESP32
467484 #if !defined(CONFIG_IDF_TARGET_ESP32S3) && !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
@@ -527,19 +544,23 @@ void show_psram_info_part2(void)
527544void showRealSpeed () {
528545 // Serial.begin(115200);
529546 Serial.flush ();
530- Serial.println (F (" \n ====================================" ));
531- Serial.print ( F (" Chip info for " )); Serial.println (ESP.getChipModel ());
547+ Serial.println (F (" \n " ));
548+ for (int aa=0 ; aa<65 ; aa++) Serial.print (" =" ); Serial.println ();
549+ #if 0 // duplicate - same info is printed in wled.cpp
550+ Serial.print( F("Chip info for ")); Serial.print(ESP.getChipModel());
551+ Serial.print(F(", ")); Serial.print(ESP.getChipCores()); Serial.print(F(" core(s)"));
552+ Serial.print(F(", ")); Serial.print(ESP.getCpuFreqMHz()); Serial.println(F("MHz."));
553+ #endif
554+ Serial.print ( F (" ESP32 device: " )); Serial.println (my_GetDeviceHardwareRevision ());
532555 Serial.print ( F (" SDK: " )); Serial.println (ESP.getSdkVersion ());
533- Serial.println (F (" ------------------------------------\n " ));
556+ for (int aa=0 ; aa<42 ; aa++) Serial.print (" -" ); Serial.println ();
557+
558+ my_show_chip_info ();
534559
535560 Serial.print (" XTAL FREQ: " ); Serial.print (getXtalFrequencyMhz ()); Serial.println (" MHz" );
536561 Serial.print (" APB FREQ: " ); Serial.print (getApbFrequency () / 1000000.0 , 1 ); Serial.println (" MHz" );
537562 Serial.print (" CPU FREQ: " ); Serial.print (getCpuFrequencyMhz ()); Serial.println (" MHz\n " );
538-
539- Serial.print (" ESP32 DEVICE: " ); Serial.print (my_GetDeviceHardwareRevision ());
540- Serial.print (F (" , " )); Serial.print (ESP.getChipCores ()); Serial.print (F (" core(s)" ));
541- Serial.print (F (" , " )); Serial.print (ESP.getCpuFreqMHz ()); Serial.println (F (" MHz.\n " ));
542- my_show_chip_info ();
563+ for (int aa=0 ; aa<42 ; aa++) Serial.print (" -" ); Serial.println (" \n " );
543564
544565 Serial.print (" FLASH CHIP FREQ (magic): " ); Serial.print (ESP.getFlashChipSpeed ()/1000000.0 , 1 ); Serial.println (" MHz" );
545566 Serial.print (" FLASH SIZE (magic byte): " ); Serial.print (ESP.getFlashChipSize () / (1024.0 * 1024 ), 2 ); Serial.println (" MB" );
@@ -553,7 +574,7 @@ void showRealSpeed() {
553574 Serial.print (" FLASH REAL SIZE: " ); Serial.print (my_ESP_getFlashChipRealSize () / (1024.0 * 1024 ), 2 ); Serial.println (" MB" );
554575 Serial.print (" FLASH REAL MODE: " ); Serial.println (my_ESP_getFlashChipMode ());
555576
556- Serial.println ( F ( " \n ------------------------------------ " ) );
577+ for ( int aa= 0 ; aa< 42 ; aa++) Serial.print ( " - " ); Serial. println ( );
557578 Serial.flush ();
558579 Serial.print ( " RAM HEAP SIZE: " ); Serial.print (ESP.getHeapSize () / 1024.0 , 2 ); Serial.println (" KB" );
559580 Serial.print ( " FREE RAM: " ); Serial.print (ESP.getFreeHeap () / 1024.0 , 2 ); Serial.println (" KB" );
@@ -573,6 +594,7 @@ void showRealSpeed() {
573594 Serial.flush ();
574595#endif
575596
597+ #if 0 // duplicate - this info is also printed by getCoreResetReason()
576598 Serial.println();
577599 Serial.print("CPU #0 - last reset reason = ");
578600 my_print_reset_reason(rtc_get_reset_reason(0)); Serial.print("\t => ");
@@ -584,8 +606,9 @@ void showRealSpeed() {
584606 my_verbose_print_reset_reason(rtc_get_reset_reason(1));
585607 Serial.println();
586608 }
609+ #endif
587610
588- Serial.println ( F ( " ==================================== \n " ) );
611+ for ( int aa= 0 ; aa< 42 ; aa++) Serial.print ( " = " ); Serial. println ( " \n " );
589612 Serial.flush ();
590613}
591614
0 commit comments