Croquis vide mais obèse

Bonjour
Je débute avec une carte Arduino UNO R4 Wifi. Je m'appuie sur le livre Arduino 3ème édition pour apprendre et je commence donc par le tout début, le fameux sketch blink. Je le compile avec l'IDE Arduino et le livre me montre une capture d'écran du résultat de la compilation. Le croquis devrait utiliser 928 octets mais chez moi il en utilise 52224 ! Je trouve que ça fait beaucoup pour faire clignoter une loupiote.

Dans le doute, j'ai compilé un croquis vide et il utilise 52176 octets (voir capture)


Je ne comprends pas mais je me dis que soit mon compilateur (arduino builder 1.6.1) a un problème, soit l'IDE embarque des "trucs" sans me le dire.
Avez-vous une idée ?

Très probable et ce pour améliorer "l'expérience utilisateur' selon le jargon en vogue :wink:
Le compilateur a compilé tout ce qui lui a été demandé de compiler.

Que donne par comparaison la compilation pour une UNO R4 sans WiFI ?

Je n'ai pas de carte UNO R4 sans Wifi.
J'ai indiqué à l'IDE une carte UNO R4 Minima et le croquis vide dégonfle un peu à 38780 octets mais c'est encore beaucoup ...

si tu demandes à l'IDE de montrer en détail les messages de compilation tu verras passer plein de choses...

Soit le livre n'utilise pas la même version de l'IDE, soit les options sont différentes. As-tu des détails ?

le livre montre probablement une compilation pour carte UNO R3

Effectivement le livre utilise la version 1.8.3 de l'IDE et une carte Arduino Uno R3

Chez moi, avec l'IDE 2.3.4 et une carte Arduino Uno Wifi, j'obtiens pour un sketch vide :

Sketch uses 444 bytes (1%) of program storage space. Maximum is 32256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.

Mais ce n'est peut-être pas la même carte ?

C'est logique : pas besoin du Wifi pour la loupiote... :grin:

la UNO R4 WiFi a un microcontrolleur ARM + un ESP32-S3 qui assure en plus de WiFI et BL + la fonction d'interface UART-USB, ça charge le binaire compilé

Comment demander à l'IDE de montrer en détail les messages de compilation ?

Menu Fichier/Préférences, une case à cocher, du moins dans un IDE 2.x, avant aussi si mes souvenirs sont bons

J'ai indiqué à l'IDE une carte Arduino Uno et je passe aussi à 444 octets.
OK donc je comprends que pour un même sketch, la nature de la carte a un impact sur le contenu compilé. Je suis surpris de ce principe, je pensais que je pourrais maîtriser la compilation à l'aide des includes. Si le compilateur fait des trucs dans mon dos, il va falloir que je sois plus méfiant :thinking:

ou confiant :wink:

Effectivement, option très intéressante permettant de mieux comprendre ce qui est embarqué à la compilation. Merci

Je serai confiant quand j'aurai compris comment ça fonctionne :grinning:
Pour l'instant, j'apprends donc je doute de tout

Merci à tous pour vos retours rapides.

Non tu n'a pas besoin d'être méfiant, si tu avais dû coder la même chose sur une Uno R3 auquel tu aurais ajouter manuellement un ESP32, tu aurais bien dû faire le code pour et ajouter les librairies nécessaires.
C'est ce qu'appel @al1fch améliorer l'expérience utilisateur, qui sans ça complexifierais nettement l'écriture de programme sur l'environnement Arduino et donc te permet de faire des choses relativement complexe avec uniquement quelques lignes de code.

Personnellement cette logique me pose problème. Je suis sans doute un vieux c*n mais J'ai commencé à développer des programmes il y a 30 ans. A l'époque on avait besoin de quelques octets pour afficher "bonjour" sur un écran. Aujourd'hui avec les langages de développement évolués censés améliorer cette fameuse expérience utilisateur, il faut plusieurs Mo si on n'est pas vigilant à toutes les librairies embarquées qui ne servent à rien.
On a exactement le même phénomène avec les applications smartphones devenues totalement obèses parce que les développeurs n'en ont plus rien à faire de l'espace occupé par les programmes. Ca contribue inutilement à l'obsolescence du matériel qui doit sans cesse être changé pour absorber des programmes toujours plus gloutons en espace, en capacité de calcul et finalement en énergie.
En tout cas, je vois bien à travers cette petite démonstration qu'un croquis vide peut passer de 444 octets à 52176 octets. Pour ma part, je resterai "vigilant" à défaut d'être méfiant :wink:

Chacun sa logique, la tienne n'est pas illogique ou C. :slight_smile:

Je suis aussi de la veille "école", j'ai commencé il y a un peu plus de 30 ans aussi.
Oui, mais ces même langage permettent en même temps à des non initier de piloter leur poulier et de voir sur leur smartphone à l'autre bout du monde, combien d'œufs leur poule on pondue.
On pourrait te rétorqué pourquoi prendre une carte avec une connexion WIFI et un processeur pour afficher bonjour sur un écran ?

Oui, le développeur est feignant, il ne fait des efforts que si il est obligé, effectivement.
Par contre je ne pense pas que l'obsolescence ne soit dû qu'a ce phénomène.
Ce qui prends le plus de place sur un smartphone, sont les données utilisateur.
De même ce qui prends le plus de CPU, est moins la non optimisation des algos, que tous les filtres temps réels pour modifier le flux vidéos.

C'est ton choix effectivement, mais si tu as pris une R4 wifi, je ne suis pas sûre qu'un programme pour R3, fonctionne sur une R4 et si tu à pris une R4 wifi, je suppose c'est que tu as des projets sans fil, donc tu devrais vite retourné à 50k.

Après rien ne t'empêche de retourner en arrière et de faire ton propre makefile et de linker uniquement ce que tu décide de linker.
Mais franchement, je ne suis pas sûr que le jeu en vaut la chandel?