NuttX 介绍

2023-05-16

(嵌入式 实时操作系统 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

  • 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
Wiki: http://www.nuttx.org/doku.php?id=wiki
下载: http://sourceforge.net/projects/nuttx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NuttX 介绍 的相关文章

  • nuttx和linux区别,Nuttx文件系统

    1 介绍 文件系统 xff0c 是对一个存储设备上的数据和元数据进行组织的机制 xff0c 它是操作系统管理持久性数据的子系统 xff0c 提供数据存储和访问功能 将一个文件系统与一个存储设备关联起来的过程叫做挂载 mount xff0c
  • nuttx-概述

    早期基于MSP430系列 STM32系列 EFM32系列 AT91SAM9X imx6ul系列做各种物联网产品 xff0c 近几年国芯片慢慢崛起 xff0c 加上ST芯片价格暴涨 xff0c 更是让国产芯片赢得了难得的发展机会 xff0c
  • Nuttx的源码构建和编译

    下载源码 sudo mkdir Nuttx cd Nuttx Nuttx xff1a git clone https bitbucket org nuttx nuttx gitapps xff1a git clone https bitbu
  • 为何选择nuttx

    裸机程序 xff0c 不能处理太复杂的逻辑 xff0c 系统越复杂 xff0c 越需要上os freertos 不支持posix api rtems是gpl版权 nuttx bsd版权 xff0c px4和apm开源飞控都使用nuttx 经
  • Atmel Cortex-A5跑Nuttx是如此酸爽

    开源RTOS Nuttx已经支持Atmel SAMA5系列MPU xff0c 而且看到Nuttx还支持Graphic API xff0c 决定尝试在Ateml SAMA5D3 Xplained上跑下Nuttx Nuttx是一款开源RTOS
  • PX4项目学习::(三)Nuttx操作系统

    50条消息 PX4代码解析 4 超级菜狗的博客 CSDN博客 px4代码解析
  • px4之nuttx操作系统编译

    nuttx 嵌入式操作系统 1 下载源码 https nuttx apache org download 分别下载app和os 下载完毕后 xff0c 解压两个压缩包 2 根据当前嵌入式的开发板子 xff0c 进行配置 span class
  • Nuttx驱动(一)简介

    第一次写Nuttx系统的驱动 xff0c 用惯了rt thread FreeRTOS等RTOS或裸机的驱动编写 写Nuttx驱动感觉好蹩脚 xff0c 顺便记录一下 xff08 by the way 先完成 xff0c 再完善 xff09
  • Nuttx驱动(二)实例

    接上一篇文章 xff0c 这篇主要是nuttx驱动编写实践部分 基础部分请移驾 Nuttx驱动 xff08 一 xff09 简介 Nuttx驱动例程 在该例程中 xff0c 假设有这么一个设备 xff1a 有3个IO输出和一个IO输入的RG
  • nuttx杂记

    1 设置自启动应用 修改deconfig文件下的 CONFIG INIT ENTRYPOINT 参数即可 2 消息队列使用 以下是Nuttx系统中使用queue create函数创建队列的示例代码 xff1a include lt stdi
  • nuttx学习-0:模拟安装

    一 Nuttx 模拟运行环境的安装 xff1a 1 文件要求 xff0c 主要需要三个文件 xff1a nuttx 7 24 tar apps 7 24 tar nuttx tools tar 2 环境要求 xff1a sudo apt g
  • 乐鑫多系列芯片支持 NuttX 和 Zephyr 操作系统

    乐鑫芯片凭借丰富的功能和广阔的应用 xff0c 在物联网市场广受欢迎 乐鑫还为用户提供了一个物联网开发框架 ESP IDF xff0c 集成大量软件组件 xff0c 包括 RTOS 外设驱动程序 网络栈和多种协议实现技术等 开发者能够在乐鑫
  • genromfs的使用及nuttx下romfs制作

    61 61 61 61 61 gt 我的博客目录导航 前言 这篇文章仅仅是为了记录如何使用genromfs制作romfs然后在nuttx上直接应用 xff0c 不会去详细介绍romfs的一系列特性 genromfs 首先去下载genromf
  • Nuttx下移植uorb笔记

    Nuttx下移植uorb笔记 之前接触过ros下的消息机制 xff08 生产者 消费者 xff09 模型 xff0c 第一感觉是灵活好用 xff0c 但是在资源有限的嵌入式环境里面 xff0c 邮箱 消息 显得就有点不那么灵活 xff0c
  • nuttx操作系统的移植以及下载

    1 在ubuntu根目录下 xff1a root 64 ubuntu apt get update 更新包 2 root 64 ubuntu apt get install gcc arm none eabi 编译器 3 kconfig f
  • NuttX 文件系统架构介绍(7.14)

  • Nuttx romfs与启动脚本rcS

    ARM系统上电后 xff0c 系统将flash地址映射到零地址处 xff0c 处理器从零地址处开始运行第一条指令 而在零地址处 xff0c 一般是系统复位中断向量 xff0c 此处存放的是一条跳转指指令 xff0c 通过该条换指令 xff0
  • nuttx操作系统的移植以及下载

    origin http blog csdn net seawolfe article details 70244672 1 在ubuntu根目录下 xff1a root 64 ubuntu apt get update 更新包 2 root
  • esp32c3 nuttx 移植 micropython 尝试

    源码来自 https github com apache incubator nuttx apps pull 840 和 https github com apache incubator nuttx apps tree 787ac9060
  • 小米在建IoT护城河Vela NuttX

    MIDC 2020小米开发者大会刚刚过去 整场大会下来 几个印象比较深刻的点是 雷军宣布扩招5000名工程师 最新伸缩式大光圈镜头技术 小爱同学5 0发布 当然了 还有一个更加值得被提及的重点是 首次亮相的Xiaomi Vela物联网软件平

随机推荐

  • React 组件 API

    常用 React 组件 API xff1a 设置状态 xff1a setState替换状态 xff1a replaceState设置属性 xff1a setProps替换属性 xff1a replaceProps强制更新 xff1a for
  • 浅析SATA Physical Layer物理层OOB信号

    一 SATA物理层概述 说OOB之前 xff0c 首先得了解一下SATA结构以及物理层的含义 SATA主要包括 xff1a 应用层 Application Layer 传输层 Transport Layer xff0c 链路层 Link L
  • CodeBlocks 20.03下载及安装指南 使用自带MinGW进行环境配置

    原本用的好好的CodeBlocks 17 12 xff0c 今天手欠无聊去搜了一下官网发现两年都没更新的cb竟然在这两天更新了 对于一直喜欢用最新版的我 xff0c 一定要更新 xff0c 然后 我还把之前的各项配置都删掉了 好吧 xff0
  • 程序是从main主函数开始运行吗?

    很多人开始学计算机语言 xff0c 编写代码时都会有一个疑问 xff1a 程序真的是从main主函数开始的吗 xff1f 之前什么都不做吗 xff1f main结束后就不能执行其他函数了吗 xff1f 下面本篇文章就为此问题做一个简单的解释
  • C++内存越界(转)

    glibc detected free invalid pointer glibc detected malloc memory corruption glibc detected double free or corruption out
  • 总结几种结构体初始化的方法(转)

    总结几种结构体初始化的方法 转自 xff1a http www cnblogs com vongang archive 2011 07 30 2122076 html 结构体能自由组装数据 xff0c 是一种很常见的数据打包方法 当我们定义
  • C++各大有名库的介绍(转)

    C 43 43 各大有名库的介绍 C 43 43 各大有名库的介绍之C 43 43 标准库 标准库中提供了C 43 43 程序的基本设施 虽然C 43 43 标准库随着C 43 43 标准折腾了许多年 xff0c 直到标准的出台才正式定型
  • 内存分配——静态存储区 栈 堆 与static变量 (转)

    一 内存基本构成 可编程内存在基本上分为这样的几大部分 xff1a 静态存储区 堆区和栈区 他们的功能不同 xff0c 对他们使用方式也就不同 静态存储区 xff1a 内存在程序编译的时候就已经分配好 xff0c 这块内存在程序的整个运行期
  • Java的集合框架最全详解(图)

    Java的集合框架最全详解 xff08 图 xff09 前言 xff1a 数据结构对程序设计有着深远的影响 xff0c 在面向过程的C 语言中 xff0c 数据库结构用struct来描述 xff0c 而在面向对象的编程中 xff0c 数据结
  • 如何查看sybase存储过程的内容?

    如何查看sybase存储过程的内容 xff1f 1 在isql xff08 或SQL Advantage xff09 中执行 xff1a sp helptext 存储过程名 可以查看存储过程的内容 2 在 SQL CENTRAL里连接你的服
  • Oracle的表分析是做什么的?

    Oracle的表分析是做什么的 xff1f analyze table tablename compute statistics 分析的结果被Oracle用于基于成本的优化生成更好的查询计划 那么 xff0c 问题在于 xff1a Orac
  • React Refs

    React 支持一种非常特殊的属性 Ref xff0c 可以用来绑定到 render 输出的任何组件上 这个特殊的属性允许引用 render 返回的相应的支撑实例 xff08 backing instance xff09 这样就可以确保在任
  • μC/OS-II学习之:任务,信号量、邮箱、队列及其区别

    一 xff1a UCOS是一种抢占式的多任务操作系统 xff0c 如果最高优先级的任务不主动放弃CPU的使用的话 xff0c 其他任务是无法运行的 xff0c 通常情况下 xff0c 高优先级的任务在使用完CPU或其他资源后都要主动放弃 x
  • 51 单片机简单的多任务调度例子(转)

    51 单片机简单的多任务调度例子 看大家都在学操作系统 xff0c 我也想学学 所以想用51写一个来玩玩 xff0c 发现比较郁闷 弄了几下 xff0c 不想再弄了 xff0c 51弄这个没啥意思 我用的89S52 xff0c 除了速度慢
  • java代码编写随笔总结

    一 项目模块定义 说明 xff1a 一个产品分为各个独立的原子服务 xff0c 通过这些独立的原子服务进行组合来满足各种业务的需求 1 各原子服务关系与原则 xff1a 依赖关系 xff1a 只能上级依赖下级 xff0c 不可下级依赖上级
  • 缓冲区溢出原理学习

    什么是缓冲区溢出 xff1f 缓冲区 简单说来是一块连续的计算机内存区域 可以保存相同数据类型的多个实例 动态变量在程序运行时定位于堆栈之中 我们这里只关心动态缓冲区的溢出问题 即基于堆栈的缓冲区溢出 进程的内存组织形式 一个进程在内存中被
  • Java学习笔记12:求s=1+11+111+1111+......+1111......1的值

    64 author 朱凌风 64 weather 阵雨 64 date 06 19 2011 64 function 计算1 43 11 43 111 43 43 111 1的值 package com jerome import java
  • 配置Ubuntu软件源

    引子 Ubuntu系统的软件源就是指Ubuntu系统的软件更新管理器下载更新软件的来源 xff0c 是一个软件仓库 Ubuntu系统对这个软件源的配置的信息是放在一个文本文件中的 xff0c 这个文本文件的完整路径一般是 etc apt s
  • NuttX 启动流程

    xff08 嵌入式 实时操作系统 rtos nuttx 7 1 stm32 源代码分析 xff09 NuttX 启动流程 转载请注明出处 xff1a http blog csdn net zhumaill article details 2
  • NuttX 介绍

    xff08 嵌入式 实时操作系统 rtos nuttx 7 1 xff09 NuttX 介绍 转载请注明出处 xff1a http blog csdn net zhumaill article details 24197637 1 Nutt