NuttX Notes
NuttX是一款关注于标准符合度和减小footprint的实时操作系统。NuttX中最重要的标准就是POSIX和ANSI标准,如果这些标准中缺少某些所需要的功能,那么NuttX也会尽量采用UNIX或者其他RTOS(例如VxWorks)中已有的标准API。
NuttX使用BSD协议。
关键特性:
- 标准符合度
- 核心任务管理
- 模块化设计
- 完全抢占式调度
- 可扩展性
- 高度可定制性
- 可以方便地扩展到新的处理器架构、SoC架构或者板级架构
- 支持FIFO、轮转和 “sporadic” 调度策略
- 实时性、确定性、支持优先级继承
- 支持Tickless Operation
- 同POSIX/ANSI类似的任务管理、命名消息队列、信号量、时钟/定时器、信号、pthreads、环境变量、文件系统
- 同VxWorks类似的任务管理和watchdog定时器
- BSD套接字接口
- 用于管理抢占策略的扩展
- 可选的具有地址环境的任务(也就是进程)
- 内存配置:
- Flat embedded build
- Protected build with MPU
- Kernel build with MMU
- 内存分配器
- 标准堆内存分配
- 微粒分配器(Granule Allocator)
- 共享内存
- 动态调整的、每个进程独立的堆
- 可继承的“控制终端”和I/O重定向
- 按需分页
- 系统日志
- 既可以被编译为一个开放的、平台的嵌入式RTOS,也可以被编译为一个独立的、带有系统调用接口的安全的微内核
- 内建有针对每个线程的CPU负责统计功能
- 文档丰富(NuttX User Guide)
MTD设备
NuttX中实现了类似于Linux中MTD的接口,统一封装了各种Raw Flash(例如NAND、OneNAND、NOR、AG-AND、ECC'd NOR等)存储器,这些设备被统一暴露为/dev/mtdN这样的设备文件。需要注意的是,例如MMC、eMMC、SD、CompactFlash这样的块设备不在MTD关注的范围之内。