Enabling smart design of IoT applications
The number of applications which can benefit from this unhindered, automatic device-to-device communication is growing exponentially. Embedded applications often have limited resources regarding memory, CPU speed and power supply. Single-purpose designs might indeed have a decent user-interface, but even in those cases it's almost always necessary to optimise power, CPU and memory usage to a minimum.
Whether the design uses wired or wireless connectivity, the trade-off remains between fine-tuning the embedded software for optimising power and performance, versus getting the product out the door quickly. Additionally, it is desirable to re-use as much previously optimised code as possible. Modern developers do not have time to struggle with writing low-level functions and headers for peripheral drivers or communication protocol stacks.
Tools are needed which can facilitate this kind of rapid-but-optimal software development to allow the embedded developer to focus on what's really important, their secret sauce: their application. Altium's Software Platform Builder provides the necessary stacks in the familiar Eclipse IDE to allow this rapid development of IoT embedded applications.
What is it all about?
In retrospect some questions seems so obvious. And the idea for the Software Platform came with one: why does embedded software development take so much more time than developing a similar desktop application?
This seems a legitimate question, asked by many embarking on their first embedded coding project. Simply showing "Hello World!" on the LCD display of an embedded evaluation board requires a surprisingly large amount of effort. Driving the LCD, converting characters to pixels, keeping track of the cursor, etc. – nothing seems to work automatically. And even if convenient libraries are available, for example for TCP/IP communication, then there is still a lot of work to be done to make the new code fit into the application and to configure it correctly. This cycle often repeats itself for every new project.
These challenges motivated us to come up with what we now call the Software Platform. The basic concept is quite simple. Put generic software components in a repository and provide them with a uniform interface. Assure the software components can be configured in a standardised manner. This way, one does not have to know how each component is built up internally. Because of the unified interface, components can easily work together. A graphical environment presents the software components as coloured blocks. Required blocks are picked from the repository to create a starting point for the application. Components can be configured to match the application's requirements and relationships between selected components can be specified.
The Software Platform Builder is all about integration of content. It is not the content itself that makes it so special. Much of the current content comes from third parties and can be downloaded freely from the Internet.
But creating an application with a bunch of collected software components is not so easy. That is where the Software Platform is helpful. It provides the content in a way they can work smoothly together. All components can be configured in a similar way. And that combination creates the possibility to build reliable applications rapidly.
A Software Platform Builder for ARM Cortex-M CPUs
As it now stands, Altium's Software Platform Builder is targeted for the creation of ARM Cortex-M CPU based applications. The Software Platform itself includes various software modules which are added to the application code if needed, like RTOS facilities, peripheral access and communications protocols. The Software Platform is both a graphical editor and a code generator. Collections of software modules are delivered as Software Platform repositories.
The repository may contain any kind of software, but typical modules include interrupt services, timers, peripherals (hardware wrappers), drivers, kernel services (such as POSIX multi-threading), device I/O, file system (FatFs), networking (TCP/IP), graphical user interface, etc.
|Related Articles||Editor's Choice|