接触APM飞控一段时间,主要精力都在分析姿态控制算法了,抽空了解下其操作系统
(嵌入式 实时操作系统 rtos nuttx 7.1)
NuttX 介绍
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
A10 (Cortex-A8)
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 的仿真
Linux/Cygwin 用户模式仿真
3.5 Intel
Intel 80x52
Intel 80x86
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