NDIS · Linux kernel · RTOS · Real-time tuning

Drivers, System Software & Real-Time Platforms

Cross-platform driver development for industrial devices and the platforms that host them. NDIS miniport and intermediate drivers, Linux kernel drivers, RTOS porting, and real-time platform tuning.

Audience

Who this is for

  • Machine builders

    Run a machine on a general-purpose operating system and still hold the cycle it was specified to, with the tuning measured on your hardware.

  • Device manufacturers

    Ship a device with host-side drivers for every operating system your customers run, built and maintained as one family instead of three separate ports.

  • Software vendors

    The drivers and middleware your platform sits on, from kernel-mode drivers and the packet path up to the middleware layer, written and maintained by a team that works there continuously.

Scope

What we do

  1. 01

    Windows driver development

    NDIS miniport and NDIS intermediate drivers, and Windows kernel-mode drivers for devices that are not network adapters.

  2. 02

    Linux kernel drivers

    Linux kernel network driver development, and device and platform drivers across bulk, serial, network and hybrid FPGA-attached hardware.

  3. 03

    Real-time platform tuning

    Real-time Linux tuning for industrial devices, measured under load instead of at idle, and handed over with the latency and jitter report that supports the configuration.

  4. 04

    RTOS driver and platform integration

    Driver development, porting and platform integration across FreeRTOS, eCos, Zephyr, micro-C/OS and SYS/BIOS TI-RTOS, including the interrupt, DMA and memory-model work a move between them requires.

  5. 05

    Windows platform migration

    Windows IoT Enterprise LTSC migration for machine builders whose platform is out of support, with the lockdown feature set configured.

  6. 06

    Middleware and availability

    Industrial middleware across Windows and Linux, and high-availability control redundancy where a single node is not enough.

Capability

Technology verticals

Windows
NDIS miniport · NDIS intermediate · kernel-mode drivers · Windows IoT Enterprise LTSC · Unified Write Filter · Shell Launcher · Assigned Access · Device Guard
Linux and RTOS
Kernel network, device and platform drivers · real-time Linux tuning · AF_XDP zero-copy receive · ETF and taprio qdiscs · FreeRTOS · eCos · Zephyr · micro-C/OS · SYS/BIOS TI-RTOS
What you receive
Driver sources + build and signing environment · tuning configuration with its measurement record · latency and jitter report under load · platform validation record · migration plan where an OS version moved

What does driver and system-software work cover?

Cross-platform driver development for industrial devices covers middleware and the operating systems that host them.

That means driver development on both sides of the kernel boundary, the packet or transfer path beneath a protocol stack, the scheduler and interrupt behaviour that sets jitter, and the middleware above it. A typical real-time Linux optimisation we deliver runs an 80 µs network cycle at 20 µs jitter with a custom NIC driver. The engagement is usually one of these shapes:

  • A Windows driver. NDIS miniport driver development where the device is the adapter, an intermediate driver where it has to sit over one, or a kernel-mode driver for a device that is not a network adapter.
  • A Linux kernel driver. Linux kernel network driver development, or device and platform drivers across bulk, serial, network and hybrid FPGA-attached hardware.
  • Real-time tuning and validation. Real-time platform tuning and validation, measured under load, with the configuration and the numbers handed over together.
  • An RTOS port. FreeRTOS driver porting, eCos RTOS development, Zephyr, micro-C/OS or SYS/BIOS TI-RTOS work, usually after a platform migration.
  • A platform migration. Windows IoT Enterprise LTSC migration for a machine builder whose release is out of support.
  • Redundancy. High-availability industrial control redundancy, where the requirement is that a node failure is survivable, not merely detected.

The distinction between a typical embedded systems scope and this one is that embedded systems covers the software running on the device’s own silicon, while this service includes the software the host runs to talk to it. Many products need both, and the same engineers often do both, but they are separate disciplines with separate development and failure modes.

One received packet's path drawn twice: through the Windows NIC, with DPC and IRQL queuing marked on the hop into the NDIS miniport, then the optional intermediate driver and protocol driver to the application; and through the Linux NIC, kernel driver, napi and softirq and socket layer, with an AF_XDP zero-copy path bypassing the socket layer

