IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

créer journal sur petit système


Sujet :

C

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut créer journal sur petit système
    bonjour,

    Je voudrais créer un journal d'évènements sur un petit micro-controlleur (ROM:512Ko, RAM: 128Ko) qui sera stoqué dans une flash externe de 500Ko.

    Quelle est selon vous la meilleure methode pour créer un journal d'évènement (utilisation de stream, liste chainée, tableaux statiques, autre ?) ?

    PS : attention, la mémoire de type flash est une mémoire paginée avec un cycle de vie limité (en écriture)

  2. #2
    Membre actif Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Points : 245
    Points
    245
    Par défaut
    Je dirais double tableau, ca prend potentiellement moins de place qu'une liste. En revanche si tu as besoin de detailler chaque evenement avec plusieurs valeurs je pense que la liste vaut le coup d'etre utilisee (en revanche rien n'empeche de formatter une chaine pour qu'elle contienne plusieurs infos).

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Cela ressemble à du logiciel embarqué et en général, en embarqué, les ressources sont allouées au début et jamais libérées (sauf au reset de la carte).

    Je partirais sur un bête tableau contenant des pointeurs sur les messages.

    Cela permettrai de faire un tableau tournant sans trop de difficulté. Lorsque le tableau est plein, on réutilise le plus ancien enregistrement que l'on écrase.

    Au début du programme, tu alloues tout ton tableau (pour 10000 logs par exemple).

    Ensuite, tu alloues tes 10000 chaines de caractères.

    Tu gère un index "NextLogWrite".

    Et ensuite, lorsque de nouveaux logs doivent être ajoutés, tu pioches dans le tableau des chaines de caractères et tu mets à jour ton tableau de pointeurs.

    Citation Envoyé par boboss123 Voir le message
    PS : attention, la mémoire de type flash est une mémoire paginée avec un cycle de vie limité (en écriture)
    Cela a quel impact sur le programme ? Je ne comprend pas.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 115
    Points : 104
    Points
    104
    Par défaut
    Citation:
    Envoyé par boboss123
    PS : attention, la mémoire de type flash est une mémoire paginée avec un cycle de vie limité (en écriture)
    Cela a quel impact sur le programme ? Je ne comprend pas.
    Je pense qu'il veut juste indiquer que par conséquent, il doit varier les endroits où il écrit dans sa flash, ce qui est assez fréquent comme situation.

    Mais s'il écrit de manière séquentielle et efface les evènements les plus anciens, ça ne doit guère gêner.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Cela a quel impact sur le programme ? Je ne comprend pas.
    Et bien oui cela à un impact : d'ailleurs il me semble justement qu'à cause de ça ,ta solution n'ira pas.

    Une flash est une mémoire dont le nombre de cycle d'écriture est limité (100 000 par exemple) et on ne peut effacer les données que par secteur (pas par octets). Lorsque la mémoire est effacée, tous les bits sont à 1 : donc lorsqu'on écrit dans une flash, physiquement, on ne modifie que les bits que l'on veut mettre à zéro
    => par exemple, si on écrit dans la même zone mémoire la valeur 0b11111110 puis la valeur 0b11111101, on aura comme résultat la valeur 0b11111100.

    Donc on ne peut pas simplement écraser le membre le plus ancien d'un tableau lorsqu'il est plein car si on veut faire ça, il faut :
    1- récupérer en RAM le secteur complet où se trouve l'élément à modifier
    2- modifier en RAM la valeur
    3- effacer le secteur
    4- réécrire tout le secteur
    => ce qui réduit donc la durée de vie de la flash car pour changer un octet, il faut changer tous les octets d'un secteur.
    (sachant qu'aussi, il faudra à chaque fois gérer une variable permettant d'identifier la position du premier élément dans la flash ainsi que la taille de la liste)

Discussions similaires

  1. Petite question sur un système d'identification
    Par isoman dans le forum Forms
    Réponses: 14
    Dernier message: 29/05/2008, 14h49
  2. créer TRIGGER sur 1 table avec liaison sur 2 autre table
    Par shaka84 dans le forum Développement
    Réponses: 2
    Dernier message: 11/04/2006, 11h10
  3. [xp] problème étrange sur le système de fichiers
    Par Huntress dans le forum Windows XP
    Réponses: 4
    Dernier message: 05/03/2006, 20h15
  4. Graveur de DVD sur petite configuration
    Par gege2061 dans le forum Périphériques
    Réponses: 4
    Dernier message: 01/03/2006, 10h53
  5. [langage] Erreur d'arrondi sur petits nombres
    Par Tchetch dans le forum Langage
    Réponses: 7
    Dernier message: 12/01/2005, 10h11

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