Adding wireless connectivity to IoT devices is complex
When adding a wireless adapter to a PC or Linux-based system, the operating system provides standard interfaces for drivers to instantiate the adapter and to applications to use it. In embedded systems, the only code included in the system is what is necessary for that application. When the business department calls and wants to add IoT capabilities, the development group needs to search for a solution to add connectivity. In embedded systems, there are no standard interfaces resulting in a significant amount of work. This creates a scaling problem for IoT Device developers when adding connectivity and in particular wireless connectivity.
UART & SDIO vs. USB & PCIe
In embedded systems, designers typically use dedicated interfaces like UART or SDIO to connect wireless modules to dedicated ports. These ports consume less power and are more available on microcontrollers than USB or PCIe. The details of these interfaces on different vendor’s products are different. If the vendor supplies a driver for the interface, it will likely differ from the driver capabilities of the same type of interface from another manufacturer. Thus, a specific driver needs to be available for the host microcontroller.
Cellular vs WiFi
For wireless communication adapters, there are some standards such as the 3GPP AT Command set for cellular modems or web sockets for internet data. However, the controls for a WiFi adapter are completely different than the controls for a cellular adapter. Different manufacturers extend common definitions to expose differentiated features and capabilities. Thus, a specific driver needs to be available for the wireless communication adapter.
The Embedded Wireless Framework to the Embedded developers rescue!
Stitching these two levels of drivers together and defining an interface for applications becomes a task for the user. The user must create various definitions and conventions that then become specific to only that product. As wireless adapters change more frequently than embedded systems, device builders need to take time from new product development to execute this process all over again .
The Embedded Wireless Framework consists of a pre-defined concept for the framework with API definitions that enable any developer to create either the microcontroller host interface driver, the wireless communication adapter driver or both. The standard application level API’s enable application code to be re-used across different microcontrollers, different wireless adapters or both. This delivers software reuse for different product variations, sharing code across a larger organization, and for product lifecycle management.
As the library of driver combinations increases, the job for IoT Device builders gets easier by simply tapping the framework, adding drivers from supporting manufacturers, and integrating to their application. Several implementation samples are available for the following:
- Microchip ATSAME54-XPRO
- NXP LPCXpresso55S69
- Renesas EK-RA6M4
- Renesas RX65N Cloud Kit
- ST Micro STM32L4 Nucleo
- Quectel BG96
There are various specific frameworks used in the marketplace. These frameworks are generally tied to a specific operating platform, device set, or use case. The Embedded Wireless Framework is designed to be used without any RTOS, with Azure RTOS, with another RTOS, or in a higher level operating system like Windows or Linux. It is also designed for use in multiple wireless standards like low power cellular and WiFi. In addition, it was important to keep the memory footprint and overhead very low.
The Embedded Wireless Framework is available open source on Github. Anyone can add the host processor interface driver and wireless communication adapter to instantiate the wireless framework applicable for their system. Various drivers are incorporated in popular manufacturer’s development environments and also in Github repos. The embedded community is encouraged to contribute drivers for various adapters.
- Check out the Embedded Wireless Framework GitHub repository and try it out for yourself.
- It's open source and we welcome your contributions on GitHub!