FreeRTOS

FreeRTOS là hạt nhân hệ điều hành thời gian thực cho hệ thống nhúng được phát triển bởi Real Time Engineers Ltd, sáng lập và sở hữu bởi Richard Barry. Nó đã được port sang 35 nền tảng vi điều khiển và được phân phối theo giấy phép MIT.

== Lịch sử ==
Nhân FreeRTOS ban đầu được phát triển bởi Richard Barry vào khoảng năm 2003, sau đó được phát triển và duy trì bởi công ty của Barry, Real Time Engineers Ltd. Vào năm 2017, công ty đã chuyển quyền quản lý dự án FreeRTOS cho Amazon Web Services (AWS). Barry tiếp tục làm việc trên FreeRTOS như một phần của nhóm AWS.

== Triển khai ==
FreeRTOS được thiết kế nhỏ gọn và đơn giản. Nó chủ yếu được viết bằng ngôn ngữ lập trình C để dễ dàng port và bảo trì. Nó cũng bao gồm một số hàm hợp ngữ nếu cần, chủ yếu là trong các quy trình của bộ lập lịch cụ thể theo kiến trúc.

FreeRTOS cung cấp các phương thức cho đa luồng hoặc tác vụ, mutexes, semaphores và đồng hồ. Chế độ không đánh dấu được cung cấp cho các ứng dụng năng lượng thấp. Ưu tiên luồng được hỗ trợ. Các ứng dụng FreeRTOS có thể được cấp phát tĩnh, nhưng các đối tượng cũng có thể được cấp phát động với năm lược đồ quản lý bộ nhớ (cấp phát):

- chỉ cấp phát;
- phân bổ và tự do với một thuật toán rất đơn giản, nhanh chóng;
- một thuật toán tự do và phân bổ phức tạp hơn nhưng nhanh hơn với sự kết hợp bộ nhớ;
- một giải pháp thay thế cho sơ đồ phức tạp hơn bao gồm sự kết hợp bộ nhớ cho phép chia nhỏ và nhân trên nhiều vùng bộ nhớ.
- và thư viện C phân bổ và tự do với một số bảo vệ loại trừ lẫn nhau.

RTOS thường không có các tính năng nâng cao hơn thường thấy trong các hệ điều hành như Linux và Microsoft Windows, chẳng hạn như trình điều khiển thiết bị, quản lý bộ nhớ nâng cao, tài khoản người dùng. Điểm nhấn là tính nhỏ gọn và tốc độ thực thi. FreeRTOS có thể được coi như một thư viện luồng hơn là một hệ điều hành, mặc dù có sẵn giao diện dòng lệnh và tính năng trừu tượng nhập/xuất (I/O) giống POSIX.

FreeRTOS triển khai nhiều đa luồng bằng cách yêu cầu chương trình chủ gọi một phương thức đánh dấu luồng vào những khoảng thời gian ngắn đều đặn. TPhương thức đánh dấu luồng chuyển đổi các tác vụ tùy thuộc vào mức độ ưu tiên và một sơ đồ lập lịch vòng lặp. Khoảng thời gian thông thường là 1 đến 10 mili giây ( đến giây) thông qua ngắt từ bộ hẹn giờ phần cứng, nhưng khoảng thời gian này thường được thay đổi để phù hợp với một ứng dụng nhất định.

Bản phân phối phần mềm chứa các cấu hình và trình diễn được chuẩn bị sẵn cho mọi cổng và trình biên dịch, cho phép thiết kế ứng dụng nhanh chóng. Trang web của dự án cung cấp tài liệu và hướng dẫn RTOS cũng như chi tiết về thiết kế RTOS.

== Tính năng chính ==
- Sách và tài liệu hướng dẫn tham khảo
- Kích thước bộ nhớ nhỏ, chi phí thấp và thực thi nhanh chóng.
- Tùy chọn ít đánh dấu cho các ứng dụng năng lượng thấp.
- Dành cho cả những người có sở thích và các nhà phát triển chuyên nghiệp làm việc trên các sản phẩm thương mại.
- Scheduler can be configured for both preemptive or cooperative multitasking.
- Hỗ trợ Coroutine (coroutines trong FreeRTOS là các tác vụ đơn giản và nhẹ với việc sử dụng ngăn xếp cuộc gọi có giới hạn)
- Hỗ trợ theo dõi thông qua macro theo dõi chung. Các công cụ như Tracealyzer, một công cụ thương mại của đối tác FreeRTOS Percepio, do đó có thể ghi lại và trực quan hóa hành vi runtime của các hệ thống dựa trên FreeRTOS để gỡ lỗi và xác minh. Điều này bao gồm lập lịch tác vụ và các cuộc gọi hạt nhân cho các hoạt động semaphore và hàng đợi.

== Kiến trúc hỗ trợ ==
- Altera Nios II
- ARM architecture
- ARM7
- ARM9
- ARM Cortex-M
- ARM Cortex-A
- Atmel
- Atmel AVR
- AVR32
- SAM3, SAM4
- SAM7, SAM9
- SAMD20, SAML21
- Ceva
- Ceva-BXx
- SensPro
- Ceva-XC16
- Ceva-XM6
- Ceva-Xx
- Ceva-XM4
- Cortus
- APS1
- APS3
- APS3R
- APS5
- FPS6
- FPS8
- Cypress
- PSoC
- Energy Micro
- EFM32
- eSi-RISC
- eSi-16x0
- eSi-32x0
- DSP Group
- DBMD7
- Espressif
- ESP8266
- ESP32
- Fujitsu
- FM3
- MB91460
- MB96340
- Freescale
- Coldfire V1, V2
- HCS12
- Kinetis
- IBM
- PPC404, PPC405
- Infineon
- TriCore
- Infineon XMC4000
- Intel
- x86
- 8052
- Microchip Technology
- PIC18, PIC24, dsPIC
- PIC32
- Microsemi
- SmartFusion
- Multiclet
- P1
- NXP
- LPC1000
- LPC2000
- LPC4300
- Renesas
- 78K0R
- RL78
- H8/S
- RX600
- RX200
- SuperH
- V850
- RISC-V
- RV32I
- RV64I
- PULP RI5CY
- Silicon Labs
- Gecko (ARM Cortex)
- STMicroelectronics
- STM32
- STR7
- Texas Instruments
- MSP430
- Stellaris
- Hercules (TMS570LS04 & RM42)
- Xilinx
- MicroBlaze
- Zynq-7000

== Biến thể ==
=== Amazon FreeRTOS ===
Amazon cung cấp một phần mở rộng của FreeRTOS, được gọi là "a:FreeRTOS". Đây là FreeRTOS với các thư viện hỗ trợ Internet vạn vật (IoT), đặc biệt cho Amazon Web Services. Kể từ phiên bản 10.0.0 vào năm 2017, Amazon đã quản lý mã FreeRTOS, bao gồm mọi bản cập nhật cho hạt nhân gốc.

=== SAFERTOS ===
SAFERTOS được phát triển như một phiên bản bổ sung của FreeRTOS, với các chức năng phổ biến, nhưng được thiết kế để thực hiện quan trọng về an toàn. FreeRTOS là đối tượng của nghiên cứu nguy cơ và khả năng hoạt động (HAZOP), và các điểm yếu đã được xác định và giải quyết. Kết quả được đưa vào vòng đời phát triển IEC 61508 SIL 3 đầy đủ, mức cao nhất cho một thành phần chỉ phần mềm.

SAFERTOS được phát triển bởi Wittenstein High Integrity Systems, hợp tác với Real Time Engineers Ltd, nhà phát triển chính của FreeRTOS. Cả SAFERTOS và FreeRTOS đều chia sẻ cùng một thuật toán lập lịch, có giao diện lập trình ứng dụng (API) tương tự và rất giống nhau, nhưng chúng được phát triển với các mục tiêu khác nhau. SAFERTOS chỉ được phát triển bằng ngôn ngữ C để đáp ứng các yêu cầu chứng nhận theo tiêu chuẩn IEC61508..

SAFERTOS chỉ có thể nằm trong bộ nhớ chỉ đọc (ROM) trên chip của bộ vi điều khiển để tuân thủ các tiêu chuẩn. Khi được triển khai trong bộ nhớ phần cứng, mã SAFERTOS chỉ có thể được sử dụng trong cấu hình gốc, được chứng nhận của nó. Điều này có nghĩa là chứng nhận một hệ thống không cần kiểm tra lại phần nhân của một thiết kế. SAFERTOS được bao gồm trong ROM của một số Vi điều khiển Stellaris từ Texas Instruments. Mã nguồn SAFERTOS không cần phải mua riêng. Trong trường hợp sử dụng này, tệp tiêu đề C được sử dụng để ánh xạ các hàm API SAFERTOS tới vị trí của chúng trong bộ nhớ chỉ đọc.

=== OPENRTOS ===
OPENRTOS là phiên bản Amazon FreeRTOS được cấp phép thương mại, được bán bởi WITTENSTEIN High Integrity Systems. Sản phẩm này cung cấp hỗ trợ và cho phép các công ty sử dụng hạt nhân và thư viện Amazon FreeRTOS mà không cần giấy phép "a:FreeRTOS" MIT.

== Xem thêm ==
- Hệ điều hành nhúng