Microsoft details building Windows NT for ARM

As you all know, Windows 8 will be the first release of Windows NT which supports the ARM architecture. Microsoft hasn’t been particularly forthcoming about this new Windows variant, but that’s changing today. The company has posted a long and in-depth blog post about Windows 8 on ARM.

It was never clear whether Microsoft was going to include the classic desktop with the ARM release of Windows 8. They’ve cleared that up now: yes, the classic desktop will be part of Windows 8 on ARM, including most of the default applications and utilities people come to expect from Windows (although a few will be missing, Microsoft has not stated which). On top of that, Windows on ARM will also ship with desktop versions of Office 15 (the next version of Office).

What the desktop will not support is current Windows applications. Microsoft already confirmed there won’t be any emulation of x86 applications, but now the company has also ruled out any options for recompiling or whatever. “WOA does not support running, emulating, or porting existing x86/64 desktop apps,” Microsoft writes. The single and sole method of getting applications on WOA is through the Windows Store, and only Metro applications are supported.

For the rest, Windows on ARM has all the WinRT capabilities present in Windows x86, including the same set of programming languages supported by WinRT. The Windows Store is smart enough to offer the right version to users, so that won’t be a problem for users.

Moving on, the most interesting part of the blog post is the account of the porting endeavour – getting Windows NT to run on ARM in the first place. After getting an actual tool chain going for building Windows for ARM, the porting process could begin. Significant parts of Windows 8 were already architected to be platform-independent, and even the Windows NT kernel had significant parts that were easily portable due to NT’s history of platform-independence.

Microsoft really got into the nitty-gritty here, even going so far as developing the actual firmware for the ARM devices Windows 8 is going to support, including ACPI and UEFI. NT’s HAL had to be altered as well, adding the “ability for each of the core system resources to be plugged in via an extension to the HAL, kind of like a driver for the interrupt controller”. Furthermore, several ARM-specific drivers had to be written, and several regular Windows drivers had to be adapted for ARM.

Once Microsoft was ready to start the graphical environment, it was time to make sure the graphics chips in the supported ARM SoCs supported DirectX. The ARM device makers had to write DirectX-compatible drivers, which took a long time. In the meantime, Microsoft created a soft GPU driver working directly against the hardware framebuffer – this work benefited x86 Windows as well, as it gave Microsoft the opportunity to make changes to how Windows works and looks when no supported graphics driver has been found (so, prettier and more capable blue screens and Windows setup experiences).

More higher-level stuff followed, such as device support. The most interesting tidbit here? “For Windows 8, we rearchitected the print infrastructure to add class driver support,” the post explains, “The majority of printers selling today are supported using the class driver, which means you’ll be able to ‘plug and print’ on WOA without additional drivers. While the new architecture was needed for many reasons, we had printing from WOA PCs in mind from the beginning.”

Also fun: the first ARM devices running Windows NT. Fancy specialised hardware? Hand-crafted tablets? No – Windows Mobile devices. Seriously. I’m not kidding. They ran Windows NT on Windows Mobile smartphones (so not Windows Phone 7). Awesome photos included.

In any case, it’s a very interesting post, and surely a recommended read – even if you don’t use or like Windows.

87 Comments

  1. 2012-02-10 12:58 am
    • 2012-02-10 1:15 am
      • 2012-02-10 1:17 am
        • 2012-02-10 1:31 am
          • 2012-02-10 2:03 am
          • 2012-02-10 5:45 am
          • 2012-02-10 6:17 am
          • 2012-02-10 3:57 pm
        • 2012-02-10 6:17 pm
    • 2012-02-12 2:03 pm
  2. 2012-02-10 1:36 am
    • 2012-02-10 2:04 am
      • 2012-02-10 11:18 am
      • 2012-02-10 4:20 pm
    • 2012-02-10 8:56 am
    • 2012-02-10 9:56 am
      • 2012-02-10 5:08 pm
      • 2012-02-10 6:09 pm
    • 2012-02-17 11:22 pm
  3. 2012-02-10 1:40 am
  4. 2012-02-10 3:02 am
    • 2012-02-10 4:21 am
  5. 2012-02-10 7:55 am
  6. 2012-02-10 8:29 am
    • 2012-02-10 10:37 am
      • 2012-02-10 4:20 pm
    • 2012-02-10 7:38 pm
      • 2012-02-10 8:06 pm
      • 2012-02-12 4:57 pm
    • 2012-02-17 11:35 pm
  7. 2012-02-10 9:18 am
    • 2012-02-10 9:34 am
      • 2012-02-10 1:05 pm
        • 2012-02-10 3:56 pm
          • 2012-02-12 7:10 am
    • 2012-02-13 4:29 pm
  8. 2012-02-10 9:54 am
    • 2012-02-12 7:13 am
      • 2012-02-12 11:13 am
        • 2012-02-12 4:04 pm
          • 2012-02-13 4:32 pm
          • 2012-02-13 4:42 pm
    • 2012-02-17 11:15 pm
  9. 2012-02-10 10:09 am
    • 2012-02-10 12:37 pm
      • 2012-02-10 2:43 pm
        • 2012-02-10 5:45 pm
  10. 2012-02-10 10:16 am
    • 2012-02-10 12:31 pm
      • 2012-02-10 5:40 pm
    • 2012-02-10 5:37 pm
  11. 2012-02-10 2:31 pm
  12. 2012-02-10 2:35 pm
    • 2012-02-10 4:16 pm
  13. 2012-02-10 4:13 pm
    • 2012-02-10 9:21 pm
      • 2012-02-12 7:15 am
        • 2012-02-13 1:36 pm
          • 2012-02-13 3:09 pm
          • 2012-02-13 5:33 pm
          • 2012-02-13 5:56 pm
          • 2012-02-14 4:02 am
          • 2012-02-13 8:10 pm
          • 2012-02-13 8:16 pm
          • 2012-02-13 8:49 pm
          • 2012-02-13 7:08 pm
          • 2012-02-13 8:13 pm
      • 2012-02-13 1:27 pm
        • 2012-02-13 3:10 pm
          • 2012-02-13 8:05 pm
          • 2012-02-13 8:19 pm
          • 2012-02-13 8:25 pm
          • 2012-02-13 8:30 pm
          • 2012-02-13 8:51 pm
        • 2012-02-17 11:59 pm
  14. 2012-02-10 5:22 pm
    • 2012-02-10 11:30 pm
    • 2012-02-11 9:22 pm
  15. 2012-02-10 8:51 pm
    • 2012-02-11 12:01 am
  16. 2012-02-11 5:29 pm
    • 2012-02-11 11:36 pm
  17. 2012-02-12 1:53 pm
    • 2012-02-12 2:09 pm
  18. 2012-02-12 7:03 pm
  19. 2012-02-13 12:55 pm
  20. 2012-02-15 4:34 pm