[Résolu] Taille du programme en fonction des librairies choisies

Bonjour,

J'ai remarqué une différence de taille de mon sketch après compilation si j'utilise la libraire EEPROM de avr ou celle de arduino. Je passe de 28474 (avec avr) à 28508 bytes (avec arduino).

Savez-vous pourquoi il y a cette différence ?

Bonjour,

Shain:
J’ai remarqué une différence de taille de mon sketch après compilation si j’utilise la libraire EEPROM de avr ou celle de arduino.
Je passe de 28474 (avec avr) à 28508 bytes (avec arduino).

Savez-vous pourquoi il y a cette différence ?

C’est trés simple, la librairie EEPROM arduino est écrite en C++ avec une classe “EEPROMClass” appelant les fonctions de la librairie EEPROM AVR.
Cela ajoute donc une portion de code en plus pour la création / gestion de l’objet C++.

La librairie EEPROM AVR utilise les registres directement elle est donc plus légère que la version arduino avec une couche de C++ par dessus :wink:

Pour donner une petite idée de l’inutilité de la librairie EEPROM arduino voici son code complet :

#include <avr/eeprom.h>
#include "Arduino.h"
#include "EEPROM.h"

uint8_t EEPROMClass::read(int address)
{
	return eeprom_read_byte((unsigned char *) address);
}

void EEPROMClass::write(int address, uint8_t value)
{
	eeprom_write_byte((unsigned char *) address, value);
}

EEPROMClass EEPROM;

C’est à ce demander si une simple macro #define n’aura pas suffit …

Bonjour,

Ok, merci :) Tu m'avais dit avant que les librairies en C++ prennent plus de place en fait.. j'avais zappé.. J'ai vu le code de la librairie arduino, c'est vrai qu'il n'y a pas vraiment d'utilité..

Qui plus est la "librairie" Wiring/Arduino, (c'est de l'héritage mot à mot de Wiring), ne retient que l'écriture/lecture octet par octet alors que les fonctions de l'avr-libc proposent en plus l'écriture/lecture par "mot" (2 octets) et par bloc (N octets).