Software development problems solved with SimpleSwitch™
It’s a problem all too familiar to software developers: beginning a project with a poorly defined feature set, working in parallel with a hardware team who wants to select a module right from the start, so they can develop their carrier board. But how can you make the right choice so early in the process, when you’re not even sure what you’re going to develop?
The answer to this might be to just create ten iterations. But, of course, no budget is infinite. And then there’s the issue of time. Often, you need to move quickly. Really quickly.
These are precisely the problems we wanted to solve when we created SimpleSwitch. With it, you can prototype an application at speed with the most common frameworks, such as Python, QT or Flutter. We provide a virtual machine that shares the same hardware interfaces as the modules your hardware team has on order.
In addition to giving your development strategy a new flexibility, SimpleSwitch gives you a means to create your application once and then redeploy it on all our compatible modules. In other words, you can use the same application without changing a line of code by simply switching modules. Even when you’re accessing hardware such as GPIOs or I2C.
SimpleSwitch also gives you access to a library of building blocks for making the prototyping phase even easier. In this store you’ll find blocks to enable communication between different apps you are developing. For instance, an MQTT broker, a different web browser and several solutions to connect your device to a cloud.
To understand how easy it is to use SimpleSwitch, our Software Technology Lab has created a technology demonstrator, which includes an AvE display and several SMARC modules. The HMI was developed using Flutter and the back end is in Python. To enable the communication between these two applications, we use a MQTT broker which we pulled from the store of building blocks mentioned above.
In the video below, you can see how we switch between modules, but do not change the SD card. This is because we have base images programmed in the EMMC of the module, and then this image is different between the modules, However, on the SD card we only have one version of the front-end and the back end. The reason? SimpleCoreIO.
This technology abstracts the hardware. In this case we use a SMARC module, so the abstraction layer exposes the hardware interfaces available, always using the same names. If you are using an i.MX8 nano or an i.MX8 M plus, or even an Intel SMARC module, you will always have the same names. Be aware that if you use Intel, you will need to recompile, but thanks again to SimpleCoreIO, it will work without changing the source code.
You can even continue to use SimpleSwitch for your development post-prototyping, either on real hardware or you can take advantage of a virtual machine we provide, which is an option popular with large software teams. Then, when you’re ready, you integrate your applications in exactly the same way.
Everything is open source, smoothing the path to production even further. However, it must be noted that everything we provide is in the spirit of bringing true simplicity to the development process and the security around your production image is solely in your hands.
In our next video, we will be taking a deep dive into the architecture of SimpleSwitch™ and following this with how to set up your computer, program a SMARC module and finally begin developing your first application using SimpleSwitch™.