(嵌入式 即時作業系統 rtos nuttx 7.1)
NuttX 介紹轉載請註明出處:http://blog.csdn.net/zhumaill/article/details/24197637
1 NuttX 即時作業系統
NuttX 是一個即時作業系統(RTOS),強調標準相容和小型封裝,具有從8位到32位微控制器環境的高度可擴充性。NuttX 主要遵循 Posix 和 ANSI 標準,對於在這些標準下不支援的功能,或者不適用於深度嵌入環境的功能(如 fork()),採用來自 Unix 和常見 RTOS (如 VxWorks)的額外的標準 API。
NuttX 的第一個版本由 Gregory Nutt 於 2007 年在寬鬆的 BSD 許可證下發布。
2 關鍵特徵
- 標準相容
- 核心任務管理
- 模組化設計
- 完全可搶佔
- 天然可擴充
- 高度可配置
- 圖形化組態工具
- 容易擴充到新的處理器架構、 SoC 架構或板級架構
- FIFO 和輪轉調度
- 即時的、確定性、支援優先順序繼承
- 類 POSIX/ANSI 的任務控制、命名訊息佇列、計數訊號量、時鐘/定時器、訊號、pthread、環境變數、檔案系統
- 類VxWorks的任務管理和看門狗定時器
- BSD 通訊端介面
- 優先順序管理的擴充
- 可選的具有地址環境的任務(進程)
- 可繼承的“控制終端”和 I/O 重新導向
- 請求式分頁
- 系統日誌
- 可以構建為開放的、平面的嵌入式 RTOS,或單獨構建為具有系統調用介面的微核心
- 內建每線程 CPU 負載測量
- 良好的文檔支援
3 支援的平台3.1 Allwinner
3.2 Atmel
- AVR ATMega128 (8-bit AVR)
- AVR AT90USB64x and AT90USB6128x (8-bit AVR)
- AVR32 AT32UC3BXXX (32-bit AVR32)
- Atmel SAMD20 (ARM Cortex-M0+)
- Atmel SAM3U (ARM Cortex-M3)
- Atmel SAM3X (ARM Cortex-M3)
- Atmel SAM4L (ARM Cortex-M4)
- Atmel SAM4S (ARM Cortex-M4)
- Atmel SAM4E (ARM Cortex-M4)
- Atmel SAMA5D3 (ARM Cortex-A5)
3.3 Freescale
- M68HCS12
- Freescale i.MX1 (ARM920-T)
- FreeScale KL25Z (ARM Cortex-M0+)
- FreeScale Kinetis K40 (ARM Cortex-M4)
- FreeScale Kinetis K60 (ARM Cortex-M4)
3.4 基於主機 PC 的模擬
3.5 Intel
3.6 MicroChip
- PIC32MX2xx Family (Modified MIPS32)
- PIC32MX4xx Family (Modified MIPS32)
- PIC32MX7xx Family (Modified MIPS32)
3.7 nuvoTon
- nuvoTon NUC120 (ARM Cortex-M0)
3.8 NXP
- NXP LPC214x (ARM7TDMI)
- NXP LPC2378 (ARM7TDMI)
- NXP LPC3131 (ARM9E6JS)
- NXP LPC315x (ARM9E6JS)
- NXP LPC176x (ARM Cortex-M3)
- NXP LPC178x (ARM Cortex-M3)
- NXP LPC43xx (ARM Cortex-M4)
3.9 Renesas/Hitachi:
- Renesas/Hitachi SuperH
- Renesas M16C/26
3.10 STMicroelectronics
- STMicro STR71x (ARM7TDMI)
- STMicro STM32L152 (STM32 L "EnergyLite" Line, ARM Cortex-M3)
- STMicro STM32F100x (STM32 F1 "Value Line"Family, ARM Cortex-M3)
- STMicro STM32F103C4/C8 (STM32 F1 "Low- and Medium-Density Line" Family, ARM Cortex-M3)
- STMicro STM32F103x (STM32 F1 Family, ARM Cortex-M3)
- STMicro STM32F107x (STM32 F1 "Connectivity Line" family, ARM Cortex-M3)
- STMicro STM32F207x (STM32 F2 family, ARM Cortex-M3)
- STMicro STM32F303x (STM32 F3 family, ARM Cortex-M4).
- STMicro STM32F407x (STM32 F4 family, ARM Cortex-M4)
- STMicro STM32 F427/437 (STM32 F4 family, ARM Cortex-M4)
- STMicro STM32 F429 (STM32 F4 family, ARM Cortex-M4)
3.11 Texas Instruments (some formerly Luminary)
- TI TMS320-C5471 (ARM7TDMI)
- TI Calypso (ARM7TDMI)
- TI TMS320-DM320 (ARM9E6JS)
- TI/Stellaris LM3S6432 (ARM Cortex-M3)
- TI/Stellaris LM3S6432S2E (ARM Cortex-M3)
- TI/Stellaris LM3S6918 (ARM Cortex-M3)
- TI/Stellaris LM3S6965 (ARM Cortex-M3)
- TI/Stellaris LM3S8962 (ARM Cortex-M3)
- TI/Stellaris LM3S9B96 (ARM Cortex-M3)
- TI/Stellaris LM4F120x (ARM Cortex-M4)
- TI/Tiva TM4C123G (ARM Cortex-M4)
3.12 ZiLOG
- ZiLOG ZNEO Z16F
- ZiLOG eZ80 Acclaim!
- ZiLOG Z8Encore!
- ZiLOG Z180
- ZiLOG Z80
4 支援的板卡
16z amber arduino-due avr32dev1 c5471evm cloudctrl compal_e86 compal_e88 compal_e99 demo9s12ne64 ea3131 ea3152 eagle100 ekk-lm3s9b96 ez80f910200kitg ez80f910200zco fire-stm32v2 freedom-kl25z hymini-stm32v kwikstik-k40 lincoln60 lm3s6432-s2e lm3s6965-ek |
lm3s8962-ek lm4f120-launchpad lpc4330-xplorer lpcxpresso-lpc1768 maple mbed mcu123-lpc214x micropendous3 mikroe-stm32f4 mirtoo mx1ads ne64badge ntosd-dm320 nucleus2g nutiny-nuc120 olimex-lpc1766stk olimex-lpc2378 olimex-lpc-h3131 olimex-stm32-p107 olimex-stm32-p207 olimex-strp711 open1788 p112 |
pcblogic-pic32mx pcduino-a10 pic32mx7mmb pic32-starterkit pirelli_dpl10 pjrc-8051 px4fmu-v2_upstream qemu-i486 rgmp sam3u-ek sam4e-ek sam4l-xplained sam4s-xplained sama5d3x-ek samd20-xplained 神舟IV號 sim skp16c26 spark stm3210e-eval stm3220g-eval stm3240g-eval stm32f100rc_generic |
stm32f3discovery stm32f429i-disco stm32f4discovery stm32ldiscovery stm32_tiny stm32vldiscovery sure-pic32mx teensy tm4c123g-launchpad twr-k60n512 ubw32 us7032evb1 viewtool-stm32f107 vsn xtrs z16f2800100zcog z80sim z8encore000zco z8f64200100kit zkit-arm-1769 zp214xpa |
5 檔案系統
- 基於記憶體的微型根偽檔案系統
- 虛擬檔案系統(VFS)
- 可掛載的卷:綁定掛載點、檔案系統和塊裝置磁碟機。
- 通用系統日誌(SYSLOG)支援
- FAT12/16/32檔案系統支援
- NFS用戶端:用戶端側支援網路檔案系統(NFS,版本3,UDP)
- NXFFS:微型 NuttX 損耗平衡 FLASH 檔案系統
- SMART:Ken Pettit提供的 FLASH檔案系統。
- procfs/ 檔案系統
- 基於 SPI 的 MMC/SD/SDH 卡的通用驅動
- ROMFS檔案系統支援
- 二進位載入器支援下列格式:
- 脫離連結的 ELF 模組
- 脫離連結的 NXFLAT 模組。NXFLAT 是可以從檔案系統晶片內執行的二進位格式。
- PATH 變數支援
- 通過 TFTP 和 FTP、HTML (wget)、 Zmodem (sz 和 rz) 傳輸檔案(接收和發送)。
6 裝置驅動
- VFS 支援字元和塊驅動
- 網路、 USB (主機)、 USB (裝置)、 串口、 I2C、 I2S、 NAND、 CAN、 ADC、 DAC、 PWM、 正交編碼器和看門狗定時器驅動架構。
- RAMDISK、 管道、 FIFO、 /dev/null、 /dev/zero 驅動
- 基於 SPI 或 SDIO 的 MMC/SD/SDH 卡的通用驅動
- 電源管理子系統
- 內建 FreeModBus 1.5.0 版提供的 ModBus 支援
- 圖形裝置:幀緩衝驅動、圖形和段式 LCD 驅動
- 音頻子系統:轉碼器、音頻輸入和輸出驅動。命令列和圖形介面媒體播放器應用程式
- 輸入裝置:觸控螢幕、USB 鍵盤、USB滑鼠、基於 GPIO 的按鈕和鍵盤
- 類比裝置:支援類比到數字轉換(ADC)、數字到類比轉換(DAC)、多工器和放大器
7 C/C++ 庫
- 完全整合在 OS 內的標準 C 庫
- 通過一個標準數學庫提供浮點支援
- 外掛程式 uClibc++ 模組提供標準 C++ 庫,支援 io 流、 字串、 STL、 RTTI、異常等(LGPL)
8 網路
- TCP/IP、 UDP、 ICMP、 IGMPv2(用戶端)棧
- SLIP
- 一個 cJSON 移植
- 小型封裝(基於 uIP)
- BSD相容的通訊端層
- 網路公用程式(DHCP 伺服器和用戶端、SMTP 用戶端、 TELNET 用戶端、FTP 伺服器和用戶端、TFTP 用戶端、HTTP 伺服器和用戶端、NTP 用戶端)。可繼承的 TELNET 會話(如“控制終端”)。
- NFS 用戶端:用戶端側支援網路檔案系統(NFS,版本3,UDP)
- 一個 Jeff Poskanzer 的 THTTPD HTTP 伺服器的 NuttX 移植,整合於 NXFLAT,提供嵌入式 CGI。
- UDP 網路發現, XML RPC 伺服器
- 支援網路模組(如 TI CC3000 WLAN 模組)
9 Flash 支援
- 靈感來自 MTD 的儲存技術裝置介面
- NAND 支援
- FTL:簡單的 Flash 轉換層,支援 FLASH 上的檔案系統
- NXFFS: NuttX 損耗平衡 FLASH 檔案系統
- 支援基於 SPI 的 FLASH 裝置
10 USB 支援10.1 USB 主機支援
- USB 主機控制器驅動和裝置依賴的 USB 類驅動的 USB 主機架構
- 可用於 NXP LPC17xx 的 USB 主機控制器驅動
- 可用於 USB 大量儲存裝置和 HID 鍵盤的裝置依賴的 USB 類驅動
10.2 USB 裝置支援
- USB 裝置控制器驅動和裝置依賴的 USB 類驅動的類 Gadget 架構
- 可用於 PIC32、 NXP LPC17xx、 LPC214x、 LPC313x、 LPC43xx、 STMicro STM32F1x、 STM32F2x、 STM32F4x 和 TI DM320 的 USB 裝置控制器驅動
- 可用於 USB 串口和 USB 大量儲存裝置的裝置依賴的 USB 類驅動
- 內建用於 USB 調試的 USB 追蹤功能
11 圖形支援
- 幀緩衝驅動
- 並行連接埠和 SPI 連接埠的 LCD 和OLED 的圖形 LCD 驅動
- 段式 LCD 驅動
- NX Graphics 子系統:一個圖形庫、視窗化系統和字型支援,工作於幀緩衝或 LCD 驅動
- NuttX Widgets:用保守的 C++ 編寫的圖形化使用者介面,整合於 NX Graphics
- NuttX 視窗管理器:一個微型視窗管理器,基於 NX Graphics 子系統和 NuttX Widgets
12 外掛程式12.1 NuttShell
- 一個用於 NuttX 的、小型的、可擴充的、類 bash 的 shell,具有豐富的特徵集和小型封裝。
12.2 Pascal 運行時
- Pascal 外掛程式可以從 SourceForge 網站下載。
13 開發環境
- Linux + GNU make + GCC/binutils for Linux
- Linux + GNU make + SDCC for Linux
- Windows with Cygwin + GNU make + GCC/binutils (Cygwin下自訂構建)
- Windows with Cygwin + GNU make + SDCC (Cygwin下自訂構建)
- Windows with Cygwin + GNU make + Windows 本地工具鏈
- Windows 本地 (CMD.exe) + GNUWin32 (含 GNU make) + MinGW 主機 GCC 編譯器 + Windows 本地工具鏈
- Wine + GNU make + Windows 本地工具鏈
14 連結
官方網站:http://www.nuttx.org
Wiki:http://www.nuttx.org/doku.php?id=wiki
下載:http://sourceforge.net/projects/nuttx