Stacksize [Forums - HC12 et S12]
Stacksize [Forums - HC12 et S12]
Pseudo Pass se souvenir de moi     Créer un compte
ARTICLES et TELECHARGEMENTS ~ FORUMS ~ LIENS  
 
             
 
Recherche
 
   
 

Parcourir ce sujet :   1 Utilisateur(s) anonymes



(1) 2 3 »


Stacksize
Accro
Inscrit:
06/07/2007 09:17
Messages: 697
Hors Ligne
Bonjour à tous.
J'ai un projet dont le binaire fais plus ou moins 80Ko ^^ (MC9S12XEG128).

Lorsque je réduit la taille de la stack dans le prm (passage à 0x30), je sais que je devrai planter par débordement de pile, mais il n'en est rien!!!

Auriez-vous une idée/explication?

@++
IKo

Posté le : 23/06/2011 13:35
Transférer la contribution vers d'autres applications Transférer


Re: Stacksize
Modérateur
Inscrit:
24/09/2005 13:30
De 04110 - VACHERES- FRANCE
Messages: 1495
Hors Ligne
Salut,
C'est l'inverse qui va te faire générer une erreur, et sur la RAM, pas sur la FLASH.

Le compilateur ne sait pas comment vont s'imbriquer les appels (fonctions et IT), il ne peut pas calculer la taille max que peut prendre la stack durant l'exécution de ton appli.

Par contre, inversement, si tu réserve une taille de pile trop importante par rapport à la taille de ta RAM et au variables globales utilisées, il te jette (ex : 8Ko RAM, déclaration d'une pile de 9Ko).

Yvan

Posté le : 23/06/2011 13:39
Le houblon, c'est bon pour la récupération.
Transférer la contribution vers d'autres applications Transférer


Re: Stacksize
Accro
Inscrit:
06/07/2007 09:17
Messages: 697
Hors Ligne
PLop, merci de ta réponse.
Effectivement, le LINKER fait une erreur de segmentation si la stack est trop grande.

Donc comment savoir si la pile déborde? (Je ne fais pas de malloc, donc pas de tas)


Posté le : 23/06/2011 14:25
Transférer la contribution vers d'autres applications Transférer


Re: Stacksize
Modérateur
Inscrit:
24/09/2005 13:30
De 04110 - VACHERES- FRANCE
Messages: 1495
Hors Ligne
C'est impossible à savoir exactement généralement...

Une fois ton appli terminée, tu peux positionner la stack au max de RAM restant.
Cherche un peu dans les anciens messages, on en a parlé plusieurs fois.

Une méthode expérimentale consiste à remplir la RAM avec un pattern connu, laisser tourner en essayant de faire toutes les actions extérieures pour que le CPU passe dans toutes les fonctions, en les empilant, et de regarder ensuite le dump de la RAM pour voir jusqu’où la stack est allée.

Yvan

Posté le : 23/06/2011 14:39
Le houblon, c'est bon pour la récupération.
Transférer la contribution vers d'autres applications Transférer


Re: Stacksize
Pilier de la communauté
Inscrit:
09/10/2006 11:47
De Cambridge, Angleterre & Glasgow, Ecosse
Messages: 858
Hors Ligne
Bonjour,
J'voudrais dire que tu peux quand meme planter avec ton 0x30.
Tu ne planteras pas a l'editeur de liens, mais a l'execution quand le pointeur de pile viendra taper dans le haut de tes variables... Et ca, c'est coton a deboguer quand on oublie...
Alban.

Posté le : 23/06/2011 15:34
Alban Rampon / 冉昂理 - blog
Transférer la contribution vers d'autres applications Transférer


Re: Stacksize
Nouveau
Inscrit:
10/02/2009 23:23
Messages: 4
Hors Ligne
Salut,

effectivement, si tu débordes de ta pile à l'exécution, alors tu ne peux plus être certain de l'exécution de ton code.
Pour t'affranchir de ce problème, il existe une solution simple :
Tu positionne deux marqueurs autour de ta pile. Tu testes régulièrement l'état de ces marqueurs et tu remontes une panne vers ton applicatif. Crois-moi, c'est efficace, et, à mon sens obligatoire pour toute application embarquée, même si tu ne fais pas d'allocation dynamique.

David

Posté le : 23/06/2011 16:54
Transférer la contribution vers d'autres applications Transférer


Re: Stacksize
Pilier de la communauté
Inscrit:
09/10/2006 11:47
De Cambridge, Angleterre & Glasgow, Ecosse
Messages: 858
Hors Ligne
Salut David,

Le BRK module des petits 8-bits fait ca exactement. Et ca génere un SWI sans avoir besoin de s'embeter. C'est une methode qui permet de valider des applications 8-bit pour des chauffes-eau par exemple, ou on veut eviter que le code se ballade. Comme les 8-bits sont limités en place, c'est bien de ne pas avoir a le faire dans le 'main' ou par Timer.
Y'a des blocs qui peuvent faire le meme boulot sur S12 et S12X, bien sur. DBG pour proteger des zones.
Iko, au boulot!

Alban

Posté le : 23/06/2011 18:20
Alban Rampon / 冉昂理 - blog
Transférer la contribution vers d'autres applications Transférer


Re: Stacksize
Modérateur
Inscrit:
24/09/2005 13:30
De 04110 - VACHERES- FRANCE
Messages: 1495
Hors Ligne
Salut Alban,

Dis, en passant, tu sais si le module de BRK peux s'utiliser sans BDM connecté ?

Yvan

PS : le lendemain de ta fête, c'est toujours ta fête ??? Si oui, bonne fête !!!!

Posté le : 23/06/2011 18:47
Le houblon, c'est bon pour la récupération.
Transférer la contribution vers d'autres applications Transférer


Re: Stacksize
Pilier de la communauté
Inscrit:
09/10/2006 11:47
De Cambridge, Angleterre & Glasgow, Ecosse
Messages: 858
Hors Ligne
Merci Vénérable Yvan,
Ca dépend... De quelle famille de produits parles-tu?
Alban

Au travail, c'est toujours la fête

Posté le : 23/06/2011 19:49
Alban Rampon / 冉昂理 - blog
Transférer la contribution vers d'autres applications Transférer


Re: Stacksize
Nouveau
Inscrit:
10/02/2009 23:23
Messages: 4
Hors Ligne
oui Alban,

tu as raison, nous utilisons la MPU sur le s12x.
Je ne suis pas certain que tu puisses utiliser le module BRK (Trigger il me semble ?) hors debug, une idée la-dessus ?

David

Posté le : 23/06/2011 20:30
Transférer la contribution vers d'autres applications Transférer



 Haut   Précédent   Suivant
(1) 2 3 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Powered by XOOPS© The XOOPS Project
Contacter les administrateurs

Stacksize [Forums - HC12 et S12]