NXP’s Unified Wi-Fi Driver

NXP’s Unified Wi-Fi Driver

The MXM driver? is NXP’s proprietary Wi-Fi driver implementation and can be used with NXP i.MX MPUs supporting Linux and Android. The driver has a flexible dual license offering and is offered under GPL-2.0 and a proprietary license which helps to avoid licensing conflicts. The driver provides a seamless interface between the NXP Wireless SoC’s firmware and the standard Linux networking stack/cfg80211 on the host processor. The driver is responsible for providing various Wi-Fi functions to the kernel and application, including station/client (STA), Micro AP/Softap (uAP), P2P and Neighbor Awareness Networking/Wi-Fi Aware (NAN).

Multi-Device/Interface Support

The MXM driver supports the portfolio of NXP Wireless Connectivity SoCs, supporting PCIE, SDIO and USB interfaces. The SoC/interface combination can be easily configured via Makefile settings during compile time, including the ability to configure multiple SoC/interface combinations at the same time. The compiled kernel module of the driver can work with the various SoC/interface combinations without the need for reloading or recompilation of the driver. For developers who want to switch from the current generation of NXP devices to the next generation, this provides an easier migration path with less integration efforts and easier maintenance across generations of products without the burden of architecture changes.

Driver Architecture

Figure 1: MXM driver architecture.

The driver has a two-layer architecture comprising the MLAN layer and the MOAL layer, as shown in Figure 1. This is primarily meant to make it easier for porting to different OSes other than Linux/Android. The functions of these two layers are as follows:

  • MLAN: OS-independent module responsible for command handling and interfacing with the firmware running on the device. It is platform agnostic C code
  • MOAL: OS-dependent module responsible for interfacing with the upper kernel/protocol stacks and lower-level bus driver interface

The MLAN module contains the majority of the code and can be used as-is while the MOAL module must be ported to the target OS. NXP has ported the MOAL module to some of the most common RTOSes that support NXP’s i.MX RT Crossover MCUs and General Purpose MCUs, including FreeRTOS and Zephyr.

The FreeRTOS implementation is included as part of the MCUXpresso SDK while the Zephyr Wi-Fi driver is part of the Zephyr Project? upstream. The RTOS drivers are licensed using the permissive BSD-3 Clause License thus allaying the concerns of developers and customers when a non-GPL based license is preferred.

The MXM driver also supports platforms based on processor architectures such as x86 and ARM, making it well suited for i.MX MPUs. It offers backward compatibility with Linux kernel versions over the last 15 years as well as with older versions of Android. The driver is continuously upgraded to be compliant with the latest kernel version and supports working with various standard and third-party applications with the standard Linux utilities/tools, such as iw, and wpa_supplicant supported by the driver via the cfg80211 application programming interface (Linux 802.11 configuration API).

Integration with NXP Processors

NXP has integrated the MXM driver with NXP’s i.MX Applications Processors and offers quarterly Linux and Android Board Support Packages (BSPs) for NXP evaluation kits (EVKs) across the i.MX 6, i.MX 7, i.MX 8 and i.MX 9 series. NXP has optimized and validated the BSPs for peak performance and rich feature sets across a diverse set of use cases covering Industrial, IoT, and Automotive segments. This provides a seamless out-of-box experience to evaluate NXP Processor and Wireless Connectivity solutions. The BSPs are supported by maintenance releases and patches, ensuring lower cost of ownership for customers. The BSPs can be found at Embedded Linux for i.MX Applications Processors and Android OS for i.MX Applications Processors.

Distribution

The driver is available as a submodule of the Linux Yocto project build, making it easier for developers to build for NXP-based EVKs. Further, the driver is released in source code format and can be downloaded from sources such as GitHub enabling easier collaboration and integration with both NXP and non-NXP platforms. Refer to the user manual? for instructions to download and build the MXM driver. For users targeting a Yocto-based system, the NXP Yocto recipes for the MXM Driver are distributed here? and can be used to port the MXM driver to additional, third-party platforms with minimal development effort.


Author | Mayur Arakere

Mayur Arakere has over 10 years of experience in the semiconductor industry working in Applications Engineering and Product Management. He is based in San Jose, CA and is currently a Sr. Software Product Manager for NXP's Wireless Connectivity Solutions, defining software offerings for Wi-Fi, Bluetooth, and Thread/Zigbee combo SoCs. Outside work, Mayur spends his weekends hiking in the Bay Area.

Nik Dimitrakopoulos

Product Marketing Infotainment | Social Media Enthusiast | Entrepreneur

2 天前

Anastasios Foliadis check this out!

要查看或添加评论,请登录

NXP Developer Zone的更多文章