Local compile firmware and app


#1

For years I have complied particle firmware as guided from the gettingstarted.md and have used a make file and particle flash to compile and flash my device. However I am running into problems trying to use this approach to compile an app to a mesh target.

This has been my approach so far.

git fetch
git checkout  v0.8.0-rc.25-mesh -b  v0.8.0-rc.25-mesh
cd modules
 make clean all PLATFORM=xenon

yields:
build.mk:4: lwip/src/Filelists.mk: No such file or directory

Has anyone else been able to deploy via command line with the Mesh architecture?

Thanks
Kyle


#2

You also need to fetch the submodules:

$ git submodule update --init --recursive

I’ll make sure we update the Getting Started guide in the firmware repository.


#3

I think that I have to do something with submodules but I cant get the syntax right.


#4

Thanks are you sure that is right?

Please make sure you have the correct access rights
and the repository exists.
fatal: clone of 'git@github.com:spark/gsm0710muxer.git' into submodule path '/Users/kylebowerman/Documents/particle...

repeats for all the third party modules, shouldn’t it be particle-iot and not spark?


#5

Ah, you are using an old org name spark instead of particle-iot.

Please reclone with:

$ git clone --recursive git@github.com:particle-iot/firmware.git

Or change the remote url and sync submodules:

$ git remote set-url origin git@github.com:particle-iot/firmware.git
$ git submodule sync --recursive
$ git submodule update --init --recursive

#6

Cool thanks!


#7

After following all of the above steps, and getting quite far through the compilation process, I am getting the following error:

Building c file: src/malloc.c
Invoking: ARM GCC C Compiler
mkdir -p ../build/target/newlib_nano/platform-14-m/./src/
...
src/malloc.c: In function '_free_r':
src/malloc.c:25:22: error: 'struct _reent' has no member named '_current_locale'
     if (r && ptr == r->_current_locale) {
                      ^~
../build/module.mk:272: recipe for target '../build/target/newlib_nano/platform-14-m/./src/malloc.o' failed
make[2]: *** [../build/target/newlib_nano/platform-14-m/./src/malloc.o] Error 1
../../../build/recurse.mk:11: recipe for target 'newlib_nano' failed
make[1]: *** [newlib_nano] Error 2

Any ideas?


#8

What gcc-arm compiler version are you using?

arm-none-eabi-gcc --version

The only supported version is 5.3.1.


#9

Ah that could be it - currently using 7.2.1.

Currently figuring out how to install the correct version on OSX as it’s not available through homebrew anymore. I believe I have found the correct package here https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads but it is still unclear to install.

Any suggestions?


#10

You’ll need the 5-2016-q1-update. There are instructions here:

https://docs.particle.io/support/particle-tools-faq/local-build/


#11

Ah great, thanks for pointing me in the right direction!


#12

You can use the homebrew package for gcc I made for po-util.

brew tap nrobinson2000/po
brew install gcc-arm-none-eabi-53