J'essaie de comprendre les options gcc pour une chaîne d'outils que je suis en train de mettre en place, pour le conseil de développement: Sabre-lite qui est basé autour du quadri processeur iMX6q de Freescale. Maintenant, je sais que iMX6 est essentiellement un processeur cortex-a9 qui a co-processeurs vfpv3 et néon, et aussi des graphiques vectoriels, 2D et même moteurs 3D. Toutefois, les notes de publication et les guides d'utilisation n'ont pas été trop clairs sur la façon d'activer les options pouvant être activées dans gcc.Options gcc pour un processeur ARM iMX6q freescale
En fait, les options avec lesquelles je peux «jouer» sont les suivantes.
-march= armv7-a - ok this one is pretty obvious.
-mfpu= vfpv3/neon - i can use only the vfpv3 co-processor, or both (respectively, depends on option)
-mfloat-abi=softfp/soft/hard - I guess I can choose hard here, as there is hardware for fp operations
-mcpu=cortex-a9 - is it option even necessary? it is not clear if it just an alias for -march or something else.
Y a-t-il d'autres options que je devrais activer? Pourquoi la chaîne d'outils ont comme options par défaut pour construire le noyau linux/uboot/packages suivants:
-march= armv7-a -mfpu= vfpv3 -mfloat-abi=softfp
Merci pour votre aide
Votre -mfloat-abi doit correspondre selon ABI est utilisé sur votre système. softfp utilise également du matériel à virgule flottante, mais la convention d'appel diffère. Vous pouvez vérifier avec "readelf -A/bin/ls" (par exemple). "Tag_ABI_VFP_args: les registres VFP" signifie difficile. – unixsmurf
extrêmement utile, merci beaucoup! – nass
(Bien sûr, si vous compilez nativement sur votre système cible en utilisant le gcc natif du système, quel que soit l'ABI correct sera le défaut dans le compilateur, et peut être omis.) – unixsmurf