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 :

[Embedded Coder] traduction en code C, overflow de la partition ".bss" lors compilation vers cible


Sujet :

Simulink

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 3
    Points : 6
    Points
    6
    Par défaut [Embedded Coder] traduction en code C, overflow de la partition ".bss" lors compilation vers cible
    Bonjour à tous,

    Je cherche à traduire mon développement Matlab Simulink en code C à embarquer par la suite sur une cible embarquée.

    Lorsque j'utilise l'Embedded coder de Simulink, tout se passe bien et il me génère mes fichiers sources C. Jusque là aucun problème .

    Lorsque j'importe les sources dans mon projet, j'obtiens une erreur de compilation :
    • Application.elf section `.bss' will not fit in region `DDR'
    • region `DDR' overflowed by 35776 bytes

    Sur la cible embarquée nous n'avons que 128 kB de RAM (DDR).

    Pas assez de place donc... En cherchant un peu, j'ai cru comprendre que cette section BSS correspondait à l'initialisation de la mémoire. En regardant un peu les fichiers générés, il est vrai que j'ai des structures énormes contenant les différentes constantes (dont beaucoup sont initialisées à zéro).

    J'ai bien tenté de jouer avec les paramètres d’optimisation de l'embedded coder mais je ne gagne au mieux qu'une dizaine de kB, j'ai tenté de reprendre tous mes blocs de constante et de leur mettre un nom de variable définie dans le workspace matlab plutôt qu'une valeur en dur (dans l'idée que l'embedded coder comprenne que pour 10 blocs booléens à 0, une seule variable suffit) mais cela n'a aucune incidence.

    Je suis à court d'idée, aussi je me tourne vers vous : auriez-vous une idée pour améliorer mon modèle Simulink afin de générer un code nécessitant moins de mémoire ?

    Merci beaucoup .

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 3
    Points : 6
    Points
    6
    Par défaut
    Le problème a été résolu en deux temps :
    1. Dans Simulink en allant dans l'onglet Simulation -> Configuration Parameters... -> Hardware Implementation, et en définissant le champ "Device Vendor" sur ma plateforme cible, à savoir dans mon cas un processeur ARM 7.
    2. A la compilation en ajoutant à GCC un flag d'optimisation ("-O1" utilisé)

  3. #3
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Je me permets de rajouter une piste pour optimiser la taille mémoire de ton code: vérifie que l'option "Inline Parameters" (qui se trouve dans l'onglet "Optimization / SIgnal And Parameters" est cochée.

    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 09/04/2014, 11h03
  2. Traduction de code Oracle vers SQL Server
    Par randomcl dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/11/2005, 23h43
  3. Traduction du code oracle vers SQL - suite
    Par randomcl dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/11/2005, 14h40
  4. [VB.NET] Traduction de code c++builder -> VbNet
    Par Tempotpo dans le forum Windows Forms
    Réponses: 7
    Dernier message: 22/03/2005, 15h02

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