Kein Abspielen von mp3 || Fehlermeldung: Not enough memory to allocate mp3decoder buffers

Hallo zusammen,

ich habe mal wieder ein Problem, bei dem ich hier um Hilfe bitte.
Ich habe einen esp32-wrover-e.
Link: https://de.aliexpress.com/item/1005006532544391.html

Ich kann einen Sketch kompilieren und flashen. Ich kann mir auch über eine Konfigurationskarte beispielsweise die Zeit ansagen lassen. Beim Abspielen von Musik bekomme ich aber die Fehlermeldung „MP3Decoder_AllocateBuffers(): not enough memory to allocate mp3decoder buffers“. Offensichtlich ist der Speicher nicht korrekt allokiert (PSRAM?)?

Ich gehe davon aus, dass es mit dem Build zusammenhängt.
In der platformio.ini habe ich folgende Build-Informationen für den WROVER-E eingefügt. Ich vermute, dass diese falsch sind. Leider bin ich auch nach unzähligen Versuchen nicht auf die Lösung gekommen :frowning: Hat jemand eine Idee?

Viele Grüße
Björn

Platformio.ini:
[…]
[env:esp-wrover-kit]

platform = espressif32

board = esp-wrover-kit

; change microcontroller

board_build.mcu = esp32

; change MCU frequency

board_build.f_cpu = 240000000L

Ausgabe über Konsole:


| ____| / __| | _ \ _ _ () _ __ __

_
| | _ \ | |) | | | | | | | | ’ \ / _
| |___ ) | | __/ | || | | | | | | | | () |
|
__| |/ || _,| || || || _/
Rfid-controlled musicplayer

