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

Simulink Discussion :

Problème occupation mémoire d'une matrice dans un bus creator


Sujet :

Simulink

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Problème occupation mémoire d'une matrice dans un bus creator
    Bonjour à tous

    J'ai un problème avec une S-fonction qui a en entrée un bus.

    ENVIRONNEMENT

    Je travaille sur MATLAB/Simulink (R2008b soit la 7.7) sous environement Linux, Red Hat version 5.

    Mes S-fonctions sont développées en C (C-MEX files).

    Remarque : Je sais que la R2009a a une Sfonction Builder permettant d'avoir directement en entrée (et aussi en sortie) des bus, mais moi je travaille sur la R2008b et je ne peux pas changer de version. J'ai essayé sous WindowsXP et... ça marche, le problème ne se présente que sous Linux. mais la même remarque je suis obligé de travailler sous Linux.

    Sur la R2008b les Sfonction builder ne peuvent avoir de bus en entrée, donc je passe par un Sfonction.

    DESCRIPTION DU MODELE

    Mon modèle se compose d'une Sfonction, de constantes (scalaires, vecteurs et matrices) et de 2 bus creator.



    http://uploads.imagup.com/10/1245337476_modele.JPG

    sMyBus ( l’ entrée In1 de la S Function LM_UDP_Gen) est “reproduit” dans une structure « Bus » en C, accessible par la S Function LM_UDP_Gen.

    Le but de la S_Function est de copier l’entrée In1 dans une variable de type Bus et de vérifier que celle ci a bien pris les valeurs d’entrée ( scal, vect, etc...).

    MON PROBLEME


    Problème1

    Lorsque je fais une simulation du modèle, j’observe que les variables avant scal_st s’affichent correctement, et que celles d’après , non.

    Pour comprendre la provenance du problème j’effectue la copie de * sMyBus (via un memcpy) dans la variable « tableau » de type char *.

    J’affiche chaque octet de la variable « tableau ». J’observe qu’entre le dernier champs de matrix et le premier de scal_st, se sont immiscés 4 octets de valeur 0x00.

    J’ai d’abord pensé que cela était dû au phénomène de « bourrage », MATLAB procédant à un alignement forcé de la mémoire en la bourrant ( la mémoire ) pour obtenir des champs de taille multiple de 64 bits.

    Cependant, ceci ne semble pas expliquer le problème rencontré :

    Problème2

    En effet lorsque je positionne matrix en premier élément de mon bus (matrix précédant scal), je n’observe plus exactement le même phénomène :

    Dans la variable « tableau » après le dernier champs de matrix j’observe, comme prévu, le champs correspondant à scal, mais après scal se sont immiscés 4 octets de valeur 0x00.

    Problème3

    Lorsque la variable matrix est définie en [4x4] d’uint32, c’est à dire 16 éléments de 4 octets chacun, on observe quand même un « bourrage » alors que ce dernier ne devrait pas avoir lieu (car la taille obtenu est un multiple de 64 bits).

    Si l’un d’entre vous connaît l’origine de ce problème, n’hésitez pas à apporter votre contribution car j’ai vraiment besoin d’aide.

    Merci d'avance

  2. #2
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai trouvé la solution : c'était bien un problème de "bourrage" mémoire.

    Il faut alors définir les variables de padding dans la structure représentant votre bus.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec une matrice dans une boucle
    Par kingofdarck dans le forum MATLAB
    Réponses: 9
    Dernier message: 08/10/2012, 13h11
  2. Réponses: 7
    Dernier message: 12/03/2006, 21h18
  3. [VBA] Problème récup texte d'une cellule dans un tableau
    Par Marco le Pouillot dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 30/01/2006, 17h06
  4. Réponses: 11
    Dernier message: 13/01/2006, 15h30

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