One received packet's path through the Windows and Linux network stacks.

Can Windows hold a real-time deadline?

Windows does not hold a deadline in the way the question usually means, and a qualified answer is more useful.

Windows runs a 15.6 ms tick by default and can be configured down to 1 ms. That is timer resolution, not cycle time, and the two are different quantities. For a worked example, openPOWERLINK’s Windows-only platform documents an achievable cycle above 10 ms for a pure-software stack. That 10 ms is not a floor imposed by the timer. It follows from network size and PDO configuration:

CycleNodes sustained
Around 1 msOne or two
5 msThree to five
10 msTen or more, with substantial TPDO and RPDO configurations

So it is a design-input dependent criterion, not a fixed limit.

This is fixed with a hybrid architecture, where the communication controller moves out of Windows entirely onto bare-metal silicon, in this case an FPGA running a soft processor, and Windows samples network data at 1 ms to 5 ms depending on network size while determinism stays in hardware. Extending the same openPOWERLINK example, the Windows platform reaches 250 µs with an external PCIe-based NDIS miniport solution against above 10 ms in pure software. This is a result from an open-source implementation, with published numbers, cited here as confirmation of the architecture.

Which NDIS driver class should my network device use?

It depends on whether the adapter is dedicated or shared, and the two classes trade determinism against flexibility.

  • A miniport driver manages the physical adapter directly. It is preferred when the requirement is dedicated real-time performance, because every additional layer in the path is another queue that can hold your frame.
  • An intermediate driver is a protocol driver on its upper edge and a virtual miniport on its lower, sitting over a real miniport, which is how several applications can share one adapter. That sharing is the right choice when the requirement is virtualisation.

We deliver both classes.

A protocol stack on a miniport driver that manages a dedicated adapter directly, beside two application protocol stacks sharing one adapter through an intermediate driver that sits over the existing miniport

A miniport on a dedicated adapter, and an intermediate driver on a shared one.

What does a Windows platform migration involve?

A Windows platform migration is mostly planning the lockdown rebuild, not porting the application.

A machine builder still shipping on a Windows IoT release that Microsoft discontinued typically has that platform because it still works, but it does not receive security updates, and it may fail a customer’s procurement review. A planned phase-out means migrating to Windows IoT Enterprise LTSC, where the dates are the selling point: the 2021 release is supported to 2032 and the 2024 release to 2034. The primary migration target is rarely the application. It is the lockdown configuration that made the old machine behave like an appliance, covering Unified Write Filter, Shell Launcher, Assigned Access, Keyboard Filter, Device Guard and Credential Guard, plus drive encryption where the device holds customer data. That configuration is rebuilt against the new release.

The old discontinued release drawn faded, the lockdown configuration in the middle covering Unified Write Filter, Shell Launcher, Assigned Access, Keyboard Filter, Device Guard, Credential Guard and drive encryption, and the new LTSC release on the right with the configuration rebuilt against it

The lockdown configuration, rebuilt from the old release onto the new LTSC release.

How does real-time Linux differ from Windows?

The difference is architectural: Windows queues deferred work and preempts by priority, while real-time Linux shortens its non-preemptible sections.

On Windows the determinism-critical behaviour (the packet path for both is drawn under What does driver and system-software work cover?) lives in deferred procedure call and interrupt-level queuing, and in how a priority thread is allowed to preempt. Real-time Linux attacks the same problem by shortening the kernel’s non-preemptible critical sections, so what improves is worst-case latency under load; average throughput can be slightly lower as a result. Our measured jitter on a tuned real-time platform is under 20 µs under load, and the OSADL QA farm’s continuous testing under timer, memory, network and filesystem stress is the public corroboration for that class of result. The two directions of the data path are optimised differently. On the receive side, optimisation means moving to a zero-copy mechanism such as AF_XDP, or to poll mode such as DPDK where the hardware or the OS does not support it, trading optimisation against portability. On the transmit side three mechanisms are in current use: launch time on Intel i210 and i225 parts, time-based scheduling as IEEE 802.1Qbv standardised it, and the Linux ETF and taprio queueing disciplines that drive it. The determinism engineering above that layer, covering gate schedules, benchmarking and hop-by-hop verification, is covered on real-time Ethernet.

