Imposer l'emplacement mémoire de certaines variables

Imposer l'emplacement mémoire de certaines variables - C - Programmation

Marsh Posté le 30-04-2005 à 23:57:22    

Bonjour à tous !
 
Je programme en ce moment un petit logiciel en C sur ARM. Dans ce dernier j'utilise une librairie de décodage d'un fichier MP3 qui nécéssite une instance pour travailler. Cette dernière se déclare sous la forme  

Code :
  1. INSTANCE xx;
  2. CHANNEL c1;
  3. CHANNEL c2;


et ces 3 variables doivent être globales.
Sur la plateforme j'ai peu de RAM (32 Kb), cependant je bénéficie d'une RAM externe pour sauvegarder temporairement les instances de mon décodeur.
 
En fait j'ai besoin de sauvegarder mes instances en les copiant en RAM externe et les restituer par après. C'est très simple à faire. Cependant j'aimerais, lorsque les instances ont été sauvegardées, me servir de la place libre en RAM rapide pour faire autre chose. Et là j'ai besoin que la zone sont contigue.
 
Comment puis-je m'assurer que mes 3 variables xx, c1 et c2 soient bien l'une à côté de l'autre (hormis analyser à chaque fois le log du linker).
 
Si cette foutue lib fonctionnait avec des pointeurs j'aurais pu d'abord déclarer ma zone contigue et puis faire pointer l'instance dedans mais ici ce n'est pas possible.
 
J'espère que c'est clair [:ddr555]
Merci :)


Message édité par Caedes le 01-05-2005 à 00:00:26
Reply

Marsh Posté le 30-04-2005 à 23:57:22   

Reply

Marsh Posté le 01-05-2005 à 09:50:41    

utilise un tableau, ou bien une structure "packé" peut-être ?

Reply

Marsh Posté le 01-05-2005 à 14:35:48    

oué, une structure est forcement contigue en mémoire mais le compilo a le droit de laisser parfios des trois entre les membres. En utilisant les options de pack (la facon de faire depend de ton compilo) tu peux virer ces "trous"


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 01-05-2005 à 14:49:51    

chrisbk a écrit :

oué, une structure est forcement contigue en mémoire mais le compilo a le droit de laisser parfios des trois entre les membres. En utilisant les options de pack (la facon de faire depend de ton compilo) tu peux virer ces "trous"


Si l'architecture le permet et parfois au prix d'une réduction des performances...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 01-05-2005 à 14:53:42    

ah bin c'est pas trop conseillé, generalement, mais parfois y'a besoin


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 01-05-2005 à 15:41:28    

chrisbk a écrit :

ah bin c'est pas trop conseillé, generalement, mais parfois y'a besoin


 
quand donc ?  [:petrus75]

Reply

Marsh Posté le 01-05-2005 à 17:02:17    

++fab a écrit :

quand donc ?  [:petrus75]


 
parfois quand tu veux directement 'mapper' une structure à des données stockées dans un fichier (pratique déconseillée, cela dit)


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 01-05-2005 à 17:15:36    

ou aussi, quand tu veux dialoguer avec un bios ou autre.

Reply

Marsh Posté le 01-05-2005 à 19:01:56    

Ou pour implémenter un protocole de communication, tout simplement.


---------------
Un matin je me lèverai et il fera beau.
Reply

Marsh Posté le 01-05-2005 à 19:51:09    

ou pour faire des gratins de pomme de terre


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 01-05-2005 à 19:51:09   

Reply

Marsh Posté le 01-05-2005 à 19:54:16    

vi, comme printf ;)
Chrisbk : les patates au barbuc y a que ça de vrai !! ...  :pt1cable:  :whistle:

Reply

Marsh Posté le 01-05-2005 à 19:55:02    

Citation :

Chrisbk : les patates au barbu y a que ça de vrai


 
 
[:le kneu] t'as de drole de gout


Message édité par chrisbk le 01-05-2005 à 19:55:18

---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 01-05-2005 à 19:58:11    

Au Barbecue je voulais dire ...   :lol:

Reply

Marsh Posté le 01-05-2005 à 20:09:49    

Les structures packées sous la cendre, c'est super bon [:huit]


---------------
Un matin je me lèverai et il fera beau.
Reply

Marsh Posté le 01-05-2005 à 20:27:21    

avec du camembert fondu  :p  
mm c'est l'été c'est l'époque des barbeuks :D

Reply

Marsh Posté le 03-05-2005 à 14:13:47    

Euh, une structure n'arrange rien.
En effet l'API utilise la variable xx directement. Or si je la mets dans une structure l'API devrait utiliser S.xx par exemple...

Reply

Marsh Posté le 03-05-2005 à 14:56:55    

Caedes a écrit :

Euh, une structure n'arrange rien.
En effet l'API utilise la variable xx directement. Or si je la mets dans une structure l'API devrait utiliser S.xx par exemple...


#define xx S.xx


ou plutôt, car ce sera probablement un pointeur:

#define xx (pS->xx)



Message édité par Emmanuel Delahaye le 03-05-2005 à 14:58:07

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed