NuttX - NuttX

NuttX
NuttX logo.png
Логотип NuttX
РазработчикГрегори Натт
Написано вC, C ++, сборка
Семейство ОСОперационные системы реального времени
Рабочее состояниеТекущий
Исходная модельОткрытый исходный код
изначальный выпуск2007; 13 лет назад (2007)
Последний релиз10.0 / 3 декабря 2020 г.; 5 дней назад (2020-12-03) [1]
Маркетинговая цельВстроенные системы
ПлатформыРУКА, AVR, AVR32, HCS12, LM32, MIPS, RISC-V, SuperH, Xtensa LX6, x86, x86-64, Z80
Ядро типВ реальном времени Микроядро
ЛицензияЛицензия Apache 2.0
Официальный веб-сайтNuttx.apache.org

NuttX это операционная система реального времени (ОСРВ ) с акцентом на технические стандарты соответствие и небольшой размер. Масштабируемость от 8 бит к 64-битный микроконтроллер среды, основные руководящие стандарты в NuttX взяты из Портативный интерфейс операционной системы (POSIX ) и Американский национальный институт стандартов (ANSI). Дальнейший стандарт интерфейсы прикладного программирования (API) из Unix и другие распространенные ОСРВ (например, VxWorks ) приняты для функций, недоступных в соответствии с этими стандартами или неподходящих для глубоко встроенных сред, таких как вилка.

NuttX был впервые выпущен в 2007 году Грегори Наттом как бесплатное программное обеспечение с открытым исходным кодом под разрешающим Лицензия BSD. В настоящее время он проходит инкубацию в Фонд программного обеспечения Apache.

Выполнение

NuttX написан почти исключительно на языке программирования C и использует Kconfig для настройки и генерации GNU make-файлы для системы. Дистрибутив программы сочетает в себе ядро и значительное количество промежуточное ПО и код для поддержки платы и драйверы устройств. Ядро и большая часть другого кода были написаны первоначальным автором Грегори Наттом. Он поддерживает исходный код исключительно и должен утверждать все взносы сообщества.

Ключевая особенность

  • Соответствие стандартам
  • Управление задачами
    • Управление основными задачами
    • Процессы (Необязательный)
    • POSIX / ANSI-подобные элементы управления задачами
  • Модульная конструкция
  • От корки до корки вытесняемый
  • Естественно масштабируемый
  • Легко настраиваемый
  • Легко расширяется до новых архитектур процессоров, архитектуры SoC или архитектуры плат
  • Планировщики
  • В реальном времени, детерминированный, с поддержкой наследования приоритетов
  • Бестиксовая операция
  • МПК
  • Потоки POSIX (pthreads),
  • Несколько файловые системы[который? ]
  • VxWorks -как управление задачами и сторожевые таймеры
  • BSD интерфейс сокета
  • Расширения для управления приоритетом
  • Симметричная многопроцессорная обработка (SMP)
  • Загружаемые модули ядра
  • Конфигурации памяти
    1. плоская встроенная сборка
    2. защищенная сборка с MPU
    3. сборка ядра с MMU
  • Распределители памяти
    1. стандартное выделение памяти в куче
    2. распределитель гранул
    3. Общая память
    4. динамический размер кучи для каждого процесса
  • Локальное хранилище потоков (TLS)
  • Наследуемый управляющие терминалы, псевдотерминалы (PTY) и ввод, вывод (I / O) перенаправление
  • Пейджинг по запросу
  • Системный журнал
  • Может быть построен как открытая плоская встроенная ОСРВ или как отдельно построенное безопасное ядро ​​с интерфейсом шлюза системных вызовов
  • Встроенные измерения загрузки ЦП для каждого потока
  • Пользовательский NuttX Стандартная библиотека C

