There's a shift happening in the embedded systems world. Development and testing techniques introduced and honed on the internet are starting to make their way into the processes of embedded teams. The idea that as an embedded engineer you would be taking your cues from a web developer would have been laughable 20 years ago. Embedded engineers were the disciplined adults with tried and true methodologies for developing safe, reliable products. Web developers were crazy child cowpokes roaming the wild west of the internet, indiscriminately developing new products however they pleased.
However, over the last 20 years web development transformed from a wild free-for-all into an intense crucible, where only the fastest, the most innovative, and the ones able to learn the quickest from their mistakes survived. One result of this has been a renaissance of sorts in terms of techniques and methods for developing and testing modern software. Examples of this that immediately come to mind are distributed version control (git), automatic regression testing (continuous integration), or containerized environments (docker). Engineers that adopted these practices thrived and prospered while those that didn't struggled to keep up.
Which brings us to 2020 and embedded systems today. As an embedded engineer you have over 50 years of knowledge and expertise baked into your toolchain, which is amazing. These are rock-solid tools that have been tested over decades. The flip side of this, though, is that these tools do not integrate seamlessly with modern software techniques. If you want to create an end-to-end (Developer-to-DUT) CI pipeline, you need to cobble together and duct tape a lot of different systems. Making that pipeline reliable and scalable as your team grows is a full time job in itself. The result is that there is a software revolution happening and as an embedded engineer you are being left out in the cold.
You could argue that this is because embedded systems are fundamentally different from web products. Namely, that embedded systems are physical devices that (mostly) live outside the realm of AWS, Azure, or Google Cloud. Without massive amount of devops infrastructure, an embedded engineer can't simply "spin" up a piece of hardware. But this brings home the point from above, which is that it's a lack of infrastructure that's inhibiting embedded engineers from quickly adopting the same modern practices being used by web developers.
And the stakes are high. Embedded engineers that can successfully build this infrastructure and successfully bridge the "hardware / software" divide will have powerful modern techniques that allow them to catch bugs faster, iterate on features faster, and ultimately get their products to market faster. While engineers that can't will struggle to ship products that are reliable, feature complete, safe, and on-time.
This is why we are developing the Lager platform. Lager bridges the "hardware / software" divide by giving you the infrastructure you need to implement modern testing and development practices. Here are a few quick examples of what an engineer on the Lager platform can do within minutes of starting:
- Set up a Developer-to-DUT CI pipeline that allows you to integrate your hardware with GitHub actions (or BitBucket pipes, or GitLab, or...) so that you can a) Connect to your DUT, b) Flash your DUT c) Run tests on your DUT, and d) Pipe the results of those tests back, allowing you to either integrate that new feature into your mainline code with confidence, or catch and fix a regression.
- Create "containerized" build environments for your embedded project that run on Docker. This completely de-couples your project's build environment from your host computer and allows you to easily do cloud builds within GH/BB/Drone with no extra work.
- Interact with hardware and debug firmware that is physically remote from you. This includes running real-time GDB and Serial sessions, reading and writing GPIO pins, and setting up SPI and I2C host adapters.
More than simply a collection of features that makes your life easier, Lager is a key that opens the door to a powerful new way of developing products.