Cloud Services for Embedded Agile Development

At ThingForward we're spending quite some time on investigating tools for modern embedded development. As this cannot be done by a single tool, we're defining a tool chain which focuses on the work of modern, agile development teams. In the end it's not only the tools that have to work together, but primarily the people from the world of embedded hardware, embedded firmware and web software. Most of our blog posts from the past are focused at tools which are installed locally on a developers desktop. We asked ourselves how many of these tools could be pushed to the cloud - quite many as we found out! This small blog post series will introduce in those tools, how to set them up, connect them together and develop for embedded.

Code

First of all, it starts with code. Typically, embedded shops would want to have their code locally, hopefully in a modern version control system such as Git (and not on some file system only). Using Code Repository as cloud services has some years of history by now, since modern VCS' are distributed and can live at various places without the need of selecting one as a master. Examples are GitHub, BitBucket, GitLab or Gogs (gogs only self-hosted). With GitHub being the probably most popular, we've chosen it to be part of our embedded cloud stack.

IDEs

IDEs are the core part of developer productivity. Typically they're installed on a dev's desktop/notebook. But what if you want to look at code from other notebooks when travelling, or from a tablet? Yes, you're going to use cloud/web based IDEs. Examples of these are Cloud9, CodeAnywhere or Codenvy. We're going to look at some of them and find out if they're compatible with our embedded toolchain stack around PlatformIO.

Continuous Integration

Now Continuous Integration is truly a server-based thing: You set up a CI server, which has access to your code and artifact repositories, you let it build, test and optionally ship/deploy your code. No wonder this functionality soon found its way into the cloud, with CI services from TravisCI, CircleCI, or more customizable solutions around i.e. Jenkins, from Bitnami(https://bitnami.com/stack/jenkins). But can these services build and test for embedded? Yes, they can! We're going to show you how.

Remote Firmware Management

Using cloud services for embedded might look nice, but in the end, a firmware binary has to find its way onto an MCU. And these boards do not live in the cloud, but are piling up on our desktops. Or maybe they're attached to a server as a device farm, ready to run tests etc. We're going to see how we can flash, serial-monitor and debug from remote locations, in a way that is compatible with all the cloud servics mentioned above.

This kicks off our Cloud/Embedded post series. Stay tuned for more blog posts, starting with a look at some Cloud IDEs!

Your Thingforward team