Поддерживаемые платформы

  • РУКА
    • ARM7 TDMI (TI TMS320 C6571, Calypso, MoxART, NXP LPC214x, LPC2378, STMicro STR71x)
    • ARM9 20T (Freescale i.MX1)
    • ARM9 26EJS (TI DM320, NXP LPC31xx)
    • ARM Cortex-A 5 (Atmel SAMA5D2, SAMA5D3, SAMA5D4)
    • ARM Cortex-A 8 (Allwinner A10)
    • ARM Cortex-A 9 (NXP / Freescale i.MX6)
    • ARM Cortex-R 4 / R4F (TI TMS570, Samsung Artik)
    • ARM Cortex-M 0 (nuvoTon: NUC120, NXP: KL25Z, KL26Z, LPC11xx, Atmel: SAMD20 / 21, SAML21, ST Micro STM32 F0)
    • ARM Cortex-M 3 (ST Micro STM32 F1 / F2 / L1, TI / Stellaris LM3S, NXP LPC17xx, Atmel SAM3U / 3X, SiliconLabs EFM32)
    • ARM Cortex-M 4 (с / без модуля с плавающей запятой: ST Micro STM32 F3 / F4 / L4 / L4 +, TI / Stellaris LM4F / TM4C, NXP LPC43xx / LPC54xx, Freescale Kinetis K20 / K28 / K40 / 60/64/66, Atmel SAM4C / 4E / 4S / 4L, Infineon XMC4xxx, Nordic NRF52xxx, Sony CXD5602 / Spresense[2])
    • ARM Cortex-M 7 (Atmel SAMV71 / SAME70, ST Micro STM32 F7 / H7, NXP i.MX RT)
  • Atmel AVR
    • 8-битный AVR Atmel (AT90USB, ATmega)
    • AVR32
  • Freescale M68HCS12
  • Intel
  • MIPS
    • MicroChip PIC32MX (MIPS32 24Kc)
    • MicroChip PIC32MZ (MIPS32 M14k)
  • Мисок
    • LM32 (Qemu)
  • OpenRISC
    • mor1kx
  • Renesas / Hitachi
    • Renesas / Hitachi SuperH
    • Renesas M16C / 26
  • RISC-V
    • СЛЕДУЮЩИЙ RISC-V NR5Mxx (RV32IM)
    • GreenWaves GAP8 (RV32IM)
  • Xtensa LX6
    • Expressif ESP32
  • Зилог

Файловая система

  • Крошечная корневая псевдо-файловая система в памяти
  • Виртуальная файловая система (VFS)
  • Смонтированные тома. Привязать точку монтирования, файловую систему и драйвер блочного устройства
  • Поддержка общего системного журнала (SYSLOG)
  • Таблица размещения файлов (FAT) Поддержка файловой системы 12/16/32
  • Сетевая файловая система (NFS) клиент, поддерживает NFS, версия 3, UDP
  • NXFFS: небольшое выравнивание износа флэш-память файловая система
  • SMART: файловая система flash от Кена Петтита
  • Универсальный драйвер для карт на базе SPI: MultiMediaCard (MMC) и Secure Digital (SD / SDHC)
  • Romfs поддержка файловой системы
  • Поддержка псевдо-файловой системы BINFS
  • Поддержка файловой системы HOSTFS (только моделирование)
  • Файловая система Union: поддерживает объединение и наложение файловых систем
  • Псевдо-файловая система PROCFS (/ proc)
  • Двоичный загрузчик с поддержкой следующих форматов:
  • Поддержка переменной PATH
  • Передача файлов через TFTP и FTP (получение и размещение), HTML (wget) и Zmodem (sz и rz)
  • Преобразования Intel HEX

Драйверы устройств

  • VFS поддерживает символьные и блочные драйверы
  • Асинхронный ввод / вывод (AIO)
  • Сеть, USB (хост), USB (устройство), серийный, I2C, I2S, NAND, сеть контроллеров (CAN-шина ), АЦП, ЦАП, ШИМ, квадратурный энкодер и архитектуры драйвера сторожевого таймера
  • RAM диск или диск, каналы, FIFO, / dev / null, / dev / zero драйверы
  • Универсальный драйвер для карт MMC / SD / SDH на основе SPI или SDIO
  • Подсистема управления питанием
  • Modbus поддержка обеспечивается встроенным FreeModBus версии 1.5.0
  • Графические устройства: кадровый буфер драйверы, графические и сегментные ЖК-драйверы
  • Аудиоподсистема: Кодеки, драйверы аудиовхода и вывода. Приложения командной строки и графического медиаплеера
  • Подсистема криптографии
  • Устройства ввода: сенсорный экран, USB-клавиатура, USB-мышь, кнопки и клавиатуры на основе GPIO
  • Устройства с памятью
  • Аналоговые устройства: поддержка аналого-цифровой преобразователь (АЦП), цифро-аналоговый преобразователь (ЦАП), мультиплексоры и усилители
  • Системные устройства регистрации
  • Руководство по портированию[3]

Библиотека C / C ++

Сети

Сетевой стек, включенный в NuttX, получен из uIP (микро-IP), первоначально разработанная Адам Данкелс.

Поддержка Flash

Поддержка USB

Хозяин

  • Архитектура хоста USB для драйверов хост-контроллера USB и драйверов класса USB, зависящих от устройства.
  • Драйверы хост-контроллера USB доступны для Atmel SAMA5Dx, NXP LPC17xx, LPC31xx и STmicro STM32.
  • Доступны зависящие от устройства драйверы класса USB для запоминающих устройств USB и HID-клавиатуры.
  • Полная поддержка USB-концентраторов.

Устройство

  • Гаджетоподобная архитектура для драйверов контроллера USB-устройств и драйверов USB-класса, зависящих от устройства
  • Драйверы контроллера USB-устройств доступны для PIC32, Atmel AVR, SAM3, SAM4 и SAMA5Dx, NXP LPC17xx, LPC214x, LPC313x и LPC43xx, Silicon Laboraties EFM32, STMicro STM32 F1, F2, F3 и F4, а также TI DM320.
  • Зависящие от устройства драйверы класса USB доступны для последовательного порта USB и для USB-накопителя.
  • Встроенная функция трассировки USB для отладки USB

Графическая поддержка

Проекты с использованием NuttX

  • Thingsee Интернет вещей (IoT) устройство разработки.[8]
  • Автопилот PX4 использует NuttX для управления множеством автономных платформ.[9]
  • Biffer Board поддерживает множество ОСРВ, включая NuttX.[10]
  • MP3 плеер реализован с NuttX.[11]
  • OsmocomBB использует NuttX для разработки операционной системы для сотовых телефонов.[12]
  • Самодельная система управления по проводам, реализованная с использованием NuttX.[13]
  • Устройство для измерения производительности видео.[14]
  • Оптимизация встроенного программного обеспечения с низким энергопотреблением для ОСРВ NuttX.[15]
  • Motorola Moto Z.[16][17]
  • Sony использует NuttX в своих аудиопроцессорах.[18]
  • Samsung анонсирует TizenRT на базе NuttX RTOS.[19]

Рекомендации

  1. ^ «Выпущен NuttX-10.0». Получено 2020-02-17.
  2. ^ «Spresense сочетает в себе многоядерность и энергоэффективность». Получено 5 сентября, 2019.
  3. ^ "Руководство по переносу". Получено 22 ноября 2012.
  4. ^ "uClibc ++". Получено 22 ноября 2012.
  5. ^ "cJSON". Получено 22 ноября 2012.
  6. ^ "Виджеты NuttX". Получено 22 ноября 2012.
  7. ^ "NxWM". Получено 22 ноября 2012.
  8. ^ "Thingsee". Получено 27 июля 2015.
  9. ^ «Автопилот PX4». Получено 3 мая 2013.
  10. ^ "Бифферборд". Получено 22 ноября 2012.
  11. ^ «Nuttx играет MP3 в Detron Board». Получено 22 ноября 2012.
  12. ^ «ОсмокомББ». Получено 22 ноября 2012.
  13. ^ "Домашняя управляемая система". Получено 22 ноября 2012.
  14. ^ "Разработка встроенной системы для измерения производительности видео. Магистерская работа Петтери Аймонена" (PDF). Получено 22 июля 2014.
  15. ^ «Оптимизация встроенного программного обеспечения с низким энергопотреблением для ОСРВ NuttX. Монография Диего Санчеса Лопеса по электротехнике» (PDF). Получено 12 июля 2015.
  16. ^ «Прошивка Moto Mods: Обзор». Получено 28 декабря 2016.
  17. ^ «Модульный телефон Moto Z Android поддерживает надстройки DIY и RPi HAT». Получено 22 августа 2016.
  18. ^ «Разработка аудиопродуктов с помощью Cortex-M3 / NuttX / C ++ 11» (PDF). Архивировано из оригинал (PDF) 20 января 2017 г.. Получено 20 января 2017.
  19. ^ «Тизен РТ». Получено 21 февраля 2017.

внешняя ссылка