The technologies that Particle is based on

Hey guys,

I’ve been curious about Particle and how they developed their products (ethernet, wi-fi, and cellular Internet of Things product development hardware and tool chains). I’m going to write a short essay to see if I understand things correctly, hopefully someone can correct me where I’m wrong.

I think it’s fair to say that most of the work that Particle does is in the realms of server-side web development, developing the Particle IDEs, Particle CLI, Particle Firmware, and of course the hardware like the Photon and Electron.

Particle’s MCU operating system is based on a SDK called WICED that was developed by Broadcom, which was recently bought by Cypress.

WICED is basically a software development kit for microcontroller applications that use Broadcom Wi-Fi modules. In other words, Broadcom provided Particle with a microcontroller solution that comprised the microcontroller’s operating system, and the physical Wi-Fi chip when they were developing the Photon.

To add another layer of abstraction, Broadcom’s WICED kit is based on the FreeRTOS microcontroller operating system, which is the de-facto operating system used on most microcontrollers worldwide.

After the success of the Photon, Particle moved on to produce the Electron, which uses the same WICED / FreeRTOS operating system left as a legacy of the Photon which provides for backward compatibility.

Most of what we see as engineers coding the Electron is the Wiring framework, which is basically the “Arduino Language” C++ based IDE and libraries that one uses to write a program. Particle has ported the Wiring IDE into their Particle Dev PC based IDE and Particle Build, their Web IDE.


The part that I don’t understand at the moment is how the compiler works in conjunction with the various releases of Particle Firmware and the FreeRTOS. Is the compiler essentially a product of FreeRTOS that is configured to add in Wiring libraries and Particle Firmware (based on target build of the device you are compiling for)? Is this essentially what is happening behind the scenes when I create a hello world program?

1 Like

The compiler used is a standard arm-none-eabi GCC compiler which you can set up as local toolchain to locally tweak and build the system firmware using the open source repo

^^ Actually, we do a ton of work developing hardware, solving complex operations and logistics and distribution challenges, sourcing components internationally, providing support, planning for things to come, etc, etc.

^^ Actually, we’ve based our operating system on FreeRTOS, WICED is an SDK that makes it easier to talk to the P0 and P1, which are Broadcom based radios.

^^ WICED is an SDK for Broadcom stuff, but they didn’t provide us with the modules (Broadcom doesn’t make hardware, they like ARM, design it but don’t build it.) We also have non-Broadcom solutions we support (Electron, Bluz, Oak, etc), so we have to account for lots of different hardware and radios.

We didn’t “move on”, we are still actively developing and improving on the Photon.

^^ Actually, very little of what people use is “Wiring”. We provided some headers and libraries to get you some of the same experience, but there is lots, lots more going on. ( https://github.com/spark/firmware ). We didn’t port the Wiring IDE. Wiring is a language, the Arduino IDE is a port of the Processing IDE. We made our Web IDE from scratch, and our downloadable IDE is running on Atom.

^^ We built a comprehensive, fast, scalable build farm that lets you nearly instantly compile firmware for a huge variety of microcontrollers. Most major compilers have toolchains you can install and use, and we did the hard work of hugely simplifying many aspects of that so you can click in a web browser, or compile from the command line.

I hope that helps!

Thanks,
David

9 Likes

Amazing, thanks for the explanation. Sound like you guys do it all!

1 Like

We like to stay busy :slight_smile:

1 Like