mirror of https://github.com/markqvist/MMDVM.git
126 lines
7.3 KiB
Plaintext
126 lines
7.3 KiB
Plaintext
In order to build MMDVM, you need to tell the Arduino GUI to link with the
|
|
CMSIS DSP library, which is doesn't do by default.
|
|
|
|
My development is on Windows and so I can vouch for the following instructions.
|
|
|
|
For Arduino 1.6.3 with SAM 1.6.4
|
|
--------------------------------
|
|
|
|
1. Go to the where the platform.txt file is located. On my Windows machine it's
|
|
in:
|
|
|
|
C:\Users\Jonathan\AppData\Roaming\Arduino15\packages\arduino\hardware\sam\1.6.4
|
|
|
|
On Mac OS X it's located in:
|
|
|
|
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/sam
|
|
Or
|
|
~/Library/Arduino15/packages/arduino/hardware/sam/1.6.6
|
|
|
|
2. You'll need to open the file in a text editor and find the line:
|
|
|
|
## Combine gc-sections, archives, and objects
|
|
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" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group "{build.path}/syscalls_sam3.c.o" {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.path}/{archive_file}" -Wl,--end-group -lm -gcc
|
|
|
|
In my version it's line 73.
|
|
|
|
3. Modify it to read as follows:
|
|
|
|
## Combine gc-sections, archives, and objects
|
|
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" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group "{build.path}/syscalls_sam3.c.o" {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.system.path}/CMSIS/CMSIS/Lib/ARM/arm_cortexM3l_math.lib" "{build.path}/{archive_file}" -Wl,--end-group -lm -gcc
|
|
|
|
The change is near the end, and is the addition of:
|
|
|
|
"{build.system.path}/CMSIS/CMSIS/Lib/ARM/arm_cortexM3l_math.lib"
|
|
|
|
Which is the CMSIS AMR3 DSP library for little-endian operation.
|
|
|
|
4. Save the file and start up the Arduino GUI and build MMDVM.
|
|
|
|
I would like to get instructions for doing the same on a Linux platform. As a
|
|
starter find the relevent platform.txt and try adding:
|
|
|
|
"{build.system.path}/CMSIS/CMSIS/Lib/ARM/libarm_cortexM3l_math.a"
|
|
|
|
or maybe:
|
|
|
|
"{build.variant.path}/libarm_cortexM3l_math.a"
|
|
|
|
Likely on Linux
|
|
|
|
"{build.system.path}/CMSIS/CMSIS/Lib/GCC/libarm_cortexM3l_math.a"
|
|
|
|
As with Arduino 1.6.7 with SAM 1.6.6, see below.
|
|
|
|
|
|
For Arduino 1.6.7 with SAM 1.6.6
|
|
--------------------------------
|
|
(checked OK on Arduino 1.6.11 and SAM 1.6.9)
|
|
|
|
1. Go to the where the platform.txt file is located. On my Windows machine it's
|
|
in:
|
|
|
|
C:\Users\Jonathan\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.6
|
|
|
|
On Mac OS X it's located in:
|
|
|
|
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/sam
|
|
|
|
On Linux, it's located in my home directory, downloaded and extracted from Arduino website, but must be installed.
|
|
|
|
/home/m1geo/arduino-1.6.7/hardware/arduino/sam
|
|
|
|
or
|
|
|
|
/home/m1geo/.arduino15/packages/arduino/hardware/sam/1.6.9 (if you let the board/library manager install SAM)
|
|
|
|
|
|
I (M1GEO) found it was necessary to download SAM-1.6.6 outside of the Arduino IDE, and manually extract the files.
|
|
The Board Manager didn't seem to install the SAM files correctly. Here's how I did it:
|
|
|
|
a) wget http://downloads.arduino.cc/cores/sam-1.6.6.tar.bz2 -O /tmp/sam-1.6.6.tar.bz2 (download and save in /tmp)
|
|
b) cd arduino-1.6.7/hardware/arduino/ (Arduino root, here, in my home directory)
|
|
c) tar xvfj /tmp/sam-1.6.6.tar.bz2
|
|
|
|
2. You'll need to open the file (platform.txt) in a text editor and find the line:
|
|
|
|
## Combine gc-sections, archives, and objects
|
|
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" -mcpu={build.mcu} -mthumb {compiler.c.elf.flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--start-group "{build.path}/core/syscalls_sam3.c.o" {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.path}/{archive_file}" -Wl,--end-group -lm -gcc
|
|
|
|
In my version it's line 73.
|
|
|
|
3. Modify it to read as follows:
|
|
|
|
## Combine gc-sections, archives, and objects
|
|
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" -mcpu={build.mcu} -mthumb {compiler.c.elf.flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--start-group "{build.path}/core/syscalls_sam3.c.o" {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.system.path}/CMSIS/CMSIS/Lib/ARM/arm_cortexM3l_math.lib" "{build.path}/{archive_file}" -Wl,--end-group -lm -gcc
|
|
|
|
The change is near the end, and is the addition of:
|
|
|
|
"{build.system.path}/CMSIS/CMSIS/Lib/ARM/arm_cortexM3l_math.lib"
|
|
|
|
On Linux, the path was found to differ slightly (GCC instead of ARM):
|
|
|
|
"{build.system.path}/CMSIS/CMSIS/Lib/GCC/libarm_cortexM3l_math.a"
|
|
|
|
Which is the CMSIS AMR3 DSP library for little-endian operation.
|
|
|
|
4. Save the file and start up the Arduino GUI and build MMDVM.
|
|
|
|
For Arduino 1.6.9 with SAM 1.6.8
|
|
--------------------------------
|
|
|
|
1. Locate platform.txt. On Ubuntu 14.04 LTS x86_64 OS it is in:
|
|
|
|
/home/$user/.arduino15/packages/arduino/hardware/sam/1.6.8/
|
|
|
|
2. Open the file in a text editor and change the line:
|
|
|
|
## Combine gc-sections, archives, and objects
|
|
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" -mcpu={build.mcu} -mthumb {compiler.c.elf.flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--start-group {compiler.combine.flags} {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.path}/{archive_file}" -Wl,--end-group -lm -gcc
|
|
|
|
to
|
|
|
|
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" -mcpu={build.mcu} -mthumb {compiler.c.elf.flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--start-group {compiler.combine.flags} {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.system.path}/CMSIS/CMSIS/Lib/GCC/libarm_cortexM3l_math.a" "{build.path}/{archive_file}" -Wl,--end-group -lm -gcc
|
|
|
|
3. Save the file, open the Arduino IDE and build MMDVM
|