高可靠嵌入式實時操作系統NuttX

NuttX實時操作系統概述

NuttX是一個嵌入式實時操作系統(Embedded RTOS),它很小巧,在微控制器環境中使用。NuttX主要遵循POSIX和ANSI標準開發,可從8位微控制器環境擴展到32位微控制器環境,對於在上述標準下不可用的功能,或者對於不適合嵌入式環境(如fork())的功能,採用了Unix和其他常見RTOS的其他標準API(例如VxWorks)。NuttX支持ARM、Atmel AVR、x86、MIPS、OpenRISC、Renesas、RISC-V、Zilog、Misoc等多種CPU體系結構。

實時系統指系統的計算正確性不僅取決於計算的邏輯正確性,還取決於產生結果的時間。如果未滿足系統的時間約束,則認為系統失效。一個實時操作系統面對變化的負載(從最小到最壞的情況)時必須確定性地保證滿足時間要求。實時系統指系統必須要滿足確定性,而不是要求速度足夠快。例如,如果使用足夠強大的CPU,Windows在CPU空閒時可以提供非常短的典型中斷響應,但是,當某些後臺任務正在運行時,有時候響應會變得非常漫長,以至於某一個簡單的讀取文件的任務會長時間無響應,甚至直接掛死。並不是Windows不夠快或效率不夠高,而是因為它不能提供確定性,因此,Windows不是一個實時操作系統。

NuttX功能特性

任務管理。模塊化設計。完全搶佔。可擴展。高度可配置。可以輕鬆擴展到新的處理器架構。支持FIFO, round-robin, and “sporadic”調度。強實時,確定性並支持優先級繼承。任務管理,消息隊列,計數信號量,時鐘/計時器,信號,pthread線程,互斥鎖,環境變量,文件系統。類似於VxWorks的任務管理和看門狗計時器。BSD套接字接口。對稱多處理(SMP)可加載的內核模塊;輕量級的嵌入式共享庫。線程本地存儲(TLS)內置線程CPU負載測量。自定義NuttX C庫。

NuttX文件系統

微小的內存根偽文件系統虛擬文件系統(VFS)通用系統日誌記錄(SYSLOG)支持FAT12 / 16/32文件系統支持NFS網絡文件系統支持NXFFS。微型NuttX磨損均衡FLASH文件系統SPIFFS。FLASH文件系統,最初由Peter Anderson撰寫LittleFS。來自ARM mbed的FLASH文件系統ROMFS文件系統支持CROMFS文件系統支持(壓縮)BINFS偽文件系統支持HOSTFS文件系統支持(僅模擬)UserFS。提供用戶應用程序文件系統。procfs 偽文件系統。

NuttX網絡協議棧

支持IPv4,IPv6,TCP/IP,UDP,ARP,ICMP,ICMPv6,IGMPv2。流,數據報和原始數據包套接字地址族:IPv4/IPv6(AF_INET,AF_INET6),原始套接字(AF_PACKET),原始IEEE 802.15.4(AF_IEEE802154),原始藍牙(AF_BLUETOOTH)和本地Unix域套接字支持(AF_LOCAL)特殊的INET協議套接字:原始ICMP和ICMPv6協議ping套接字(IPPROTO_ICMP,IPPROTO_ICMP6)IP轉發DNS名稱解析BSD兼容套接字層網絡實用程序(DHCP服務器和客戶端,SMTP客戶端,TELNET服務器和客戶端,FTP服務器和客戶端,TFTP客戶端,HTTP服務器和客戶端,NTP客戶端)ICMPv6自主自動配置NFS客戶端網絡文件系統(NFS,版本3,UDP)的支持PHY鏈接狀態管理XML RPC服務器支持網絡模塊(如ESP8266)