Pages: [1] 2   Go Down
Author Topic: Davantage de mémoire Arduino Leonardo ?  (Read 1358 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut à tous,

Je déboule nouvellement dans l'univers de l'Arduino, c'est bien stylé, et merci encore à Skywodd pour ses tutos du tonnerre !

Alors voilà, j'ai récemment fait l'acquisition d'un Arduino Leonardo tout neuf, avec un Ethernet Shield rev3.

Niveau software, je constate que j'ai environ 28Ko d'espace dans l'Arduino pour stocker mon sketch.

Alors ça se passe où tout ça ? RAM, EEPROM ?

Ensuite, 28Ko c'est... Peu. J'ai regardé un peu sur les internets et ce même forum, des shields de RAM par ci, des PROGMEM par là, et d'autres techniques du pauvre pour grapiller quelques octets à droite à gauche.
Sérieusement, y a pas un moyen de gagner une bonne tranche de mémoire ? Même un shield, ou un truc à brancher. >Tecchniquement je maitrise un minimum les électroniques, mais si je peux éviter de souder des trucs partout pour un résultat bancal, ça m'arrangerait bien !


Voilà merci à vous de sauver ma vie de noob  smiley

A plus !
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3735
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

28 ko c'est la mémoire flash, celle où est stocké le "code". Une fois programmée elle ne bouge plus. La RAM permet de manipuler temporairement des données (variables etc ...) et s'efface dès qu'elle n'est plus alimentée (un RESET quoi). Le préfixe const d'une déclaration, permet de stocker la variable dans la mémoire flash, alors que si tu ne l'utilises pas elle sera stocké dans la RAM (mais sera modifiable). L'EEPROM est une mémoire pour stocker des variables durablement, elle est programmable par le code. Par exemple : tu as un four commandé par arduino avec un écran LCD, l'utilisateur peut régler dessus les paramètre de régulation. Il faut que ces paramètres soit maintenu même si on débranche la prise, et qu'on ait pas non plus à rebrancher le four au pc dès qu'on veut faire une manip. C'est la que l'EEPROM entre en jeu.
Logged


Rennes
Offline Offline
Sr. Member
****
Karma: 1
Posts: 314
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Faut pas oublier qu'il ne s'agit que de micro-contrôleurs 8 bits aux ressources limitées.
Les programmes sont stockées dans la flash de l'AVR.
Dans la Leonardo il y a 32 KO de Flash dont 4 KO occupés par le bootloader
2.5KO de RAM et  1KO d'EEPROM.

Faut programmer économe et optimisé  smiley-mr-green

Sinon t'as des cartes plus performantes embarquant un vrai Linux genre Raspberry Pi ou BeagleBoard.

L'avantage principal de l'Arduino c'est qu'il est très facile d'accès pour les néophytes et relativement bon marché.
Logged


IDF/SO
Offline Offline
Edison Member
*
Karma: 41
Posts: 2273
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Faut programmer économe et optimisé  smiley-mr-green

Faut prendre exemple sur Microsoft ? 
Bon, d'accord  [] -->
Logged

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

Effectivement B@tto, merci pour l'explication ! C'est bien la mémoire flash que je souhaite agrandir !

Faut pas oublier qu'il ne s'agit que de micro-contrôleurs 8 bits aux ressources limitées.
[...]
Faut programmer économe et optimisé  smiley-mr-green
Ceci dit avec 3 lignes de code on peut épuiser le microcontroleur 10 fois plus qu'avec 100Mo de programme, tout dépend de ce qu'on demande smiley Si je veux faire du traitement qui recquiert beaucoup de conditions et de tests booleans, je prends beaucoup de place dans la mémoire flash pour finalement un traitement assez facile pour l'Arduino !
Surtout si je switche sur 2 shields en même temps ! smiley-grin

Donc on ne peut pas vraiment étendre cette mémoire ...?
Logged

IDF/SO
Offline Offline
Edison Member
*
Karma: 41
Posts: 2273
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Recherches la différence entre un microprocesseur et un micro-contrôleur ainsi que sur les architectures internes des deux (Von Neuman et Harward) et tu comprendra la réponse de B@tto.

Un micro-controleur n'est pas conçu pour faire de la grosse programmation mais pour être au plus du matériel.
Il ne fait pas ce que fait un microprocesseur mais il fait des choses qu'un microprocesseur ne sait pas faire.

PS avec 32k de mémoire l'ATMega328p est déjà considéré comme un "gros" microcontrôleur.
Logged

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

Je connais la difference entre micro controleur et microprocesseur smiley

Le traitement simple auquel je pense est largement a la porté d'un Arduino.

Bien qu'il soit consideré comme gros, le Due a 512Ko, c'est quand même 20 fois plus gros que le Leonardo, même si ca n'est pas la même bete, je parle simplement de davantage de memoire flash !
Logged

IDF/SO
Offline Offline
Edison Member
*
Karma: 41
Posts: 2273
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ben où est le problème alors ?
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3735
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Et puis bien souvent c'est la RAM qui est problématique, avant que tu arrives à remplir les 28 ko de flash ...
Logged


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

Ben où est le problème alors ?
Je cherche à avoir plus de mémoire flash, je demande s'il y a un moyen simple de dépasser les 28Ko.

Et puis bien souvent c'est la RAM qui est problématique, avant que tu arrives à remplir les 28 ko de flash ...
Pas pour les petits trucs que je fais, c'est à dire du traitement basique avec beaucoup de lecture/écriture, et carte SD pour les vrais stockages, très peu de variables  smiley
28Ko de flash ça se remplit vite quand on manipule l'Ethernet shield en weblient /webserver et qu'en plus on joue avec un LCD, et puis on ne sait jamais, dans des projets futurs.
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3735
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Enfin dans les cas que tu évoques (et comme je le disais avant) c'est la RAM qui est problématique.
Logged


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

Je ne connais pas exactement le fonctionnement du codage pour Arduino niveau hardware, d'autant plus que la compilation est assez particulière (de ce qu'on m'en a dit), mais à priori créer et détruire rapidement des variables passe correctement même avec la RAM limitée dont je dispose, enfin d'après les tests que j'ai fait jusque là.

Le seul problème que j'ai en pleine face pour l'heure c'est surtout que mon code est vraiment limité en taille en lui même, donc, de ce que j'en ai compris, par la mémoire flash, les 28Ko en question, non ?
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3735
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est ça. Il ya la mega sinon avec 256 KB
Logged


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

D'accord donc il faut se baser sur la mémoire flash de la carte à l'achat et c'est tout ? Merci pour vos réponses en tout cas ! smiley
Logged

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

Bonjour,

En gros pour résumer ma vision de la chose :
J'ai fait passer un synthétiseur chiptune 100% codé en C orienté objets dans un ATtiny45 (4Ko de flash, 512 octets de RAM).
Commentaire compris le code fait 2600 lignes, ça laisse matière à réfléchir.

28Ko de flash et +2Ko de RAM c'est la richesse tu peut me croire smiley-wink
À l'heure actuelle j'ai eu un seul et unique projet qui ne soit pas passer en flash sur une UNO (prog d'interface graphique , pas assez de place pour les bitmaps).
Si tu sait coder propre et en minimisant ton empreinte mémoire tu peut faire ce que tu veut avec 28Ko de flash.
C'est la RAM qui pose souvent le plus de problème ...

Après si t'est tétu -> STM32F4 discovery, 1Mo de flash, 256Ko de RAM, cpu ARM 32bits à 168MHz.
Si t'arrive à mettre à genou ce monstre de puissance (embarqué) c'est que ton application n'est soit pas bien pensé, soit pas faite pour tourner sur un µC embarqué smiley-wink
Logged

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

Pages: [1] 2   Go Up
Jump to: