Anyone Built the Firmware for the Ganglion on Linux? / nrfutil
NaughtiusMaximus
San Diego, California
Hi All,
I've setup the build system for Ubuntu instead of Max OS X as instructed here:
But paging down a ways, one gets to this on the webpage:
"Move the files called
mkdfuzip
, nrfutil_macosx
, and platform.txt
into your Simblee/1.1.0
folder. Restart or launch Arduino."The question is: Is there a version of "
nrfutil_macosx
" (maybe "nrfutil_linux
") for Linux?Thanks,
Max
Comments
# Simblee compile variables
# -------------------------
# arduino 1.6.3:
# {runtime.ide.path} => {runtime.tools.arm-none-eabi-gcc.path}
# arduino 1.6.6:
# {build.path}/{archive_file} => {archive_file_path}
# {build.path}/syscalls.c.o => {build.path}/core/syscalls.c.o
name=Simblee Boards
# version=1.0.0
compiler.path={runtime.tools.arm-none-eabi-gcc.path}/bin/
compiler.c.cmd=arm-none-eabi-gcc
compiler.c.flags=-c -g -Os -w -std=gnu11 -ffunction-sections -fdata-sections -fno-builtin -MMD
compiler.c.elf.cmd=arm-none-eabi-g++
# -u _printf_float
compiler.c.elf.flags=-Wl,--gc-sections --specs=nano.specs
compiler.S.flags=-c -g -assembler-with-cpp
compiler.cpp.cmd=arm-none-eabi-g++
#compiler.zip.cmd=nrfutil
compiler.zip.cmd.linux=nrfutil_linux
## compiler.zip.cmd=mkdfuzip
compiler.cpp.flags=-c -g -Os -w -std=gnu++11 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fno-builtin -MMD
compiler.ar.cmd=arm-none-eabi-ar
compiler.ar.flags=rcs
compiler.objcopy.cmd=arm-none-eabi-objcopy
compiler.objcopy.eep.flags=-O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0
compiler.elf2hex.flags=-O ihex
compiler.elf2hex.cmd=arm-none-eabi-objcopy
compiler.elf2bin.flags=-O binary
compiler.ldflags=
compiler.size.cmd=arm-none-eabi-size
compiler.define=-DARDUINO=
# this can be overriden in boards.txt
build.extra_flags=
# Simblee compile patterns
# ------------------------
## Compile c files
recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -mcpu={build.mcu} -DF_CPU={build.f_cpu} -D{software}={runtime.ide.version} {build.extra_flags} {includes} {build.variant_system_include} "{source_file}" -o "{object_file}"
## Compile c++ files
recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -mcpu={build.mcu} -DF_CPU={build.f_cpu} -D{software}={runtime.ide.version} -D__PROJECT__="{build.project_name}" {build.extra_flags} {includes} {build.variant_system_include} "{source_file}" -o "{object_file}"
## Create archives
recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} "{archive_file_path}" "{object_file}"
## Combine gc-sections, archives, and objects
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} {build.extra_flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" -Wl,--cref -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -Wl,--warn-common -Wl,--warn-section-align -Wl,--start-group "{build.path}/core/syscalls.c.o" {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.variant.path}/libSimblee.a" "{build.variant.path}/libSimbleeBLE.a" "{build.variant.path}/libSimbleeGZLL.a" "{build.variant.path}/libSimbleeForMobile.a" "{build.variant.path}/libSimbleeCOM.a" "{build.path}/{archive_file}" -Wl,--end-group
## Create eeprom
recipe.objcopy.eep.pattern=
## Create hex
recipe.objcopy.hex.pattern="{compiler.path}{compiler.elf2hex.cmd}" {compiler.elf2hex.flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.hex"
## Save hex
#recipe.output.tmp_file={build.project_name}.hex
#recipe.output.save_file={build.project_name}.{build.variant}.hex
## Create zip
##recipe.objcopy.zip.pattern="{runtime.platform.path}/{compiler.zip.cmd}" "{build.path}/{build.project_name}"
recipe.objcopy.zip.pattern="{runtime.platform.path}/{compiler.zip.cmd}" "dfu" "genpkg" "{build.path}/{build.project_name}.zip" "--application" "{build.path}/{build.project_name}.hex" "--application-version" "0xffff" "--dev-revision" "0xffff" "--dev-type" "0xffff" "--sd-req" "0xfffe"
##nrfutil dfu genpkg $1.zip --application $1.hex --application-version 0xffff --dev-revision 0xffff --dev-type 0xffff --sd-req 0xfffe
## Create bin
recipe.objcopy.bin.pattern="{compiler.path}{compiler.elf2hex.cmd}" {compiler.elf2bin.flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.bin"
## Compute size
recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf"
recipe.size.regex=^(?:\.text|\.ARM.exidx|\.relocate)\s+([0-9]+).*
recipe.size.regex.data=^(?:\.relocate|\.bss)\s+([0-9]+).*
## prebuild hook
recipe.hooks.prebuild.0.pattern=
## postbuild hook
recipe.hooks.postbuild.0.pattern=
recipe.output.tmp_file={build.project_name}.zip
##recipe.output.save_file={build.project_name}.{build.variant}.hex
recipe.output.save_file={build.project_name}.{build.variant}.zip
# Simblee Uploader tools
# ----------------------
tools.RFDLoader.path={runtime.platform.path}/
tools.RFDLoader.compiler.path={runtime.tools.arm-none-eabi-gcc.path}/bin/
tools.RFDLoader.script=loader
tools.RFDLoader.script.windows=loader.bat
tools.RFDLoader.cmd.windows=RFDLoader.exe
tools.RFDLoader.cmd.macosx=RFDLoader_osx
#tools.RFDLoader.cmd.macosx=RFDLoader32_osx
tools.RFDLoader.cmd.linux=RFDLoader_linux
#tools.RFDLoader.cmd.linux=RFDLoader32_linux
#tools.RFDLoader.cmd.linux=RFDLoader_pi
tools.RFDLoader.upload.params.verbose=
tools.RFDLoader.upload.params.quiet=
tools.RFDLoader.upload.pattern="{path}{script}" {cmd} {serial.port} "{build.path}" "{build.project_name}" "{path}" "{compiler.path}"
tools.nrfDFU.upload.params.verbose=
tools.nrfDFU.upload.params.quiet=
tools.nrfDFU.path={runtime.platform.path}/
tools.nrfDFU.cmd.macosx=nrfDFU
tools.nrfDFU.upload.pattern="{path}{cmd}" update "{upload.uuid}" "{build.path}/{build.project_name}.bin"
#tools.nrfDFU.upload.pattern="{path}{cmd}" update F7902AB4-95CA-4955-8966-035FA518C533 "{build.path}/{build.project_name}.bin"
@NaughtiusMaximus, (Jonathan Spurgin), hi.
Do you have a link to your 'platform.txt' file that is more readable? The one posted here on the forum has messed up formatting. I think you said you had a Github? Link?
This other recent thread is by a Windows user having trouble building a working Ganglion upload file.
https://openbci.com/forum/index.php?p=/discussion/2736/ganglion-ota-programming-for-windows
Authored by @teknomage.
Regards, William
As I stated in the previous comment, when we moved the OpenBCI 'Vanilla Forum' software to the newer version, the formatting was screwed up on the 'platform.txt' file posted above in Nov 2018 by Max/Jonathan. I've appended a repaired version of 'platform.txt' to this comment. It would be instructive to do a diff against the original to see what changes Jonathan made. I think most of his changes saved the original lines by commenting them out with sharp signs.
Mentioning @teknomage and @NaughtiusMaximus.
William
Thanks for this, William. I've been looking into the various libraries I could glean for the compilation and for the sake of completeness, I'm including the OpenHAK platform.txt that I found within Simblee-master from the OpenHAK link you posted earlier on this thread. As you can see, the boards name is OpenHAK (obviously) but more importantly, the tools.nrfDFU defines are missing in here, so am glad you uploaded the corrected version above: