Ich versuche, die Fremdfunktionsschnittstellenbibliothek für einen Cortex-M3-Prozessor mit GCC zu erstellen. Nach http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html:Kann Libffi für Cortex-M3 gebaut werden?
-mthumb
Generate code for the Thumb instruction set. The default is to use the 32-bit ARM instruction set. This option automatically enables either 16-bit Thumb-1 or mixed 16/32-bit Thumb-2 instructions based on the -mcpu=name and -march=name options. This option is not passed to the assembler. If you want to force assembler files to be interpreted as Thumb code, either add a `.thumb' directive to the source or pass the -mthumb option directly to the assembler by prefixing it with -Wa.
ich verschiedene verschiedene Argumente an die Assembler geben habe versucht, und kann nicht scheinen, um es herauszufinden. Eine typische Ausgabe wie folgt:
Building file: ../source/ffi/sysv.S
Invoking: GCC Assembler
arm-bare_newlib_cortex_m3_nommu-eabi-gcc -Wa,-mthumb-interwork -I"/home/neil/m3projects/robovero/firmware/include" -o"source/ffi/sysv.o" "../source/ffi/sysv.S"
../source/ffi/sysv.S: Assembler messages:
../source/ffi/sysv.S:145: Error: selected processor does not support ARM opcodes
../source/ffi/sysv.S:147: Error: attempt to use an ARM instruction on a Thumb-only processor -- `stmfd sp!,{r0-r3,fp,lr}'
...
Kann ich libffi auf Cortex-M3 verwenden, ohne eine Montage Experte zu werden?
Es ist vielleicht erwähnenswert, dass, wenn ich arm-bare_newlib_cortex_m3_nommu-eabi aufrufen-als direkt bekomme ich verschiedene Fehler.
Jemand auf libffi-discuss wies darauf hin, dass es eine .arm-Anweisung gibt, die _always_ versucht, sie in den Arm-Modus zu versetzen, so dass sie sicher nicht so verwendet werden kann, wie sie ist. Vielen Dank! – Neil