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)
閱讀更多 程序猿的未來人生 的文章