Paso 2: Añadir las bibliotecas matemáticas de brazo para el software de arduino.
El software de arduino viene con un montón de agradable (pero bastante difícil de comprender) DSP de funciones. Estos incluyen discretas funciones FFT como arm_rfft_q15 (& S, a, outsq) que me gusta usar. Pero faltaron hacia fuera desde el vinculador. Este paso agrega al entorno de arduino.
Presumiblemente, esta técnica puede utilizarse para enlazar contra la biblioteca de cualquier C.
Si quieres un ejemplo de algún código que utiliza estas funciones entonces le sugiero que google para "Cascada de la DueVGA por stimmer". Aquí es donde tengo la técnica de y el código contiene las pistas originales que he usado con la debida.
De todos modos, aquí están las modificaciones a la instalación de arduino 1.5.5, estos funcionará para el Arduino debido, hay algunas sugerencias sobre cómo adaptarse a la Junta de DigiX.
1. Añadir un enlace de sym a las bibliotecas para las variantes arduino_due_x/digix Junta:
Esto funciona para la debida (probado con 1.5.4):
# cd /usr/local/arduino-1.5.5/hardware/arduino/sam/variants/arduino_due_x/
# ln -s... /.. /System/CMSIS/CMSIS/lib/gcc/libarm_cortexM3l_math.a.
Pero, si tienes un DigiX (con 1.5.5), hacer esto:
# cd /usr/local/arduino-1.5.5/hardware/digistump/sam/variants/digix/
# ln -s... /.. /System/CMSIS/CMSIS/lib/gcc/libarm_cortexM3l_math.a.
2. cambiar el archivo boards.txt en dos lugares agregando - larm_cortexM3l_math a la línea de build.extra_flags:
Para la debida de Arduino:
# cd /usr/local/arduino-1.5.5/hardware/arduino/sam
# diff -u boards.txt.0 boards.txt
---boards.txt.0 15 / 02 / 2014 12:56:00.498907451 + 0000
+++ 12:57:41.803409801 boards.txt 2014-02-15 + 0000
-13,7 + 13,8
arduino_due_x_dbg.Build.usb_product="Arduino Due"
arduino_due_x_dbg.Build.Board=SAM_DUE
arduino_due_x_dbg.Build.Core=Arduino
-arduino_due_x_dbg.build.extra_flags=-D__SAM3X8E__ - mthumb {build.usb_flags}
+ # MDTE: arduino_due_x_dbg.build.extra_flags=-D__SAM3X8E__ - mthumb {build.usb_flags}
+arduino_due_x_dbg.Build.extra_flags=-D__SAM3X8E__ - mthumb {build.usb_flags}-larm_cortexM3l_math
arduino_due_x_dbg.Build.ldscript=linker_scripts/GCC/Flash.LD
arduino_due_x_dbg.Build.Variant=arduino_due_x
arduino_due_x_dbg.Build.variant_system_lib=libsam_sam3x8e_gcc_rel.a
-34,7 + 35,8
arduino_due_x.Build.usb_product="Arduino Due"
arduino_due_x.Build.Board=SAM_DUE
arduino_due_x.Build.Core=Arduino
-arduino_due_x.build.extra_flags=-D__SAM3X8E__ - mthumb {build.usb_flags}
+ # MDTE: arduino_due_x.build.extra_flags=-D__SAM3X8E__ - mthumb {build.usb_flags}
+arduino_due_x.Build.extra_flags=-D__SAM3X8E__ - mthumb {build.usb_flags}-larm_cortexM3l_math
arduino_due_x.Build.ldscript=linker_scripts/GCC/Flash.LD
arduino_due_x.Build.Variant=arduino_due_x
arduino_due_x.Build.variant_system_lib=libsam_sam3x8e_gcc_rel.a
DigiX, realice cambios similares a los archivos en /usr/local/arduino-1.5.5/hardware/digistump/sam
3. cambiar el archivo platforms.txt:
Para la debida de Arduino (probado bajo 1.5.4):
En /usr/local/arduino-1.5.5/hardware/arduino/sam, cambie platform.txt para agregar el siguiente justo después:
Añadir a esto: «{build.variant.path}/libarm_cortexM3l_math.a»
Justo después de "{build.variant.path}/{build.variant_system_lib}"
En la línea después del comentario dice "Gc-secciones de cosechadora, archivos y objetos"
Aquí es un diff de los cambios:
# diff -u platform.txt.0 platform.txt
---platform.txt.0 15 / 02 / 2014 12:58:59.011792641 + 0000
+++ 13:00:18.792188245 platform.txt 2014-02-15 + 0000
-55,7 + 55.8
Recipe.ar.Pattern="{Compiler.Path}{Compiler.ar.cmd}" {compiler.ar.flags} "{build.path}/{archive_file}" "{object_file}"
## Combinan secciones de gc, archivos y objetos
-recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags}-mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" -o «{build.path}/{build.project_name}.elf» «-L{build.path} "-lm - lgcc - mthumb -Wl,--cref -Wl,--check-secciones - Wl,--gc-sections - Wl,--entrada = Reset_Handler -Wl,--símbolos sin resolver = Informe - Wl,--común advertir - Wl,--advierten-sección-alinear - Wl,--advierten-no resueltos-símbolos - Wl,--Inicio-Grupo"{build.path}/syscalls_sam3.c.o «{object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.path}/{archive_file}" -Wl,--final-Grupo
+ # MDTE: recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags}-mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" -o «{build.path}/{build.project_name}.elf» «-L{build.path} "-lm - lgcc - mthumb -Wl,--cref -Wl,--check-secciones - Wl,--gc-sections - Wl,--entrada = Reset_Handler -Wl,--símbolos sin resolver = Informe - Wl,--común advertir - Wl,--advierten-sección-alinear - Wl,--advierten-no resueltos-símbolos - Wl,--Inicio-Grupo"{build.path}/syscalls_sam3.c.o «{object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.path}/{archive_file}" -Wl,--final-Grupo
+ recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags}-mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" -o «{build.path}/{build.project_name}.elf» «-L{build.path} "-lm - lgcc - mthumb -Wl,--cref -Wl,--check-secciones - Wl,--gc-sections - Wl,--entrada = Reset_Handler -Wl,--símbolos sin resolver = Informe - Wl,--común advertir - Wl,--advierten-sección-alinear - Wl,--advierten-no resueltos-símbolos - Wl,--Inicio-Grupo"{build.path}/syscalls_sam3.c.o «{object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.variant.path}/libarm_cortexM3l_math.a" "{build.path}/{archive_file}" -Wl ,--final-Grupo
Digix, como en los pasos anteriores realice cambios similares en el archivo platforms.txt en:
/usr/local/Arduino-1.5.5/hardware/digistump/Sam/
Ahora tus bocetos deben ser capaces de incluir llamadas a cualquier cosa en libarm_cortexM3l_math.a! Yipee!
Compilación de línea de comandos con arduino IDE 1.5 +
Esto parece trabajar para la Junta de DigiX:
/usr/local/Arduino-1.5.5/Arduino--digistump:sam:digix--/root/Arduino/sketchbook/xblinky/xblinky.ino upload--verbose del tablero