I wanted to experiment with OpenOCD so I compiled the firmware into one file:
firmware/main$ make clean all -s PLATFORM=photon COMPILE_LTO=n APP=blink program-dfu MODULAR=n
but now I don’t want to compile the entire system, just the user part, so the question is what do I do?
Changing MODULAR to y:
firmware/main$ make clean all -s PLATFORM=photon COMPILE_LTO=n APP=blink program-dfu MODULAR=y
obviously doesn’t work and neither does calling make from the modules directory
/firmware/modules$ make clean all -s PLATFORM=photon COMPILE_LTO=n APP=blink program-dfu
the one above actually loads the code in parts, but after flashing the user part in just breathes purple
What is the right non-modular path?
If you are building an app module, you’d need the modular system on the device too.
Monolithic firmware is, well, ***mono***lithic, system and app firmware are one.
So you either have to
- build the full set of modules and flash them (if you had changed something in the system modules), or
particle update(or any other way to reload the official system modules), or
- always build the monolithic firmware (but you can scrap the
cleanswitch in the make command to speed up the build)
Thanks ScruffR for the summary. Running ‘particle update’ fixed everything, but I checked out the first option as well.
This time somehow running make in the firmware/modules directory worked fine and I was able to modify, compile and flash the user part alone ever since. Monolithic firmware is good for openocd I guess, but the flashing time is much longer compared to the user-part alone. Anyway thanks a lot for your help.