1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    mai 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2011
    Messages : 21
    Points : 22
    Points
    22

    Par défaut [MSP430] Ecriture dans FRAM au chargement du programme

    Bonjour à tous,

    Je cherche à écrire un certains nombre d'informations à une adresse précise de la FRAM de mon MSP430 au moment du flashage. Ces informations ne seront jamais lues par le programme mais par le bootloader (il s'agit en fait de n° de version entre autres). Pour cela, j'ai déclaré une structure en volatile static const mais, même malgré cela, les info ne sont écrites que si j'accède au moins une fois à un champs de cette structure dans le programme (ce qui ne m'intéresse pas). Aucune section ne se créée dans le map file si je n'accède pas aux données.
    Après pas mal de recherches, j'en suis à ce résultat, mais même malgré les "volatile", "attribute((used))" et autres mots clés, je n'arrive pas à écrire ces données sans avoir à y accéder au moins une fois!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #pragma LOCATION(version, 0xFF5C)
    __attribute__((used)) volatile static const Firmware_t version =
    {
    	...
    };
    Pour info, les optimisations sont désactivées, mais j'aimerais pouvoir les activer par la suite!

    Merci d'avance et bonne journée!

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Ancien développeur matériel électronique (Hard/Soft)
    Inscrit en
    avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ancien développeur matériel électronique (Hard/Soft)
    Secteur : Service public

    Informations forums :
    Inscription : avril 2002
    Messages : 1 786
    Points : 5 666
    Points
    5 666

    Par défaut

    Salut,
    Donnes nous la référence complète de ton micro (pour aller voir sa datasheet)

    Quel compilateur utilises tu ?

    A+
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    mai 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2011
    Messages : 21
    Points : 22
    Points
    22

    Par défaut

    Salut,

    Le micro que j'utilise est le MSP430FR5969LP et le compilo est le TI-cgt-msp430_4.4.7.

    J'irais bien moi-même faire un tour dans la datasheet mais je ne sais pas ce que je suis censé rechercher!

    Merci de ton aide!

  4. #4
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Ancien développeur matériel électronique (Hard/Soft)
    Inscrit en
    avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ancien développeur matériel électronique (Hard/Soft)
    Secteur : Service public

    Informations forums :
    Inscription : avril 2002
    Messages : 1 786
    Points : 5 666
    Points
    5 666

    Par défaut

    Ok
    Citation Envoyé par momo l'plus bô Voir le message
    Pour cela, j'ai déclaré une structure en volatile static const mais, même malgré cela, les info ne sont écrites que si j'accède au moins une fois à un champs de cette structure dans le programme (ce qui ne m'intéresse pas). Aucune section ne se créée dans le map file si je n'accède pas aux données.
    Dans le cas où la section se créait, est elle a l'endroit que tu voulais ?



    Dans la doc du compilateur de TI http://www.ti.com/lit/ug/slau132n/slau132n.pdf je vois ceci.

    Nom : Capture du 2017-03-08 23-50-54.png
Affichages : 24
Taille : 47,5 Ko

    Ce qui donne simplement cette syntaxe pour mettre une donnée à une adresse :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #pragma LOCATION(version, 0x1800)
    const unsigned char version =  0x01;
    Fait un essai et regarde si le map ou même dans le .hex si tu vois à l'adresse 0x1800 la valeur 1.
    Je suis presque sur qu'en déclarant une structure à la place de la variable version, ça doit fonctionner.


    Autre point ! Dans ton micro http://www.ti.com/lit/ds/symlink/msp430fr5969.pdf, il y a des espaces réservés pour ce genre d'info. Pourquoi tu souhaites les mettre en 0xFF5C ? En plus, ça pointe où 0xFF5C ? Je ne trouve pas cette adresse.

    Nom : Capture du 2017-03-08 23-50-55.png
Affichages : 24
Taille : 105,6 Ko
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/07/2011, 13h58
  2. Script shell - écriture dans un fichier
    Par Leishmaniose dans le forum Linux
    Réponses: 6
    Dernier message: 13/12/2004, 22h48
  3. Probleme d'ecriture dans un fichier en mode Text
    Par bbozet dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/01/2004, 13h46
  4. [LG]ecriture dans un fichier binaire
    Par jsaviola dans le forum Langage
    Réponses: 3
    Dernier message: 26/12/2003, 17h30
  5. Réponses: 2
    Dernier message: 26/09/2003, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo