Arm works closely with Operating System (OS) providers to enable solutions across several IoT applications and hardware.

The resources on this page help you choose your OS, and efficiently build your application on an Arm-based device. This page includes some of the operating systems that are most utilized in this area. Learn more about operating system providers that will help you efficiently build an IoT application on Arm.

Rich operating systems

Here are some vendors that provide open source operating systems for higher-performing IoT applications that are typically based on Cortex-A processors.

Linux Kernel

The Linux Kernel is an open source system kernel most notably used in the GNU OS. It manages hardware, runs programs and maintains security in a system. Arm together with Linaro actively maintains and contributes to the Linux Kernel project.

Learn more

Ubuntu

A popular and secure Linux operating system for modern applications, from the cloud to endpoint devices.

Learn more

Debian

Free operating system for testing and validating running Linux on Arm based platforms.

Learn more

Real-time operating systems

Here are some vendors that provide Real-Time Operating Systems (RTOS) for small, low-power IoT applications that are typically based on Cortex-M processors.

FreeRTOS

Open source real-time OS that makes small, low-power devices easier to program, deploy, secure, connect, and manage.

Learn more

Mbed OS

OS featuring security, connectivity, an RTOS, and drivers to develop connected products based on Cortex-M microcontrollers.

Learn more

Zephyr

Based on the Linux Foundation project, Zephyr is an RTOS for constrained IoT devices and includes security and safety features.

Learn more

Keil RTX5

Available with Keil MDK, Keil RTX5 features a periodical activation of timer functions, memory management, and message exchange between threads for Cortex-M based devices.

Learn more

More RTOS partners

Find out about more RTOS partners

Learn more

Get Support


Community Blogs

Community Forums

Suggested answer Vector Table relocation on M33/M55
  • Armv8.1-M
  • Cortex-M33
  • Armv8-M
0 votes 387 views 6 replies Latest 14 hours ago by Brijesh Reddy Answer this
Not answered How to specify RAM location ?
  • SRAM
  • STM32 F1
  • Arm Assembly Language (ASM)
0 votes 42 views 0 replies Started 15 hours ago by owais ahmed Answer this
Suggested answer How To Swap From 32-bit Mode To 64-bit Mode In An Android that has ARMV8-A OS 0 votes 17235 views 4 replies Latest 16 hours ago by 42Bastian Schick Answer this
Suggested answer In APB, for data bus width, can I increase from 32 bits(default) to 64 bits(as per my project requirements)?
  • APB
  • AMBA 2 APB Interface
0 votes 406 views 1 replies Latest 16 hours ago by Colin Campbell Answer this
Suggested answer Vector Table relocation on M33/M55 Latest 14 hours ago by Brijesh Reddy 6 replies 387 views
Not answered How to specify RAM location ? Started 15 hours ago by owais ahmed 0 replies 42 views
Suggested answer How To Swap From 32-bit Mode To 64-bit Mode In An Android that has ARMV8-A OS Latest 16 hours ago by 42Bastian Schick 4 replies 17235 views
Suggested answer In APB, for data bus width, can I increase from 32 bits(default) to 64 bits(as per my project requirements)? Latest 16 hours ago by Colin Campbell 1 replies 406 views