Sto cercando di capire le opzioni gcc per una toolchain che sto configurando, per la scheda di sviluppo: Sabre-lite che si basa sul processore quad iMX6q di Freescale.Opzioni gcc per un processore ARM iMX6q freescale
Ora so che iMX6 è fondamentalmente un processore cortex-a9 che ha co-processori vfpv3 e neon, e anche grafica vettoriale, motori 2D e persino 3D.
Tuttavia, le note di rilascio e i documenti guida di utilizzo non sono stati troppo chiari su come abilitare le opzioni che possono essere abilitate in gcc.
In effetti le opzioni con cui posso "giocare" sono le seguenti.
-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.
Ci sono altre opzioni che dovrei abilitare? Perché la toolchain hanno come opzioni predefinite per costruire il kernel linux/uboot/pacchetti seguenti:
-march= armv7-a -mfpu= vfpv3 -mfloat-abi=softfp
Grazie per il vostro aiuto
tuo -mfloat-abi dovrebbe corrispondere a seconda di quale ABI è utilizzata nel sistema. softfp utilizza anche hardware in virgola mobile, ma la convenzione di chiamata differisce. È possibile verificare con "readelf -A/bin/ls" (ad esempio). "Tag_ABI_VFP_args: registri VFP" significa difficile. – unixsmurf
estremamente utile, grazie mille! – nass
(Ovviamente, se si sta compilando nativamente sul sistema di destinazione utilizzando il gcc nativo del sistema, qualunque sia l'ABI corretto sarà quello predefinito nel compilatore e può essere omesso.) – unixsmurf