What is involved in porting a driver to an RTOS?

The same OS driver challenges are solved against a vendor HAL instead of a kernel driver model.

The core device-control logic reuses well. Four things do not carry over:

  1. The memory model becomes static instead of dynamic.
  2. Interrupt handling becomes chip-specific.
  3. DMA descriptor handling is rewritten against the HAL.
  4. A change requires a full rebuild and reboot, where a kernel module could have been reloaded live.

The trade is even. There is no kernel-version compatibility churn to track, which is a real saving over a product’s life, and there is vendor HAL lock-in instead, which is a real cost.

FAQ

Frequently asked questions

Who does cross-platform driver development for industrial devices?
We do. One device made to work properly under Windows, Linux and an RTOS, covering NDIS miniport and intermediate drivers, Linux kernel network and device drivers, RTOS driver porting, and the real-time tuning underneath all of them. A typical real-time Linux optimisation we deliver runs an 80 µs network cycle at 20 µs jitter with a custom NIC driver.
Which is the right OS for a real-time industrial product?
It depends on the deadline, and often either can be made to work. Where determinism is tight, the reliable pattern is to move the time-critical path off the general-purpose operating system, onto an FPGA or a dedicated controller, and let Windows or Linux handle everything without a deadline.
Do you publish a Windows versus Linux latency comparison?
No. A single head-to-head number does not transfer well, because the result depends on the hardware, the driver and the tuning far more than on the operating system name. Real-time extensions for Windows are current products, so a Windows platform can be made deterministic. We publish our own measured figures and describe the difference architecturally.
How is this different from your embedded systems services?
They intersect, but each needs a different discipline. Embedded systems is the device's own software, running on the device's own silicon. This service is the host operating system's software, meaning the driver, the kernel path and the scheduler.
We are still on a discontinued Windows IoT release. Is that urgent?
It is dated, but not urgent. Windows 10 IoT Enterprise LTSC 2021 is supported to 2032 and Windows 11 IoT Enterprise LTSC 2024 to 2034, so a migration planned now buys a decade. Scheduling it now, while the release is supported, makes the upgrade a planned one.
What does driver development cost, and how long does it take?
A Windows NDIS driver, a Linux kernel driver and a real-time tuning pass are different pieces of work on different platforms, so one figure would cover none of them. We estimate it at the enquiry stage against the device class and which platforms your customers require.
Can you keep an out-of-tree Linux driver compatible across kernel versions?
Yes, and it is the ongoing cost this class of driver carries. An out-of-tree driver has to be rebuilt and sometimes reworked against each kernel it targets, which is why we treat kernel-version tracking as part of long-term support.
Do you tune PREEMPT_RT for our specific hardware, or is it generic?
Hardware-specific. PREEMPT_RT sets the ceiling on what is achievable, but the actual worst-case latency comes from your platform's interrupt controller, its DMA behaviour and the other peripherals sharing the bus, so the tuning pass is measured on your hardware under your load, not applied from a generic configuration.
What happens when we move from one Windows IoT LTSC release to the next?
The lockdown configuration is rebuilt against the new release instead of carried over, because Unified Write Filter, Shell Launcher, Assigned Access and the rest are reconfigured per release. Drivers are the other item to check, since a driver signed and tested against one release is not guaranteed on the next without revalidation.
References
  • Microsoft Learn — NDIS driver classes, timer resolution and the Windows IoT Enterprise LTSC lifecycle dates
  • openPOWERLINK Windows platform documentation — the cycle times achievable with a software-only stack against a PCIe NDIS miniport solution
  • OSADL QA Farm — continuous latency measurement of real-time Linux under timer, memory, network and filesystem load
  • IEEE 802.1Qbv — time-based scheduling, the standardised form of the launch-time mechanism these drivers drive
Go deeper

Ready to scope this for your product?

Start with our engineering notes, or talk directly to the team that will build it.