Develop Your Windows Apps on Arm-Based Hardware
September 20, 2023
As you would expect, “Windows on Arm” refers to a version of the Microsoft Windows operating system that’s designed to run on devices powered by Arm-based processors. Such devices are quite plentiful. They are in most of our smartphones, tablets, and a slew of other low-cost devices, many of them powered by batteries.
The Windows on Arm initiative aims to bring the full Windows experience to devices beyond the traditional x86 and x64 architecture.
While we typically think of the CPU core when discussing Arm-based SoCs, there are other functions that typically reside within that same piece of silicon. This could include GPUs, Bluetooth and Wi-Fi, and even neural processor units (NPUs) for accelerating AI workloads. Arm-based processors work well on many devices due to power efficiency. In most cases, battery life on end devices is superior to devices based on an X86 architecture.
A Thriving Ecosystem
The popularity of the Arm architecture has resulted in an extremely comprehensive ecosystem. If you need a tool, a driver, or some IP, even something that’s relatively obscure, there’s a good chance it’s available. And in most cases, the code is available as open source.
With the release of Windows 10, existing unmodified x86 apps could be run on Arm devices. With Windows 11, Microsoft upped the ante even further to enable unmodified x64 Windows apps to run on those Arm-based devices. Hence, from the users’ perspective, the majority of their existing applications and tools could be deployed on Arm-based devices.
For maximum performance, users would be better suited running Arm-native Windows apps, rather than conventional x86 apps running in emulation. While the latter will run, performance will not be on par with the native apps.
The Advantech Windows Dev Kit comes pre-loaded with Windows 10 IoT on ARM to enable designers expedite their Windows on Arm software development.
The Dev Platform Is Here
To help developers create those applications, Advantech has released the Windows Dev Kit. The Arm-based CPU, in this case, is powered by Advantech’s EPC-R3720 with NXP i.MX 8M Plus. This compact form factor compute platform boasts both extreme performance and power efficiency. EPC-R3720 is an ARM® Cortex®-A53 i.MX8MPlus-based secured, compact-sized, low-power Edge AI Box, best for Edge AI Inference with Neural Network Accelerator up to 2.3 TOPS, HDR-Capable ISP of 375 MPixels/s, with a wide range of I/O extension and oriented for industrial automation.
This Windows on ARM Development Kit is purpose-built with everything needed to develop, debug, and test native Windows apps for Arm. With the kit, developers can even create battery-powered AI accelerated experiences in a platform that runs for multiple days on a single-charge.
Without a platform like Advantech’s WoA Development Kit, developers would typically write their code and build the associated app binaries on an x64 Windows PC, and then copy those built binaries over to an Arm device to run or test the app. Debugging would then be done remotely through that x64 PC.
Now, Windows developers can build, test, and debug Arm-native apps alongside all their favorite productivity tools, including Visual Studio, Windows Terminal, WSL, VSCode, Microsoft Office, and Teams. In addition, new tools are continuing to come on-line to support the Windows on Arm initiative. This includes WinDBG and Git, libraries like VC++ Runtime, and a host of runtimes and frameworks, such as .NET 6 and .NET 7, OpenJDK Java, Python, Node JS, CLANG/LLVM, and gcc. As you would expect, Cloud support comes in the form of Azure, with Arm VMs, as well as GitHub.
Also note that with Arm64EC (Emulation Compatible), developers can incrementally build new apps, or port existing apps, that take advantage of native Arm performance where possible, while utilizing existing x64 code and libraries until fully migrated.
While not the ideal scenario, applications can run in emulation mode. This allows any existing x86 win32 app to run without any modifications to the app. In fact, the app doesn’t even know that it is running on a Windows on Arm PC, unless it calls specific APIs. The WOW64 layer of Windows lets the x86 code to run on the Arm64 version of Windows. The x86 emulation works by compiling blocks of x86 instructions into Arm64 instructions with optimizations to improve performance.
Note that WOW64 is the x86 emulator that lets 32-bit Windows-based applications run seamlessly on 64-bit Windows. WOW64 is provided with the operating system and needn’t be explicitly enabled. And as previously noted, while Windows on Arm can run unmodified X86 and x64 applications, maximum performance and battery life will be achieved by designing those applications to run natively on Arm from the beginning.
Advantech offers a slew of products aimed at developers of Windows on Arm, ranging from development kits to modules, to boards, to complete embedded PCs.
In addition to the kit described above, a host of other hardware options are available from vendors like Advantech. For example, the company offers Arm-based embedded computers, single-board computers, and computer-on-modules with CPUs from industry leaders like NXP. In addition, Advantech offers development kits that include a series of carrier boards and starter kits with schematic software and reference designs to accelerate evaluation.