Cette erreur se produit lorsque les fonctions se trouvent dans un emplacement de mémoire de plus de 256 Mo à l’exception de la mémoire principale, car le compilateur Nios II utilise l’instruction d’appel qui a une limite de limite de 256 Mo.
Il existe deux solutions à ce problème :
1) Dans la version 13.1 de l’ACDS, l’option -relax-all est implémentée pour utiliser l’instruction de l’appelant au lieu de l’instruction d’appel. Dans Les outils de construction de logiciels pour Eclipse, ajoutez l’option -Wa,-relax-all dans les propriétés de l’application ou du BSP en tant que drapeau de l’utilisateur.
Cette solution de contournement peut avoir un impact sur les performances logicielles, car l’instruction de l’appelant utilise plus d’instructions d’assemblage par rapport à l’instruction d’appel.
2) L’instruction d’appel ne calcule pas les 4 bits de l’adresse du MSB, d’où la limitation de limite de 256 Mo. Localisez les mémoires afin que les 4 bits des adresses de base de la mémoire du MSB soient les mêmes, pour vous assurer que les fonctions sont dans la limite de 256 Mo.
Eg. SDRAM : 0x10000000, mémoire onpup : 0x12000000
ou SDRAM : 0x08000000, mémoire onpuce : 0x02000000