Pages: [1]   Go Down
Author Topic: Taille maxi d'un sketch ? (blocage sketch)  (Read 1125 times)
0 Members and 1 Guest are viewing this topic.
Cergy
Offline Offline
Full Member
***
Karma: 0
Posts: 137
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous,
je rencontre un pb dans l'exécution d'un sketch: il bloque lors de l'exécution, dès les premières séquences  :-[.
Je m'en rend compte car je fais des Serial.print sur le port série (je suis au stade du debug), et seuls les 2 premiers s'affichent, et après, plus rien ne se passe.

Si je retire quelques lignes à mon sketch, le déroulement est nominal.
Les lignes supprimées n'apportent rien: ce sont 4 serial.print.

Dans l'IDE, la compilation sans ces 4 lignes me donnent un sketch de 20706 octets tandis qu'avec les 4 lignes, j'ai un sketch de 20792 octets.

Il me reste donc théoriquement 10Ko.

L'IDE donne t-elle la taille exacte, y compris les include et les tailles de tableaux (statiques dans mon cas, mais de type float) ?

Quelles optimisations puis-je faire ?  smiley-grin

« Last Edit: December 19, 2010, 11:05:45 am by vincelge » Logged

Tous les jours, je roule en Electrique
Arretons de polluer !

Moi & mon Ardu

0
Offline Offline
Newbie
*
Karma: 0
Posts: 22
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est pas plutôt au niveau de la mémoire volatile que ça ne passe pas ? C'est limité à 2Ko pour le Uno par exemple, on y arrive vite !

Ce n'est pas parce que ton tableau est static qu'il ne sera pas en ram. Cela veut dire que la variable sera disponible tout le temps quand tu rentreras de nouveau dans le bloc où tu l'as déclarée. Quelle taille (en octets) fait ton tableau ?

Eventuellement, tu peux partager ton code ?

— QNux

« Last Edit: December 20, 2010, 03:21:13 pm by QNux » Logged

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

J'ai jamais vérifié mais est-ce que l'IDE prend en compte les librairies ?
Logged


Cergy
Offline Offline
Full Member
***
Karma: 0
Posts: 137
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir,
d'après ce que j'ai pu constaté, les librairies sont bien comptabilisées.
En ce qui concerne l'occupation en RAM, c'est tout à fait possible, il faudrait que je compte en fonction de mes variables.
Par facilité (je n'avais pas trop envie de me plonger dans les tableaux de structure), j'avais déclaré un tableau de float à 2 dimensions (20x7) alors que seules 2 des 7 données étaient en float. J'ai depuis repris cette partie, en ne conservant que 2 float et le reste en int.

Par contre, mon soucis ne se produisait pas en augmentant le nombre de données, mais en ajoutant des lignes de code.
Une séquence de Serial.print entraine une augmentation de l'occupation en RAM ? Si oui, de combien ?
Logged

Tous les jours, je roule en Electrique
Arretons de polluer !

Moi & mon Ardu

0
Offline Offline
Newbie
*
Karma: 0
Posts: 22
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quand tu fais un serial.print, ça copie la chaîne à envoyer dans un buffer, après je ne sais pas si il est dédié et séparé de la SRAM ou non. Il y avait beaucoup de caractères dans les chaînes ?

— QNux
Logged

Cergy
Offline Offline
Full Member
***
Karma: 0
Posts: 137
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

une dizaine tout au plus, dans chacun des 4 Serial.print.
« Last Edit: December 24, 2010, 10:05:37 am by vincelge » Logged

Tous les jours, je roule en Electrique
Arretons de polluer !

Moi & mon Ardu

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

Tu ne peux pas nous envoyer les fameuses lignes de code en question ? Comme ça on pourrait tester de notre côté.
Logged


Cergy
Offline Offline
Full Member
***
Karma: 0
Posts: 137
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ca va venir ... smiley-wink
Je pense cependant que la taille des variables y était pour quelque chose: depuis que je suis passé d'un tableau en float à un en int, ça passe.
Par contre, je ne sais pas où ça bloquait (en RAM ou ailleurs).
Toujours est-il que j'ai "largement" dépassé les 20k aujourd'hui (mon sketch doit être à 23k)
Logged

Tous les jours, je roule en Electrique
Arretons de polluer !

Moi & mon Ardu

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

salut,
 d'expérience je peux te dire que le serialprint à la en veux tu en voilà font planter les arduino, j'ai entendu dire qu'il fallait régulièrement utiliser une fonction flush, afin de purger les sérial print.
Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

Cergy
Offline Offline
Full Member
***
Karma: 0
Posts: 137
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah ?
Faudra que je rejette un oeil à la doc, je pensais que le flush concernait le buffer en réception.
Logged

Tous les jours, je roule en Electrique
Arretons de polluer !

Moi & mon Ardu

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

a confirmer car g un prg qui me fait le cout aussi actuellement
« Last Edit: December 28, 2010, 12:42:55 pm by FP24V » Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

Pages: [1]   Go Up
Jump to: