Menu

Zephyr RTOS Beta

Jungo WinDriver and Zephyr RTOS form a powerful combination for developers building embedded systems with PCIe connectivity. WinDriver accelerates the creation of custom PCIe drivers without requiring kernel-level coding, while Zephyr provides a lightweight, open-source real-time operating system optimized for resource-constrained devices.

To make this integration seamless, Jungo provides ready-to-use sample applications that run under QEMU emulation with Zephyr:

pci_diag: A general-purpose example for basic PCI operations such as reading and writing to PCIe configuration space, I/O, and memory BARs, as well as handling interrupts. Available for both x86_64 and ARM64 QEMU.

xdma_diag: Demonstrates usage of Xilinx’s XDMA IP under Zephyr, running in x86_64 QEMU emulation.

avalonmm_diag: Showcases Altera’s Avalon MM DMA for PCIe IP on x86_64 QEMU emulation.

These files are extremely useful for anyone pairing WinDriver with Zephyr, as they provide ready-made, proven test cases and a reliable foundation for building and validating PCIe-enabled applications.

Simply complete the contact form on the right to start your download.

"*" indicates required fields


This guide explains how to set up QEMU for WinDriver on Zephyr, handle common issues, experiment with the EDU device, and configure PCI passthrough for testing on physical hardware. It also outlines how to port Zephyr to new platforms.

By following these steps, developers gain several advantages:

  • Rapid Emulation with QEMU
    Quickly bring up WinDriver in a virtualized Zephyr environment without needing immediate access to hardware. This reduces development risk and accelerates early driver testing.

  • Troubleshooting Common Issues
    The guide documents known QEMU pitfalls (like MSI support and Slirp packet warnings) and provides workarounds, saving developers hours of debugging time.

  • Safe Experimentation with the EDU Device
    QEMU’s built-in EDU device allows you to experiment with PCI operations in a controlled sandbox. This makes it easier to learn and test before applying changes to real-world hardware.

  • Hardware-Accurate Testing with PCI Passthrough
    Using VFIO passthrough, developers can validate their drivers directly against real devices inside a VM. This ensures that what works in emulation also works on physical PCIe hardware, bridging the gap between simulation and production.

  • Future-Proof Portability with Zephyr
    By leveraging Zephyr’s porting framework, you can move your driver stack to custom boards and platforms. Combined with WinDriver, this provides a smooth path from prototype to deployment.

In short, this workflow empowers teams to prototype faster, debug smarter, and deploy with confidence, making WinDriver and Zephyr an ideal combination for embedded driver development.


WinDriver On Zephyr Workflow

Set up QEMU for WinDriver on Zephyr

  1. Install QEMU on your host computer (Linux recommended).
    See the official Download QEMU page for detailed installation instructions.
  2.  

  3. Download the WinDriver Zephyr samples. WinDriver includes three sample projects, each with a QEMU script to boot in QEMU.

 

Samples included:

  • pci_diag – General-purpose PCI example: read/write PCIe configuration space, PCIe I/O, memory BARs, and interrupt handling. Supports x86_64 and ARM64 QEMU emulation.
  • xdma_diag – Example for Xilinx XDMA IP, available on x86_64 QEMU emulation.
  • avalonmm_diag – Example for Altera Avalon MM DMA for PCIe IP, available on x86_64 QEMU emulation.

Run a sample: download the WinDriver Zephyr package, navigate to the desired sample folder, and execute the matching QEMU script.

Shell

# For x86_64
$ chmod +x x86_64.sh
$ ./x86_64.sh

# For ARM64 – QEMU version above 6.2 is needed
$ chmod +x aarch64.sh
$ ./aarch64.sh
  

 

Exit QEMU: press CTRL + A, then x.


 

The QEMU scripts (what they do)

The WinDriver samples are distributed as ELF binaries built specifically for running WinDriver on QEMU on x86_64 and ARM64. Each sample includes a bash script that boots the ELF in QEMU—setting CPU, memory, network device, serial console, and loading the ELF so Zephyr starts automatically.

x86_64

For x86_64 samples, two ELFs are provided: a locore ELF and a main ELF.

  • The locore ELF initializes the CPU and sets up early environment.
  • The main ELF contains the Zephyr kernel and the application.

Example x86_64 script:

Shell

#!/bin/bash
args=(
    -m 1G
    -cpu qemu64
    -smp cpus=2
    -no-reboot
    -nographic
    -device e1000,netdev=net0
    -netdev user,id=net0
    -serial mon:stdio
    -device loader,file=pci_diag_x64_zephyr-qemu-main.elf
    -kernel pci_diag_x64_zephyr-qemu-locore.elf
    -device edu,dma_mask=0xffffffff
)
qemu-system-x86_64 "${args[@]}" 2>/dev/null
  

 

ARM64

For QEMU ARM64, QEMU 6.2+ is required. Only the pci_diag sample is available, as a single ELF.

Example ARM64 script:

Shell

#!/bin/bash
args=(
    -m 1G
    -cpu cortex-a53
    -smp cpus=2
    -machine virt,gic-version=3
    -global virtio-mmio.force-legacy=false
    -no-reboot
    -nographic
    -device e1000,netdev=net0
    -netdev user,id=net0
    -serial mon:stdio
    -kernel pci_diag_zephyr_arm64.elf
    -device edu,dma_mask=0xffffffff
)
qemu-system-aarch64 "${args[@]}" 2>/dev/null
  

 

Known issues

AARCH64 MSI not supported (older QEMU): Use QEMU 6.2+ to avoid:

Shell

qemu-system-aarch64: MSI is not supported by interrupt controller

 

Slirp warning (harmless): If you remove 2>/dev/null from the scripts, QEMU may print:

Shell

qemu-system-x86_64: Slirp: Failed to send packet, ret: -1

 

This does not affect functionality. Restore 2>/dev/null to suppress it.


EDU device (optional test device)

You can include QEMU’s EDU device for functional testing. For example, the pci_diag script includes:

Shell

-device edu,dma_mask=0xffffffff

 

See the QEMU EDU device documentation for details.


 

PCI passthrough (VFIO) for testing on real hardware

You can test WinDriver directly with your physical PCIe device using VFIO PCI passthrough.

 

1) Enable IOMMU in the kernel (GRUB)

Edit /etc/default/grub:

Intel:

Shell

GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on iommu=pt"

 

AMD:

Shell

GRUB_CMDLINE_LINUX_DEFAULT="amd_iommu=on iommu=pt"

 

Update GRUB and reboot:

Shell

$ sudo update-grub
$ sudo reboot

 

2) Bind the device to the VFIO driver

Load VFIO:

Shell

$ sudo modprobe vfio-pci

 

Identify your device (e.g., GPU or NIC):

Shell

$ lspci -nn

 

Suppose the device ID is 1234:5678. Bind it to VFIO:

Shell

$ echo "1234 5678" | sudo tee /sys/bus/pci/drivers/vfio-pci/new_id

 

3) Configure the VM (use BDF)

 

Get the BDF:

Shell

$ lspci -Dnn

 

You’ll see something like:

Shell

0000:00:05.0 Unclassified device [00ff]: Device [1234:11e8] (rev 10)

 

Here the BDF is 0000:00:05.0.

Add to QEMU arguments:

Shell

-device vfio-pci,host=<Your BDF>

 

4) Boot and test

Start QEMU (passthrough requires elevated privileges). Once the VM boots you should see the WinDriver main menu.

Enter 2 and your device should appear.


 

Porting Zephyr to new hardware

To port Zephyr to custom hardware, follow the official Zephyr porting guide.

Benefits

Simplified Driver Development
WinDriver abstracts low-level complexities, making it easier to build and test drivers on Zephyr RTOS
Cross-Platform PCIe & DMA Support
Seamlessly supports PCIe, XDMA, and Avalon-MM DMA devices across x86_64 and ARM64 QEMU environments.
Faster Prototyping and Debugging
Precompiled Zephyr samples with QEMU scripts allow quick setup and validation without dedicated hardware.
Scalable for Embedded to Enterprise
Combines Zephyr’s lightweight RTOS with WinDriver’s robust APIs, enabling scalable solutions from IoT to enterprise systems.
Full Benefits
Guidance
Features
Technical Data

WinDriver Download Free 30 Day Trial

Software License Agreement of WinDriver (TM) Version v16.5.0
© Jungo Connectivity Ltd. 2024 All Rights Reserved

IMPORTANT – READ CAREFULLY: THIS SOFTWARE LICENSE AGREEMENT (“AGREEMENT”) IS A LEGAL AGREEMENT BETWEEN YOU AND JUNGO CONNECTIVITY LTD. (“JUNGO”), FOR THE WINDRIVER SOFTWARE PRODUCT ACCOMPANYING THIS LICENSE (THE “SOFTWARE”). BY INSTALLING, COPYING OR OTHERWISE USING THE SOFTWARE, YOU AGREE TO BE LEGALLY BOUND BY THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT, DO NOT INSTALL, COPY, OR OTHERWISE USE THE SOFTWARE.

 

  1. OWNERSHIP OF THE SOFTWARE. All right, title, and interest in and to the Software, including associated intellectual property rights, of any sort and/or kind, are and shall remain solely with Jungo and its licensors, and may be protected by copyright, trademark, patent and trade secret law and international treaties. This Agreement does not convey to you an interest in or to the Software, but only a limited, non-transferable, non-sublicensable, non-exclusive, and revocable right of use, in accordance with the terms of this Agreement. You may not remove any proprietary notices and/or any legends from the Software, in whole or in part.

 

  1. GRANT OF LICENSE. Jungo hereby grants you a personal, non-exclusive, nontransferable, non-sublicensable node-locked and time limited license to use the Software.

 

    – Individuals: Jungo grants you, as an individual, a personal, non-exclusive, “single-user” license to use the Software on a single computer, in the manner provided below, at the site for which the license was given.

 

    – Entities: If you are an entity, Jungo grants you the right to designate one individual within your organization (and only one) to have the right to use the Software on a single computer, in the manner provided below, at the site for which the license was given.

 

    – License Scope: A single user license allows usage of WinDriver and redistribution of certain components (as defined below) within a single end product SKU, for a single device (identified by its VID/PID (USB) or VID/DID (PCI)), and without SDK/API capabilities.  If you need extended license or distribution rights, please contact Jungo.

 

  1. EVALUATION LICENSE. If you have not yet paid license fees for the use of the Software, then Jungo hereby grants you a personal, non-exclusive, non-transferable and non-sublicensable license to internally use the Software for evaluation purposes only, for a period of 30 days (the “Evaluation License”). If, after the expiration of the Evaluation License, you wish to continue using the Software and accompanying written materials, you may do so by remitting the required payment to Jungo, and you will then receive a registration code and a license string that will permit you to use the Software on a single computer under one of the license schemes specified in Section 2 above.

 

  1. SERVICE OPTIMIZATION AND ENHANCEMENT. To continuously improve and optimize Jungo’s services, Jungo reserves the right to anonymously monitor, collect, and analyze usage data, including but not limited to API interactions, performance metrics, and system activity. Such data collection and analysis shall be conducted in compliance with all applicable laws and regulations and shall be used solely for the purpose of enhancing service performance, security, and reliability.
  2. SUBSCRIPTION, SERVICE CONTINUITY, RENEWAL, AND LATE PAYMENT PENALTIES. Access to the WinDriver and its associated features is provided on a subscription basis, subject to annual renewal. Failure to renew the subscription before the expiration date may result in the automatic termination of access to the platform and all related services, and additional fees (including but not limited to late payment penalties, administrative charges, or reinstatement costs). Upon termination, the user shall forfeit any rights to continued use, and we reserve the right to suspend or delete any associated accounts, data, or functionalities without further notice.

 

  1. OPEN SOURCE. The Software includes certain files that are subject to open source licenses. These files are identified in their header files (“Open Source Files”). You must use the Open Source Files in accordance with the terms of their respective licenses.  In the event of any contradiction between the terms of this Agreement, and the terms of the open source license accompanying a certain Open Source File, the terms of the latter shall prevail, with regard to the said Open Source File.

 

RESTRICTIONS ON USE AND TRANSFER

 

  1. DISTRIBUTION OF FILES.

 

    (a) You may not distribute, or otherwise transfer or assign, any portion of the Software, including any of the headers or source files that are included in the Software, unless otherwise expressly permitted in this Agreement, subject to the provisions of Section 4 above.

 

    (b) Subject to your full and continued compliance with the terms of this Agreement, including the ongoing payment of annual license fees, you may distribute the following files:

 

Windows:
– windrvr1650.sys
– windrvr1650_legacy.sys
– windrvr1650.inf
windrvr1650.cat
– wdapi1650.dll
– wdapi1650_32.dll
– wdapi1650_arm64.dll
– wdapi_dotnet1650.dll
– wdapi_dotnet1650_32.dll
– wdapi_netcore1650.dll
– wdapi_java1650.dll
– wdapi_java1650.jar
– wdreg.exe
– difxapi.dll
– devcon.exe

Linux:
– windrvr_gcc_v3.o_shipped
– windrvr_gcc_v3_regparm.o_shipped
– kp_linux_gcc_v3.o
– kp_linux_gcc_v3_regparm.o
– libwdapi1650.so libwdapi1650_32.so
– libwdapi_java1650.so
– libwdapi_java1650_32.so
– wdapi_java1650.jar
– wdapi_netcore1650.dll
– kp_wdapi1650_gcc_v3.o_shipped
– kp_wdapi1650_gcc_v3_regparm.o_shipped
– linux_wrappers.c
– linux_wrappers.h
– wdusb_linux.c
– wdusb_interface.h
– wd_ver.h
– linux_common.h
– windrvr.h
– windrvr_usb.h
– wdsriov_interface.h
– wdsriov_linux.c
– wdreg
– configure makefile.in
– configure.wd makefile.wd.in
makefile.wd.kbuild.in
– configure.usb
makefile.usb.in
makefile.usb.kbuild.in
– setup_inst_dir

