NuttX - NuttX
Эта статья содержит контент, который написан как Реклама.Декабрь 2017 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Логотип NuttX | |
Разработчик | Грегори Натт |
---|---|
Написано в | C, C ++, сборка |
Семейство ОС | Операционные системы реального времени |
Рабочее состояние | Текущий |
Исходная модель | Открытый исходный код |
изначальный выпуск | 2007 |
Последний релиз | 10.0 / 3 декабря 2020 г.[1] |
Маркетинговая цель | Встроенные системы |
Платформы | РУКА, AVR, AVR32, HCS12, LM32, MIPS, RISC-V, SuperH, Xtensa LX6, x86, x86-64, Z80 |
Ядро тип | В реальном времени Микроядро |
Лицензия | Лицензия Apache 2.0 |
Официальный веб-сайт | Nuttx |
NuttX это операционная система реального времени (ОСРВ ) с акцентом на технические стандарты соответствие и небольшой размер. Масштабируемость от 8 бит к 64-битный микроконтроллер среды, основные руководящие стандарты в NuttX взяты из Портативный интерфейс операционной системы (POSIX ) и Американский национальный институт стандартов (ANSI). Дальнейший стандарт интерфейсы прикладного программирования (API) из Unix и другие распространенные ОСРВ (например, VxWorks ) приняты для функций, недоступных в соответствии с этими стандартами или неподходящих для глубоко встроенных сред, таких как вилка.
NuttX был впервые выпущен в 2007 году Грегори Наттом как бесплатное программное обеспечение с открытым исходным кодом под разрешающим Лицензия BSD. В настоящее время он проходит инкубацию в Фонд программного обеспечения Apache.
Выполнение
NuttX написан почти исключительно на языке программирования C и использует Kconfig для настройки и генерации GNU make-файлы для системы. Дистрибутив программы сочетает в себе ядро и значительное количество промежуточное ПО и код для поддержки платы и драйверы устройств. Ядро и большая часть другого кода были написаны первоначальным автором Грегори Наттом. Он поддерживает исходный код исключительно и должен утверждать все взносы сообщества.
Ключевая особенность
- Соответствие стандартам
- Управление задачами
- Управление основными задачами
- Процессы (Необязательный)
- POSIX / ANSI-подобные элементы управления задачами
- Модульная конструкция
- От корки до корки вытесняемый
- Естественно масштабируемый
- Легко настраиваемый
- Легко расширяется до новых архитектур процессоров, архитектуры SoC или архитектуры плат
- Планировщики
- ФИФО
- По-круговой (RR)
- В реальном времени, детерминированный, с поддержкой наследования приоритетов
- Бестиксовая операция
- МПК
- названный очереди сообщений
- подсчет семафоры
- сигналы
- часы / таймеры
- переменные среды
- Потоки POSIX (pthreads),
- Несколько файловые системы[который? ]
- VxWorks -как управление задачами и сторожевые таймеры
- BSD интерфейс сокета
- Расширения для управления приоритетом
- Симметричная многопроцессорная обработка (SMP)
- Загружаемые модули ядра
- Конфигурации памяти
- плоская встроенная сборка
- защищенная сборка с MPU
- сборка ядра с MMU
- Распределители памяти
- стандартное выделение памяти в куче
- распределитель гранул
- Общая память
- динамический размер кучи для каждого процесса
- Локальное хранилище потоков (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
- Зилог
- Зилог Z16F
- Zilog eZ80 Приветствуем!
- Zilog Z8Encore!
- Зилог Z80
Файловая система
- Крошечная корневая псевдо-файловая система в памяти
- Виртуальная файловая система (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)
- Двоичный загрузчик с поддержкой следующих форматов:
- Отдельно связаны Исполняемый и связываемый формат (ELF) модули
- Отдельно связанные модули для NXFLAT: двоичный формат, который может быть XIP из файловой системы
- Поддержка переменной 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 ++
- Стандарт C библиотека полностью интегрирован в ОС
- Включает поддержку операций с плавающей запятой через стандартную математическую библиотеку
- Надстройка uClibc ++[4] модуль предоставляет стандартные C ++ Поддержка библиотеки ввод / вывод (C ++) (iostreams), струны, Стандартная библиотека шаблонов (STL), информация о типе времени выполнения (RTTI), исключения, так далее. (LGPL )
Сети
Сетевой стек, включенный в NuttX, получен из uIP (микро-IP), первоначально разработанная Адам Данкелс.
- Поддержка нескольких сетевых интерфейсов; поддержка нескольких уровней сетевых каналов
- IPv4, IPv6,Набор интернет-протоколов (TCP / IP), Протокол пользовательских датаграмм (UDP), Протокол управляющих сообщений Интернета (ICMP), Протокол управления интернет-группами (IGMP) версии 2 (клиентские) стеки
- Сокеты потоков и датаграмм
- Необработанный сокет и локальная поддержка сокетов домена Unix
- Разрешение DNS-имен, NetDB
- IEEE 802.11 (WiFi) FullMac
- IEEE 802.15.4 MAC + 6loWPAN
- Интернет-протокол последовательной линии (SLIP), TUN / PPP, устройства локальной петли
- CJSON[5] порт
- Небольшой размер (на основе uIP)
- BSD-совместимый слой сокетов
- Сетевые утилиты (Протокол динамического конфигурирования сервера (DHCP) сервер и клиент, Простой протокол передачи почты (SMTP) клиент, Telnet клиент протокол передачи файлов (FTP) сервер и клиент, Простой протокол передачи файлов (TFTP) клиент, Протокол передачи гипертекста (HTTP) сервер и клиент, Сетевой протокол времени (NTP) клиент); наследуемый Telnet сессий (как управляющий терминал). VNC сервер
- Сетевая файловая система (NFS) клиент, поддерживает NFS, версия 3, UDP
- Автономная автоконфигурация ICMPv6
- NuttX порт Джефа Посканцера thttpd HTTP-сервер, интегрированный с NXFLAT для обеспечения встроенного CGI
- Управление статусом PHY связи
- Обнаружение сети UDP, сервер XML RPC
- XML RPC-сервер
- Поддержка сетевых модулей (таких как модуль TI CC3000 WLAN)
Поддержка Flash
- Устройство памяти (MTD) вдохновленный интерфейс для устройств MTD
- FTL: simple flash Translation Layer поддерживает файловые системы на Flash
- Поддержка NAND
- NXFFS: выравнивание износа флэш-память файловая система
- Поддержка для Последовательный периферийный интерфейс (SPI) флеш-устройства на базе шины
Поддержка 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
Графическая поддержка
- Кадровый буфер водители
- Жидкокристаллический дисплей (LCD) драйверы для параллельных и SPI LCD и органических светодиодов (OLED )
- Драйверы сегментных ЖК-дисплеев
- VNC сервер
- Графическая подсистема NX: графическая библиотека, оконная система и поддержка шрифтов, которые работают с фреймбуфером или драйверами ЖК-дисплея.
- Виджеты NuttX:[6] А графический интерфейс пользователя (GUI) написан на консервативном C ++ интегрируется с графикой NX
- NuttX оконный менеджер:[7] крошечный, на основе графической подсистемы NX и виджетов NuttX
Проекты с использованием 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]
Рекомендации
- ^ «Выпущен NuttX-10.0». Получено 2020-02-17.
- ^ «Spresense сочетает в себе многоядерность и энергоэффективность». Получено 5 сентября, 2019.
- ^ "Руководство по переносу". Получено 22 ноября 2012.
- ^ "uClibc ++". Получено 22 ноября 2012.
- ^ "cJSON". Получено 22 ноября 2012.
- ^ "Виджеты NuttX". Получено 22 ноября 2012.
- ^ "NxWM". Получено 22 ноября 2012.
- ^ "Thingsee". Получено 27 июля 2015.
- ^ «Автопилот PX4». Получено 3 мая 2013.
- ^ "Бифферборд". Получено 22 ноября 2012.
- ^ «Nuttx играет MP3 в Detron Board». Получено 22 ноября 2012.
- ^ «ОсмокомББ». Получено 22 ноября 2012.
- ^ "Домашняя управляемая система". Получено 22 ноября 2012.
- ^ "Разработка встроенной системы для измерения производительности видео. Магистерская работа Петтери Аймонена" (PDF). Получено 22 июля 2014.
- ^ «Оптимизация встроенного программного обеспечения с низким энергопотреблением для ОСРВ NuttX. Монография Диего Санчеса Лопеса по электротехнике» (PDF). Получено 12 июля 2015.
- ^ «Прошивка Moto Mods: Обзор». Получено 28 декабря 2016.
- ^ «Модульный телефон Moto Z Android поддерживает надстройки DIY и RPi HAT». Получено 22 августа 2016.
- ^ «Разработка аудиопродуктов с помощью Cortex-M3 / NuttX / C ++ 11» (PDF). Архивировано из оригинал (PDF) 20 января 2017 г.. Получено 20 января 2017.
- ^ «Тизен РТ». Получено 21 февраля 2017.
внешняя ссылка
- Официальный веб-сайт
- Официальная группа пользователей NuttX
- Linux Journal упомянул NuttX Эта цитата привлекла внимание NuttX к моим разработчикам Linux 01.09.2010
- Компиляция NuttX на открытую аппаратную плату micropendousX
- Сообщение Dangerous Prototypes о NuttX Dangerous Prototypes - создатель знаменитых Автобус Пират бортовой сниффер.
- Порт NuttX на x86