Loading...
Pages: [1]   Go Down
Author Topic: [Résolu] Taille du programme en fonction des librairies choisies  (Read 337 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
« Last Edit: August 20, 2012, 09:55:17 am by Shain » Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 4351
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
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 smiley-wink

Pour donner une petite idée de l'inutilité de la librairie EEPROM arduino voici son code complet :
Code:
#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 ...
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Ok, merci smiley
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é..
Logged

France S-O ou exil en IDF
Offline Offline
Edison Member
*
Karma: 12
Posts: 1074
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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).
Logged

Aides toi et la communauté t'aidera

Pages: [1]   Go Up
Print
 
Jump to: