2015-04-13 3 views
1

J'ai pu construire du code dans IAR EWARM (7.40) (pour le ST STM32F407IG ARM Cortex-m4) qui se connecte à une bibliothèque construite sous Ubuntu via gcc (4.9.3). Ce fonctionne principalement mais certains ajustements d'environnement de construction sur le côté IAR ou gcc ou les deux restent. J'apprécierais toute l'aide que vous pourriez m'indiquer.iar ewarm liant à gcc eabi build library

Il n'y a pas d'erreurs de construction évidente mais EWARM et aucun-eabi-gcc bras en désaccord sur l'emplacement des paramètres étant passés à la bibliothèque construite gcc. Le débogueur EWARM et le code généré par EWARM sont en accord mais (il semble que des recherches aient été faites jusqu'à présent) que les emplacements attendus par le code généré par gcc sont décalés de ceux prévus par EWARM de huit octets. J'ai seulement étudié un seul appel, donc ceci peut ne pas être constant ...

Les drapeaux de compilateur d'IAR incluent: --aeabi et --guard_calls selon la section: "conformité d'AEABI" dans la section d'aide d'EWARM. Les indicateurs du compilateur arm-none-eabi-gcc incluent: -gdwarf-3 -mabi = aapcs -march = armv7e-m -mthumb. Je crois que cela indique à la fois EWARM et gcc de jouer bien ensemble avec les appels de procédure standard ARM AAPCS et les formats nain v3.

EWARM ne semble être heureux avec soit -gdwarf-2 ou -gdwarf-3 (mais pas -4). Cette sélection ne semble pas affecter le problème discuté ci-dessus.

Que faut-il?

Répondre

0

La réponse à « Que faut-il? » semble être rien. Assurez-vous juste que toutes les macros évaluées par les instructions #ifdef correspondent dans les environnements de sorte que vous ne vous retrouviez pas avec des structures de données de tailles différentes dans les deux environnements différents! Le code #ifdef est l'en-tête des fichiers qui doivent être soigneusement évalués ...