N [250] Software-revision: 20231104-1
N [250] Git-revision: 894c6d8-dirty
N [250] Arduino version: 2.0.14
N [261] ESP-IDF version: 4.4.6
N [261] Wakeup was not caused by deepsleep: 0
N [261] Versuche SD-Karte im SD_MMC-Modus (1 Bit) zu mounten…
D [271] SD card type: SDHC
N [272] SD-Kartengröße / freier Speicherplatz: 30250 MB / 30237 MB
I [283] FTP-User wurde aus NVS geladen: esp32
I [284] FTP-Passwort wurde aus NVS geladen: esp32
E (280) gpio: GPIO can only be used as input mode
[ 285][E][esp32-hal-gpio.c:130] __pinMode(): GPIO config failed
D [391] RFID-Tags koennen jetzt gescannt werden…
I [392] Hostname aus NVS geladen: ESPuino
N [394] SSID 0 von NVS geladen: XYZ
N [553] Versuche mit WLAN ‚XYZ‘ zu verbinden…
D [602] Freier Heap-Speicher nach Setup-Routine: 110376
D [603] PSRAM: 0 bytes
D [603] Flash-size: 4194304 bytes
N [1222] RFID-Karte erkannt: da-a2-5c-1a
I [1222] RFID-Karte empfangen: 218162092026
D [1230] Freier Speicher: 105628 Bytes
N [1230] Playlist-Generierung
I [1230] Dateimodus erkannt.
N [1231] Modus: Einzelner Track
N [1241] Neue Playlist mit 1 Titel(n) empfangen
D [1241] Free heap: 107080
E (1239) sdmmc_cmd: sdmmc_read_sectors_dma: sdmmc_send_cmd returned 0x109
E (1240) diskio_sdmmc: sdmmc_read_blocks failed (265)
[ 1248][E][vfs_api.cpp:301] VFSFileImpl(): fopen(/sdcard/System Volume Information/002 Es tanzt ein Bi Ba Butzemann.mp3) failed
E [1259] Datei oder Verzeichnis existiert nicht: /System Volume Information/002 Es tanzt ein Bi Ba Butzemann.mp3
N [1270] Ende der Playlist erreicht.
N [1301] HTTP-Server gestartet.
N [1309] Verbunden mit WLAN ‚MyNido1191‘ (Signalstärke: -55 dBm, Kanal: 1, MAC-Adresse: // MAC-Adresse)
N [1309] Aktuelle IP: /// IP-Adresse XYZ
N [1321] Synchronisiere Uhrzeit via NTP…
N [1360] mDNS gestartet: http://ESPuino.local
N [3742] Datum/Uhrzeit empfangen von NTP-Server: 09.04.2024, 15:20:07
D [19026] logo request
D [19188] ws[/ws][1] connect
D [25660] Partition nvs found, 262144 bytes
E (25690) sdmmc_cmd: sdmmc_read_sectors_dma: sdmmc_send_cmd returned 0x109
E (25690) diskio_sdmmc: sdmmc_read_blocks failed (265)
E (25691) sdmmc_cmd: sdmmc_read_sectors_dma: sdmmc_send_cmd returned 0x107
E (25697) diskio_sdmmc: sdmmc_read_blocks failed (263)
N [31338] RFID-Karte erkannt: da-a2-5c-1a
I [31338] RFID-Karte empfangen: 218162092026
D [31345] Gebe Speicher der alten Playlist frei (Freier Speicher: 74000 Bytes)
D [31345] Freier Speicher nach Aufräumen: 74140 Bytes
E (31353) sdmmc_req: handle_idle_state_events unhandled: 00000008 00000002
D [31359] Freier Speicher: 69772 Bytes
N [31359] Playlist-Generierung
I [31369] Dateimodus erkannt.
N [31370] Modus: Einzelner Track
N [31372] Neue Playlist mit 1 Titel(n) empfangen
D [31372] Free heap: 74104
I [31374] info : PSRAM not found, inputBufferSize: 13951 bytes
I [31385] info : buffers freed, free Heap: 58088 bytes
I [31385] info : Reading file: „/003_MUSIK.mp3“
[ 31400][E][mp3_decoder.cpp:1555] MP3Decoder_AllocateBuffers(): not enough memory to allocate mp3decoder buffers
I [31400] info : The MP3Decoder could not be initialized
I [31411] info : Closing audio file
N [31411] Ende der Playlist erreicht.

PSRAM wird nicht verwendet. Wenn der benutzt werden soll, muss die passende Direktive im Profil hinzugefügt werden:

Edit: Ich habe mir erlaubt, das Tracking aus deinem Link oben zu entfernen :slight_smile:

Noch ein kurzer Zusatz, du brauchst für den PSRAM Zeile 100 bis 102 (102 ist ein „convenience“, aber 101 ist wichtig, wenn du einen alten ESP32 step erwischt haben solltest).

Hallo,

ich hab jetzt den PSRAM eingefügt, kompiliert und geflasht. Der ESP32 hängt aber jetzt in einer Dauer-Reset-Schleife. Leider komme ich einfach nicht weiter.
Habt ihr eine Idee?

E (736) esp_core_dump_flash: Core dump flash config is corrupted! CRC=0x7bd5c66f instead of 0x0
Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x3b (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1344
load:0x40078000,len:14464
load:0x40080400,len:3652
entry 0x400805f0
E (579) esp_core_dump_flash: No core dump partition found!
E (579) esp_core_dump_flash: No core dump partition found!
I [91] Maximale Inaktivitätszeit wurde aus NVS geladen: 10 Minuten
I [91] Initiale Lautstärke wurde aus NVS geladen: 3
E [92] Maximale Lautstärke für Lautsprecher wurde ins NVS geschrieben.
E [103] Maximale Lautstärke für Kopfhörer wurde ins NVS geschrieben.
I [103] Maximale Lautstärke wurde gesetzt auf: 21
I [165] Initiale LED-Helligkeit wurde aus NVS geladen: 16
I [166] LED-Helligkeit für Nachtmodus wurde aus NVS geladen: 2

 _____   ____    ____            _
| ____| / ___|  |  _ \   _   _  (_)  _ __     ___
|  _|   \__  \  | |_) | | | | | | | | '_ \   / _ \
| |___   ___) | |  __/  | |_| | | | | | | | | (_) |
|_____| |____/  |_|      \__,_| |_| |_| |_|  \___/
         Rfid-controlled musicplayer


N [232] Software-revision: 20231104-1
N [232] Git-revision: 894c6d8-dirty
N [232] Arduino version: 2.0.14
N [242] ESP-IDF version: 4.4.6
N [243] Wakeup was not caused by deepsleep: 0
N [243] Versuche SD-Karte im SD_MMC-Modus (1 Bit) zu mounten...
D [253] SD card type: SDHC
N [253] SD-Kartengröße / freier Speicherplatz: 30250 MB / 30237 MB
[   264][E][Preferences.cpp:483] getString(): nvs_get_str len fail: ftpuser NOT_FOUND
[   264][E][Preferences.cpp:273] putString(): nvs_set_str fail: ftpuser INVALID_STATE
E [269] FTP-User wurde ins NVS geschrieben.
[   280][E][Preferences.cpp:483] getString(): nvs_get_str len fail: ftppassword NOT_FOUND
[   281][E][Preferences.cpp:273] putString(): nvs_set_str fail: ftppassword INVALID_STATE
E [289] FTP-Passwort wurde ins NVS geschrieben.
E (296) gpio: GPIO can only be used as input mode
[   300][E][esp32-hal-gpio.c:130] __pinMode(): GPIO config failed
D [404] RFID-Tags koennen jetzt gescannt werden...
[   404][E][Preferences.cpp:202] putUInt(): nvs_set_u32 fail: enableWifi INVALID_STATE
[   405][E][Preferences.cpp:483] getString(): nvs_get_str len fail: Hostname NOT_FOUND
I [413] Hostname aus NVS geladen:
[   423][E][Preferences.cpp:503] getBytesLength(): nvs_get_blob len fail: SAVED_WIFIS NOT_FOUND
[   427][E][WiFiGeneric.cpp:684] wifiLowLevelInit(): esp_wifi_init 4363
[   431][E][WiFiGeneric.cpp:684] wifiLowLevelInit(): esp_wifi_init 4363
[   437][E][Preferences.cpp:483] getString(): nvs_get_str len fail: LAST_SSID NOT_FOUND
[   445][E][WiFiGeneric.cpp:684] wifiLowLevelInit(): esp_wifi_init 4363
D [451] Freier Heap-Speicher nach Setup-Routine: 180428
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x401d4787  PS      : 0x00060c30  A0      : 0x801d4b07  A1      : 0x3ffb2190
A2      : 0xfffffffc  A3      : 0x401d4b48  A4      : 0x3ffb21f4  A5      : 0x3ffb2210
A6      : 0xfffffffc  A7      : 0x00000001  A8      : 0x00000000  A9      : 0x3ffb2090  
A10     : 0x00000000  A11     : 0x0000000a  A12     : 0x00000001  A13     : 0xffffffff
A14     : 0x00000008  A15     : 0x3ffb1ea0  SAR     : 0x00000004  EXCCAUSE: 0x0000001c  
EXCVADDR: 0x00000000  LBEG    : 0x4008c0ce  LEND    : 0x4008c0d9  LCOUNT  : 0x00000000


Backtrace: 0x401d4784:0x3ffb2190 0x401d4b04:0x3ffb21b0 0x401d4b9d:0x3ffb21d0 0x40141da2:0x3ffb21f0 0x40129742:0x3ffb2230 0x400e4817:0x3ffb2270 0x4012a192:0x3ffb2290

  #0  0x401d4784:0x3ffb2190 in block_size at C:\Users\bjoer\.platformio\packages\framework-espidf@3.40406.240122\components\heap/heap_tlsf_block_functions.h:74 (discriminator 4)
      (inlined by) block_is_last at C:\Users\bjoer\.platformio\packages\framework-espidf@3.40406.240122\components\heap/heap_tlsf_block_functions.h:85 (discriminator 4)   
      (inlined by) tlsf_walk_pool at C:\Users\bjoer\.platformio\packages\framework-espidf@3.40406.240122\components\heap/heap_tlsf.c:641 (discriminator 4)
  #1  0x401d4b04:0x3ffb21b0 in multi_heap_get_info_impl at C:\Users\bjoer\.platformio\packages\framework-espidf@3.40406.240122\components\heap/multi_heap.c:400
  #2  0x401d4b9d:0x3ffb21d0 in multi_heap_get_info at C:\Users\bjoer\.platformio\packages\framework-espidf@3.40406.240122\components\heap/multi_heap_poisoning.c:371       
  #3  0x40141da2:0x3ffb21f0 in heap_caps_get_info at C:\Users\bjoer\.platformio\packages\framework-espidf@3.40406.240122\components\heap/heap_caps.c:556
  #4  0x40129742:0x3ffb2230 in EspClass::getPsramSize() at C:/Users/bjoer/.platformio/packages/framework-arduinoespressif32/cores/esp32/Esp.cpp:158
  #5  0x400e4817:0x3ffb2270 in setup() at src/main.cpp:220
  #6  0x4012a192:0x3ffb2290 in loopTask(void*) at C:/Users/bjoer/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:42




ELF file SHA256: 116bce85605623c2

E (736) esp_core_dump_flash: Core dump flash config is corrupted! CRC=0x7bd5c66f instead of 0x0
Rebooting...
ets Jun  8 2016 00:22:57

Auszug aus platformio.ini

[env:esp-wrover-kit]
platform = espressif32
board = esp-wrover-kit
; change microcontroller
board_build.mcu = esp32

; change MCU frequency
board_build.f_cpu = 240000000L
build_flags = ${env.build_flags}
              -DBOARD_HAS_PSRAM
              -mfix-esp32-psram-cache-issue
              -DHAL=99

@laszloh Du benutzt doch das TTGO T8, oder? Oder auf jeden Fall ein Board mit PSRAM und 4 MB Flash.
Hast du da noch was angepasst?

Evt. helfen noch diese Einträge in platform.ini:

board_upload.maximum_size = 8388608
board_upload.flash_size = 8MB
board_build.partitions = default_8MB.csv 

build_flags = -DBOARD_HAS_PSRAM

Falls Du das PSRAM nicht an den Start bekommst (was schade wäre):

Der aktuelle DEV-Branch kann MP3’s wieder ohne zusätzliches PSRAM abspielen, wäre auch ein Versuch wert…

Ist die Frage, ob das Board 8 MB Flash hat. Vielleicht sind’s auch 8 MB PSRAM.

1 „Gefällt mir“

Nein, ich habe sonst nichts anpassen müssen, ich verwende 4MB mit einer custom OTA Partition (siehe hier), aber das hat keine Auswirkung auf den ESPuino.

@bjoern der Fehler ist sehr überraschend, vor allem dass es ohne PSRAM geht, mit aber nicht. Kannst du dein Pinout und wenn du hast, Schaltplan posten (du verwendest ja ein custom Board laut -DHAL=99)? Um zu schauen, dass wir nicht ein HW-problem in der SW suchen, GPIO12 (darf kein PD haben), GPIO16 (PSRAM CS) oder GPIO17 (PSRAM CLK) dürfen nicht verwendet werden bei einem WROVER.

Weitere Ideen von mir um den Fehler einzuschränken („nein“ bedeutet der Fehler tritt nicht auf):

  • hast du das Board schon verbaut? Wenn ja, tritt der Fehler auch mit dem nackten Board auf? (nein → HW Problem)
  • Hast du ein 2. Board zum Testen? Wenn ja, zeigen beide den gleichen Fehler? (nein → Modul Problem)
  • Teste mal mit ttgo_t8 als board auf main, mit dem nackten Board? (nein → custom Pinout Problem → poste bitte pinout file)
  • Teste mit default settings auf main? (nein → Settings Problem → poste bitte settings.h / diff)
  • Teste mal mit der Dev-Branch (nein → vllt. RAM schmierer in der main-Branch)
  • Die beiden Tests von vorher nur auf der dev

ich sollte vielleicht eine Flow-Chart dafür zeichnen :smiley:

3 „Gefällt mir“