Go Down

Topic: Taille maxi d'un sketch ? (blocage sketch) (Read 1 time) previous topic - next topic

vincelge

Dec 19, 2010, 05:04 pm Last Edit: Dec 19, 2010, 05:05 pm by vincelge Reason: 1
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 ?  :D

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

Moi & mon Ardu

QNux

#1
Dec 20, 2010, 09:19 pm Last Edit: Dec 20, 2010, 09:21 pm by QNux Reason: 1
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


B@tto

J'ai jamais vérifié mais est-ce que l'IDE prend en compte les librairies ?
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

vincelge

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 ?
Tous les jours, je roule en Electrique
Arretons de polluer !

Moi & mon Ardu

QNux

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

vincelge

#5
Dec 24, 2010, 04:03 pm Last Edit: Dec 24, 2010, 04:05 pm by vincelge Reason: 1
une dizaine tout au plus, dans chacun des 4 Serial.print.
Tous les jours, je roule en Electrique
Arretons de polluer !

Moi & mon Ardu

B@tto

Tu ne peux pas nous envoyer les fameuses lignes de code en question ? Comme ça on pourrait tester de notre côté.
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

vincelge

Ca va venir ... ;)
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)
Tous les jours, je roule en Electrique
Arretons de polluer !

Moi & mon Ardu

FP24V

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.
2 ans d'absence et tout à réapprendre.
Heureusement, je ne savais pas grand chose.

vincelge

Ah ?
Faudra que je rejette un oeil à la doc, je pensais que le flush concernait le buffer en réception.
Tous les jours, je roule en Electrique
Arretons de polluer !

Moi & mon Ardu

FP24V

#10
Dec 28, 2010, 06:42 pm Last Edit: Dec 28, 2010, 06:42 pm by FP24V Reason: 1
a confirmer car g un prg qui me fait le cout aussi actuellement
2 ans d'absence et tout à réapprendre.
Heureusement, je ne savais pas grand chose.

Go Up