Pour situer mon niveau : j'ai fait de la programmation bas niveau en assembleur 68000 et 8086 pendant mes études il y a plus 20 ans (ça fait mal...).
J'ai repris en 2022 avec un projet sur PIC24FJ1024GB610. Voilà.
Après avoir trouvé des sujets qui tournent autour du pot, je n'ai toujours pas les idées claires sur la gestion de la RAM sur mon PIC. Soit les sujets ne traitent pas exactement mon cas, soit c'est en Anglais et ma compréhension reste approximative.
Dans mon programme en C, je déclare en global un tableau :
Code : Tout sélectionner
char dummyElements [150][19];//150 chaînes de 18 caractères Ça compile sans problème. Mais lorsque je remplis le tableau ça plafonne à compteur = 26 :
Code : Tout sélectionner
for ( compteur = 0 ; compteur < 150 ; compteur ++)
nbEcrits = sprintf (dummyElements [compteur], "%03d", compteur); L'exécution se déroule sans plantage (par un coup de chance ?) et nbEcrits a toujours la bonne valeur.
J'ai essayé :
Code : Tout sélectionner
__eds__ char dummyElements [150][19] __attribute__ ((eds, page)); // même comportement sans le 'page' mais ça plante à la compilation sur :
Code : Tout sélectionner
sprintf (dummyElements [compteur], "%03d", compteur); error: passing argument 1 of 'sprintf' from pointer to non-enclosed address space
J'imagine que sprintf n'a pas le droit d'accéder à l'espace mémoire où a été installé le tableau ...
Comment allier la place pour un tel tableau avec une possibilité d'accès "universelle" ?
Merci de l'éclairage que vous pourrez m'apporter.
Laurent



