Bonjour,
Dans le cadre de développement pour processeur soft-core Nios II, implanté sur un FPGA Cyclone d'Altera, j'ai rencontré le problème suivant:
Le logiciel principal est écrit en C pur (sans middleware linux, ni windows embedded) et se base sur l'architecture suivante:
un projet principal (type: C/C++ Application), au code très sommaire (juste le main() ), appelle toute une série de librairies statiques (en fait, des projets de type: Managed librairy project) qui, une fois compilées, s'insèrent dans le projet principal sous la forme fichiers binaires .a . Le développement est effectué dans l'environnement Altera NiosII IDE (qui se base sur Eclipse).
Le problème rencontré est le suivant: lorsque, dans une fonction des librairies, on utilise un tableau dont l'indice est exprimé sous forme d'une variable, et non pas sous la forme d'une constante, comme dans l'exemple : for (i=0;i<10;i++) {
tableau[i]=value[i];
},
alors le code se bloque, à chaque fois qu'on appelle la fonction de la librairie, depuis l'application principal. Par exemple, si on insère des printf avant et après la boucle for, le premier printf va s'afficher correctement mais pas le second (preuve que le code s'est bloqué à cet endroit).
Y aurait-il une interprétation pour ce phénomène? Je pense qu'il doit y avoir une explication, dans la manière dont le compilateur gère la déclaration et l'utilisation des tableaux, au sein des librairies statiques. Utiliser des librairies dynamiques permettrait-il de résoudre ce problème selon vous?
Merci de votre aide,
Partager