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 .
Partager