Optimisation mémoire bluetoothSerial.h esp32

Bonjour;
Récemment j'ai commencé un gros projet et jusqu'à maintenant je n'avais jamais été confronté à des problèmes de place. Lorsque je voulus est utilisé la librairie BluetoothSerial.h dans mon projet, j'ai eu le message d'erreur suivant :

Le croquis utilise 1433861 octets (109%) de l'espace de stockage de programmes. Le maximum est de 1310720 octets.
Les variables globales utilisent 50740 octets (15%) de mémoire dynamique, ce qui laisse 276940 octets pour les variables locales. Le maximum est de 327680 octets.
text section exceeds available space in board
Sketch too big; see https://support.arduino.cc/hc/en-us/articles/360013825179 for tips on reducing it.
Erreur de compilation pour la carte ESP32 Dev Module

En faisant des tests j'ais pus constaté que pour le simple code :

#include <BluetoothSerial.h>

BluetoothSerial bt;

void setup() {
  bt.begin("mon nom");
}

void loop() {
  if (bt.available()) {
    String reception = "";
    while (bt.available()) {
      reception += char(bt.read());
    }

    bt.println("J'ai reçu : " + reception);
    Serial.println("J'ai reçu : " + reception);
  }
}

J'utilise déjà 76% de l'espace programme. Ce qui est un peu embêtant pour moi étant donné que je veux encore ajouter de nombreuses fonctionnalités.

J'ai tenté d'éditer cette bibliothèque mais malheureusement je me suis vite perdu dans le code, j'aimerais donc savoir si quelqu'un serait prêt à m'aider pour faire une version plus light de cette librairie sachant que je n'utilise que les fonctions du programme ci-dessus.

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Jetez un oeil ici

Bonsoir

Si pas d'optimisation en vue , un contournement possible en renonçant à la fonctionnalité OTA et à SPIFFS

Le croquis utilise 1433861 octets (109%) de l'espace de stockage de programmes. Le maximum est de 1310720 octets.

Remarque : les 13110720 octets représentent le tiers de la mémoire Flash implantée sur la carte, les 2/3 étant affectés a autre chose que le code actif

En compilant ce programme avec le choix 'Huge App' dans 'Partition Scheme' ce code , sans cure d'amaigrissement, n'occupe plus que 31% de la mémoire Flash disponible

Pour aller plus loin changer de carte pour une proposant davantage de mémoire Flash 8MB ou 16MB au lieu de 4MB. ... sous réserve de la possibilité sous IDE ARduino d'exploiter cet espace supplémentaire, il faut peut être 'mettre les mains dans le cambouis'

(Il existe sur le marché une grande variété de cartes à base d'ESP32 et , sauf exception, la mémoire Flash est extérieure à l'ESP32))

Merci beaucoup, je viens de regarder. Effectivement il me paraît plus simple de me passer de l'OTA et de SPIFFS qui ne me servent pas, j'avais lu un truc à propos d'enlever le boot loader mais je ne savais pas trop comment faire. Avec cette technique, pas besoin de s'embêter avec un programmateur, je ne suis plus qu'à 45% de la mémoire utilisé.
Aussi en lisant le topic sur esp32.com, j'aimerais savoir s'il était possible de modifier la variable ARDUHAL_LOG_LEVEL du compilateur seulement pour une librairie (pour des cas extrêmes d'optimisation) ?

Bonsoir

Le fil de discussion a ét lancée avec, dans le viseur, le Bluetooth classique

Dans le cas du BLE avec ESP32 , l'utilsation de la libairie NimBLE en remplacement de la librairie BLE initiale pour ESP32 permet d'obtenir un gain susbtantiel tant en espace mémoire Flash qu'en espace de RAM !!

ci dessous l'exemple UART compilé avec les deux librairies

librairie BLE initiale :

Utilisation de la bibliothèque ESP32 BLE Arduino version 2.0.0 dans le dossier: /home/al/.arduino15/packages/esp32/hardware/esp32/2.0.5/libraries/BLE 
/home/al/.arduino15/packages/esp32/tools/riscv32-esp-elf-gcc/gcc8_4_0-esp-2021r2-patch3/bin/riscv32-esp-elf-size -A /tmp/arduino-sketch-38B0B6032D81DD655D6ACC7E63EB4B58/BLE_uart_OK_LOLIN.ino.elf
Le croquis utilise 918388 octets (29%) de l'espace de stockage de programmes. Le maximum est de 3145728 octets.
Les variables globales utilisent 32940 octets (10%) de mémoire dynamique, ce qui laisse 294740 octets pour les variables locales. Le maximum est de 327680 octets.

avec NimBLE :

Utilisation de la bibliothèque NimBLE-Arduino version 1.4.1 dans le dossier: /home/al/Arduino/libraries/NimBLE-Arduino 
/home/al/.arduino15/packages/esp32/tools/riscv32-esp-elf-gcc/gcc8_4_0-esp-2021r2-patch3/bin/riscv32-esp-elf-size -A /tmp/arduino-sketch-4D057FAEE83B0C86AC36C77FFDD60916/NimBLE_uart.ino.elf
Le croquis utilise 463070 octets (14%) de l'espace de stockage de programmes. Le maximum est de 3145728 octets.
Les variables globales utilisent 18676 octets (5%) de mémoire dynamique, ce qui laisse 309004 octets pour les variables locales. Le maximum est de 327680 octets.

50% de moins en Flash et en RAM :slightly_smiling_face:

autres avantages de la librairie NimBLE :
-son développement parait actif
-prise en charge du Bluetooth 5