Recently just re-review of these several OS, in the mind has always had a question, clearly these several rtos is so like, why still have to make so many come, the final conclusion is, tube him, anyway which use of the handy with which.
This blog will be to count the characteristics of these several rtos.
The following are from the official website or the official manual feature Google Translate added some of my adjustments, without any subjective elements. 1. FreeRTOS
The FreeRTOS is a scalable, real-time kernel designed for small embedded systems.
highlights include: Tiny package form. Free RTOs Scheduler free embedded software source code. Royalty-free. Preemptive, collaborative, and hybrid configuration options with optional time slicing. Safertos derivative products provide a high degree of confidence in code integrity. Includes a tickless model designed for low-power applications. You can use dynamic or statically allocated RAM to create RTOs objects (tasks, queues, semaphores, software timers, mutexes, and event groups). Officially supports >30 embedded system architecture (ARM7 and arm cortex-m3 as a single architecture). The FREERTOS-MPU supports ARM CORTEX-M3 memory Protection Unit (MPU). The design is small and easy to use. Typically, the RTOs kernel binary image will be within a 4K to 9K byte area. Very good portability of source code structure, mainly in C. Supports real-time tasks and collaboration programs. Direct to task notifications, queues, binary semaphores, Count semaphores, recursive semaphores and mutexes, for communication between tasks and synchronization, or between real-time tasks and interrupts. Innovation Event Group (or event flag) implementation. A mutex with precedence inheritance. Efficient software timers. Powerful execution tracking capabilities. Stack Overflow detection option. Free Monitoring of forum support or optional business support and licensing. There is no software restriction on the number of real-time tasks that can be created. There is no software restriction on the number of task priorities that can be used. There is no limit to task priority assignment-you can assign the same priority to multiple live tasks. Free development tools for many supported architectures. Developed from a standard Windows host. 2. Ucos family (I/II/III)
The μc/Os and ΜC/OS-III are preemptive, highly portable, and scalable real-time cores. These cores are designed to be used on a large number of CPU architectures, which are key components of the Μc/os real-time operating system.
critical value (Key values): portability. Providing unprecedented ease of use, the Μc/os kernel provides complete source code and in-depth documentation. The Μc/os kernel runs on a large number of processor architectures and ports are available for download. Scalability. The Μc/os kernel allows unrestricted tasks and kernel objects. The memory footprint of the kernel can be reduced to include only the functionality required by the application, typically 6-24 KB of code space and 1KB of data space. Reliable. The Μc/os kernel includes debugging capabilities to reduce development time. The kernel provides a wide range of checks, including checking pointers passed in API calls, task-level services from the ISR, parameters within the allowed range, and valid specified options. Efficient. The Micrium kernel also includes valuable runtime statistics that enable the internal visualization of your application. Identify performance bottlenecks and optimize power usage early in the development cycle.
the features of the Μc/os kernel include the following highlights (highlights): preemptive multitasking real-time kernel, optional round-robin scheduling provides complete, clean, consistent source code with in-depth documentation. High scalability: Unlimited number of tasks, priority and kernel objects simultaneously waiting for multiple kernel objects to send signals to the task directly/message resource efficient: 6K to 24K byte code space, 1K + byte data space) very low interrupt disable time wide range of performance metrics (configurable) to focus on safe applications
The following table shows the evolution of Μc/os over the years, comparing the features available in each version.
features (Features) |
Μc/os |
µc/osii |
ΜC/OSIII |
Release year |
1992 |
1998 |
2009 |
Provide source code |
√ |
√ |
√ |
Books (book) |
√ |
√ |
√ |
Preemptive multi-tasking |
√ |
√ |
√ |
Maximum Task volume |
64 |
255 |
Infinite |
Number of tasks per priority level |
1 |
1 |
Infinite |
Time Slice rotation scheduling |
X |
X |
√ |
Signal Volume |
√ |
√ |
√ |
Mutex Signal Volume |
X |
√ |
√ (can be nested) |
Event Flag Group |
X |
√ |
√ |
Message mailbox |
√ |
√ |
X (not required) |
Message Queuing |
√ |
√ |
√ |
Fixed-size memory management |
X |
√ |
√ |
Send semaphores directly to the task |
X |
X |
√ |
Dispatch-free Signal delivery options |
X |
X |
√ |
Send a message directly to a task |
X |
X |
√ |
Software timers |
X |
√ |
√ |
Task Suspend/Resume |
X |
√ |
√ (can be nested) |
Prevent deadlocks |
√ |
√ |
√ |
Can be cropped |
√ |
√ |
√ |
Code Amount |
3k-8k |
6k-26k |
6k-24k |
Data volume |
1k+ |
1k+ |
1k+ |
Code is curable |
√ |
√ |
√ |
Configurable at run time |
X |
X |
√ |
Can be configured at compile time |
√ |
√ |
√ |
Support for ASCII naming of kernel objects |
X |
√ |
√ |
Wait for multiple kernel objects at the same time |
X |
√ |
√ |
Task Register |
X |
√ |
√ |
Built-in performance testing |
X |
Basic |
Enhance |
Built-in tracking points |
X |
X |
√ |
User-definable hook functions |
X |
√ |
√ |
POST operation can be timestamp |
X |
X |
√ |
Kernel-Aware debugging |
X |
√ |
√ |
A scheduler optimized with assembly language |
X |
X |
√ |
Capturing an exiting task |
X |
X |
√ |
Task-level clock beat processing |
X |
√ |
√ |
Number of system service functions |
The |
~90 |
~75 |
3. Rt-thread
Tips: Implementing paragraph indentation in markdown
-Semi-square large blank   or & #8194;
-Full-size blank   or & #8195;
-Continuous line of blank lattice or & #160;
Rt-thread is an open source embedded real-time operating system from China, developed and maintained by some domestic professional developers since 2006, in addition to the real-time operating system cores like FreeRTOS and Ucos, including a range of application components and drive frameworks, such as the TCP/IP protocol stack, Virtual file system, POSIX interface, graphical user interface, Freemodbus master-slave stack, can framework, dynamic modules, etc., because the system is stable, feature-rich features are widely used in new energy, power grids, fans and other high-reliability industries and equipment, has been proven to be a highly reliable real-time operating system.
Rt-thread Real-time operating system follows gplv2+ license, real-time operating system kernel and all open source components can be used free of charge in commercial products, no need to publish the application source code, no potential business risks.
Rt-thread Real-time operating system core is an efficient hard real-time core , it has very good real-time, stability, and can be cut, when the minimum configuration, the core volume can be up to 3k ROM occupancy, 1k RAM occupied. Task/thread scheduling
The Rt-thread is the smallest dispatch unit, the thread scheduling algorithm is a priority-based full preemptive multi-threaded scheduling algorithm, support 256 thread priority (also can change through the configuration file to the maximum support 32 or 8 thread priority), 0 priority represents the highest priority, The 255 priority is reserved for idle threads, and the same priority threads are supported to create a round-robin scheduling algorithm that can set the time slice; The scheduler looks for the next highest-priority ready thread at a constant time (the time complexity is 1, i.e. O (1)). The system does not limit the number of threads, only related to the specific memory of the hardware platform. Task synchronization mechanism
The system supports Semaphore(semaphore),mutex(mutex) as the inter-thread synchronization mechanism. The mutex uses the priority relay method to solve the priority rollover problem. The release action of the semaphore can be safely used in interrupt service routines. The synchronization mechanism enables threads to wait by priority or to obtain semaphores or mutexes in first-in, in-order manner. Inter-mission communication mechanism
The system supports communication mechanisms such as event (events),mbox(mailbox), and MessageQueue(Message Queuing). Event supports multi-event "or trigger" and "with Trigger", which is suitable for threads waiting for multiple event situations. The length of an email in mbox is fixed at 4 bytes, which is more efficient than MessageQueue . Send actions in communication facilities can be safely used in interrupt service routines. The communication mechanism enables threads to wait by priority or to be fetched in first-out mode. Time Management
The system uses the clock beat to accomplish the time slice rotation scheduling of the same priority task, and the time sensitivity of the thread to the kernel object is realized by the system timer; the timer supports the soft timer and the hard timer (the soft timer is processed in the context of the system thread, the hard timer is processed in the context of the interrupt) Timer supports one-time timeout and periodic timeout. Memory management
The system supports static memory pool management and dynamic memory heap management. The memory block time is constant from the static memory pool, and when the memory pool is empty, the thread that is requesting the block of memory can be blocked (or returned immediately, or wait for a period of time after the memory block has not been retrieved). This depends on the wait time set when the memory block is requested, and the corresponding blocking thread wakes up when other threads release the memory block to the memory pool. Dynamic heap memory Management provides a small memory management algorithm for small memory systems and a slab memory management algorithm for large memory systems for different system resource situations. Device Management
The system implements the device management subsystem accessed by name, which can access the hardware device according to the unified API interface. On the device driver interface, according to the characteristics of the embedded system, the different devices can hook up the corresponding events, when the device event is triggered, notify the upper-level application.
Rt-thread This system is still a lot of their own ideas in the inside, such as finish, equipment tree and so on are referring to the idea of Linux design. 4. RTX
Keil Rtx is a royalty-free, deterministic, real-time operating system designed for arm and CORTEX-M devices. It allows you to create programs that perform multiple functions at the same time and help create better structures and easier-to-maintain applications.
features with source code-free, deterministic RTOs flexible scheduling: loop, preempt and collaborate high-speed real-time operations with low interrupt latency for resource-constrained systems providing a small package with an unlimited number of tasks each with 254 priority unlimited number of mailboxes, semaphores, mutexes and timers Supports multi-threaded and thread-safe operation kernel-Aware debugging support Mdk-arm dialog-based settings using the Μvision Configuration Wizard
Advantages
While you can create real-time programs without the need for a real-time operating system (by performing one or more functions in a super loop), Keilrtx has many scheduling, maintenance, and timing issues for the rtos you solve.
Precautions
All Mdk-arm versions contain the RTX source code.
This system I just used once, feel the biggest feature is simple to use, do not need so much attention, take it with the feeling, there is no interruption operation, so you understand ~