macOS:
– libwdapi1650.dyld
– libwdapi_java1650.jar
– libwdapi_java1650.dyld
– wdapi_netcore1650.dll
– WinDriver1650.kext
– WinDriver1650.dext
– wd_mac_install.sh
– wd_mac_uninstall.sh

 

    (c) The files listed in Section 5.b above may be distributed only as part of a complete application that you distribute under your organization name, and only if they significantly contribute to the functionality of your application. For avoidance of doubt, each organization distributing these files as part of the organization products is required to have valid license(s) under the organization name/VID, irrespective of the party who actually performed the product development. Licenses granted to subcontractors do not grant distribution or other rights to the organizations for which they are developing.

 

    (d) The distribution of the windrvr.h header file is permitted only on Linux.

 

    (e) You may not modify the distributed files specified in Section 5.b of this Agreement.

 

    (f) You may not distribute any header file that describes the WinDriver functions, or functions that call the WinDriver functions and have the same basic functionality as that of the WinDriver functions.

 

  1. The Software may not be used to develop a development product, an API, or any products, which will eventually be part of a development product or environment, without the written consent of Jungo and subject to additional fees and licensing terms.

 

  1. You may make printed copies of the written materials accompanying the Software, provided that only users bound by this license use them.

 

  1. You may not allow any third party to use the Software, grant access to the Software (or any portion thereof) to any third party, or otherwise make any commercial use of the Software, including without limitation, assign, distribute, sublicense, transfer, pledge, lease, rent, or share your rights in the Software or any of your rights under this Agreement, all whether or not for any consideration.

 

  1. You may not translate, reverse engineer, decompile, disassemble, reproduce, duplicate, copy, or otherwise disseminate all or any part of the Software, or extract source code from the object code of the Software.

 

  1. Jungo reserves the right to revise, update, change, modify, add to, supplement, or delete any and all terms of this License Agreement; provided, however, that changes to this License Agreement will not be applied retroactively. Such changes will be effective with or without prior notice to you. You can review the most current version of this License Agreement under the WinDriver download form page.

 

  1. You may not incorporate or link any open source software with any open source software part of the Software, or otherwise take any action which may cause the Software or any portion thereof to be subjected to the terms of the Free Software Foundation’s General Public License (GPL) or Lesser General Public License (LGPL), or of any other open source code license.

 

  1. DISCLAIMER OF WARRANTY. THIS SOFTWARE AND ITS ACCOMPANYING WRITTEN MATERIALS ARE PROVIDED BY JUNGO “AS IS” WITHOUT ANY WARRANTY. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT, ARE HEREBY DISCLAIMED TO THE FULLEST EXTENT PERMITTED UNDER APPLICABLE LAW.

 

  1. NO LIABILITY. TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL JUNGO OR ITS LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, SAVINGS, IP INFRINGEMENT OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

 

  1. Governing Law. This Agreement and use of the Software are governed by the laws of the State of Israel, regardless of its conflict of laws rules, and the competent courts of the State of Israel shall have sole and exclusive jurisdiction over any dispute under this Agreement or otherwise related to the Software.

 

  1. Confidentiality. The Software, including any additional information related thereto, contains confidential and proprietary information of Jungo.  Accordingly, you agree that you will not, nor allow any third party to, disseminate, transfer, grant access to, or otherwise disclose to any third party the Software or any part thereof or any other confidential or proprietary information of Jungo provided in connection therewith. You will maintain all copies of the Software and all related documentation in confidence.

 

  1. Termination and Effects of Termination. Jungo may terminate this Agreement and the licenses granted to you hereunder at any time if you breach any of your obligations hereunder, by issuance of written notice to such effect, addressed to you at the address you provided in your registration form. Upon expiration or other termination of this Agreement, the Licenses granted to you hereunder shall immediately and automatically be canceled, and you will immediately remove all copies of the Software from your computer(s) and cease any use thereof.

 

  1. Contact Details. If you have any questions concerning this Agreement or wish to contact Jungo for any reason —

 

          Web site: https://www.jungo.com

          Email:    [email protected]

 

  1. US GOVERNMENT RESTRICTED RIGHTS. The Software and documentation are provided with RESTRICTED RIGHTS.

  Use, duplication, or disclosure by the Government is subject to restrictions set forth in subparagraph (c)(1) of The Rights in Technical Data and Computer Software clause at DFARS 252.227-7013 or subparagraphs (c)(1)(ii) and (2) of Commercial Computer Software – Restricted Rights at 48 CFR 52.227-19, as applicable.

 

  1. Automatic Renewal. The subscription shall be automatically renewed, unless Licensee notifies Licensor 30 days or more prior to the expiration date of the subscription, of its intent not to renew the subscription.

Accessibility Toolbar