The embedded systems market in general is transforming quickly, and the RTOS market more specifically is no different. Not too many years ago, only forward-thinking development teams with a certain level of skills and budget used real-time operating systems in their designs. But in this day and time, using an RTOS is pretty much a requirement if you want to use middleware stacks (TCP/IP and USB comes to mind, for example).
At the same time, the traditional RTOS vendors are under strong pressure from free and open alternatives. On large high-end systems, EmbeddedLinux is almost the norm these days. Since EmbeddedLinux is too large to run on smaller embedded systems, other alternatives are a better fit for Cortex-M developers. FreeRTOS, developed by Richard Barry, is the shining star in this segment. FreeRTOS have a huge user base, as it is free, stable and easy to use. But with RTOS power comes debug problems. How do you debug a system based on FreeRTOS?