If you are looking for Zephyr experts to port your whole embedded platform onto the Zephyr kernel then you are in the right place. We understand that it can be a daunting task to go over large quantities of your existing code - most of which is probably untested - and move it over to what is perhaps the most skillfully designed platform for IoT devices available.
We can definitely help you with this.
But even if you don’t know what zephyr is, here is a quick introduction to Zephyr RTOS.
Zephyr is an open source real time operating system distributed under permissive licensing making it ideal for development of commercial connected applications.
- Vibrant community participation
- Built with safety and security in mind from the start
- Cross-architecture with broad SoC and development board support (over 393 boards already supported and counting)
- Vendor neutral governance
- Permissively licensed - Apache 2.0
- Complete, fully integrated, highly configurable and modular design for flexibility.
- Product development ready LTS version includes security updates
- Certification ready
Not to mention that we also consider Zephyr to be the only embedded environment that has been designed correctly from the start. After evaluating a multitude of other systems over 20 years of embedded experience, Zephyr is a clear winner when it comes to being cleanly written and well designed.
Case Studies Using Zephyr
Companies choose zephyr when they need to build a system with wide choice of connectivity options while still retaining the efficiency of a bare metal application. Zephyr doesn’t add overhead to how quickly your system wakes up and how quickly it goes back to sleep - making it an ideal solution for battery constrained connected devices.
Grush - The Interactive Toothbrush
HereO GPS Watch For Children
Rigado IoT Gateway
Minut Home Alarm
Zephyr also supports 393+ boards natively through the open source version and many more than that through proprietary extensions developed by us for our customers.
Excellent Architecture Support
With Zephyr you are no longer limited to a particular application. In fact, with native support for most major architectures your application will be future proof for upgrades done to your PCB and hardware. Whenever you decide that you need to move to a new and more modern CPU - the migration of firmware will be largely painless process confined just to lowest level drivers and not the application itself.
Zephyr natively supports:
- TI Xtensa
Zephyr LTS is a long term support version of zephyr which is forked off each stable release. It is:
- Product focused
- Updated with latest security updates
- Compatible with new hardware
- Supported for 2 years
Zephyr is a full-featured OS with an architecture that allows developers to focus on the application.
- Highly configurable and modular
- Supports cooperative and preemptive threading
- Memory and resources are typically statically allocated, benefitting long-running systems
- An integrated device driver interface
- Offers memory protection via stack overflow protection, kernel object and device driver permission tracking, and thread isolation
- Bluetooth® Low Energy (BLE 4.2, 5.0) support, with both controller and host, BLE Mesh
- 802.15.4 OpenThread compliant
- A native, fully featured and optimized networking stack
- Supports a range of subsystems, including USB, filesystem, logging, DFU
It is often the case that product developers initially do not see the benefit of an operating system scheduler - or see it as a possible resource hog. In our experience this is a misguided notion.
A scheduler provides the application with essential features for power efficient operation. It allows code to be written in a modular fashion without the need to turn it inside out (as would be the case with other solutions that try to come up with alternatives to threading).
On the performance side, it is actually more efficient than custom rolled solutions for cooperative multitasking. When your application is more complex than blinking a led - an operating system scheduler is an essential part of your application. It is primarily used not for running multiple application threads - but for greatly simplifying the driver model and for saving power whenever possible automatically and without cooperation of the application code.
Zephyr provides a flexible and modern RTOS kernel that allows your applications to be power efficient and safe.
- Single core, SMP and AMP (via IPM driver) support
- Cooperative and preemptible threads
- Extensive set of synchronization and data-passing primitives
- Isolates user mode threads from kernel and each other
- Exposes a subset of kernel and driver primitives to user mode threads
- Validates all parameters through system calls
- Storage of constant driver data in ROM. Data is instantiated statically through device tree definitions.
- Direct access to devicetree nodes
- Common driver interfaces
Zephyr IP stack is built from scratch for Zephyr.
- Using Zephyr native kernel concepts
- Dual mode IPv4/v6 stack
- Multiple network interfaces support
- Time Sensitive Networking support
- 802.1QAV API
- 802.1AS (gPTP, generalized Precision Time Protocol)
- BSD Sockets-based API
- Compliance and security tested using >500 automated tests for TCP level using commercial products like IWL Maxwell Pro
Supports many high level protocols
- CoAP v1
- MQTT Client
- Native HTTP client
- HTTP server using CivetWEB library
- Websocket client
Many networking features natively supported
- Ethernet over USB
- WiFi with IP offload
- IEEE 802.15.4 with 6Lo
- Bluetooth LE with 6Lo
- CANbus with 6Lo
- Serial modem interface
Bluetooth 5.1 compliant with MESH support
- Low Energy & experimental Bluetooth Classic
- Multiple HCI transports
- Qualified (as of 1.14.1) for BTLE and Mesh
- Can be built separately or combined with the controller
- Active community developing upcoming standards
- Mesh & GATT reference stack in Bluetooth SIG training materials
Zephyrs native USB support paves the way for implementing USB device and host connectivity in your embedded product. USB has typically been a very complex part of embedded software to implement. With Zephyr you get a standardized implementation that works on wide variety of microcontrollers.
Supports USB multiple MCU families (STM32, Kinetis, nRF, SAM, …) * USB 2.0 support * Full and High speed support * Supported classes: * CDC ACM, ECM, EEM * RNDIS * HID * Mass Storage * Bluetooth * Device Firmware Update * Tight integration with the RTOS * Flexible descriptor instancing * Native execution support for emulated development on Linux * WebUSB support
An essential part of quality assurance is automated testing. When we develop software for our clients we aim to have 100% branch and line coverage for all production components. In order to make this possible, it is very important that your whole application - including low level drivers - can be built natively and tested before being flashed to the microcontroller.
Zephyr provides such native compilation through the native posix interface. This allows you to:
- Build Zephyr as native Linux application
- Enables large scale simulation of network or Bluetooth tests without involving HW
- Improve test coverage of application layers
- Use any native tools available for debugging and profiling
- Develop GUI applications entirely on the desktop
- Optionally connect to real devices with TCP/IP, Bluetooth, and CAN
- Reduce requirements for HW test platforms during development
We also work with CMock and Unity to increase testability of client side code. Normally adding mocking support has been a complex task for embedded applications - and even zephyr predominantly uses integration tests natively. We take this a step further and implement unit tests that support testing a driver in complete isolation from other components in order to verify all code paths through the driver code.
Zephyr also provides a posix api which is very useful for application developers. When we build your firmware application, your developers can then take over the development and they can focus on business logic.
The posix api also allows you to easily build third party applications and packages to run on zephyr without having to port them to the zephyr system layer.
- Provides familiar API to non-embedded programmers, especially to Linux developers
- Enable re-use (portability) of existing libraries based on POSIX APIs
- Provides efficient subset appropriate for small (MCU) embedded systems
- POSIX API subset is increasingly popular operating system abstraction layer (OSAL) for IoT
- Supports subsets of PSE51, PSE52, and BSD sockets API
Other Important Features
Zephyr also provides several features that are normally quite costly to implement properly in an embedded application:
- Powerful logging subsystem with multiple backends
- Fully-featured shell for interaction with the system
- Device Firmware Update support via multiple mechanisms
- MCUMgr (UART, BLE, TCP/IP)
- Updatehub (TCP/IP)
- Hawkbit (HTTP)
- Display support with LVGL
- Multiple filesystems and storage mechanisms
- C++ support
Work With Experts
If think this can be useful for your current or future development then we would be happy to partner up with you. We usually start the conversation with a free, no strings attached online call where we get to know each other.
Since we spend most of our time coding software, our time is limited. Here is a calendar that you can use to pick a time slot that would work: