嵌入式操作系统介绍之 NuttX

网友投稿 941 2022-05-29

更好的排版:https://mp.weixin.qq.com/s/W5-PhZmL8aZpT4nKy14_HQ

目录

1  NuttX 实时操作系统

2  关键特征

3  支持的平台

4  支持的板卡

5  文件系统

6  设备驱动

7  C/C++ 库

8  网络

9  Flash 支持

10  USB 支持

11  图形支持

12  插件

13  开发环境

14  链接

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 上的文件系统

嵌入式操作系统介绍之 NuttX

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

嵌入式 网络

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:(更新时间)2021年5月12日 redis数据库 Redis面试题
下一篇:基因数据分析软件迁移-cellranger
相关文章