1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/nuttx-rtos-nuttx-apps

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Папка с приложениями

Содержимое

  • Общие сведения
  • Расположение директории
  • Встроенные приложения
  • Встроенные команды NuttShell (NSH)
  • Синхронные встроенные команды
  • Файл конфигурации приложения
  • Пример встроенного приложения
  • Сборка NuttX с компонентами, специфичными для платы, находящимися вне дерева исходных кодов

Общие сведения

Эта папка предоставляет различные приложения, найденные в подпапках. Эти приложения не являются неотъемлемой частью NuttX, но предоставляются для помощи в разработке собственных приложений. Папка apps/ является отдельной частью конфигурации, которую вы можете использовать или нет.

Расположение директории

По умолчанию папка приложений, используемая сборкой NuttX, должна называться apps/ (или apps-x.y.z/, где x.y.z — номер версии NuttX). Эта папка apps/ должна находиться в дереве директорий на том же уровне, что и папка NuttX. Например:

 .
 |- nuttx
 |
 `- apps

Если все вышеупомянутые условия выполнены, то NuttX сможет найти папку приложений. Если ваша папка приложений имеет другое имя или расположена в другом месте, вам нужно будет сообщить сборочной системе NuttX о её расположении. Существует несколько способов сделать это:1) Вы можете определить CONFIG_APPS_DIR как полный путь к вашей папке приложений в файле конфигурации NuttX. 2) Вы можете предоставить путь к папке приложений на командной строке, как: make APPDIR=<path> или make CONFIG_APPS_DIR=<path> 3) При конфигурировании NuttX с помощью tools/configure.sh вы можете предоставить путь к папке приложений на командной строке конфигурирования, как: ./configure.sh -a <app-dir> <board-name>:<config-name>## Встроенные приложения

NuttX также поддерживает приложения, которые можно запустить с помощью строки идентификатора. В этом случае точки входа приложений с их требованиями собираются в двух файлах:

  • builtin/builtin_proto.h – Точки входа, прототип функции
  • builtin/builtin_list.h – Специфическая информация и требования приложения

Процесс сборки происходит в нескольких фазах, когда выполняются различные цели сборки: (1) контекст, (2) зависимость, и (3) по умолчанию (все). Информация о приложении собирается во время фазы сборки контекста.

Чтобы выполнить функцию приложения, используется функция exec_builtin(), определенная в файле apps/include/builtin/builtin.h.

Команды встроенных приложений NuttShell (NSH)

Одним из способов использования встроенных приложений является возможность запуска пользовательских приложений через командную строку NuttShell (NSH). Когда следующий параметр включен в конфигурационном файле NuttX, NSH обеспечивает плавное выполнение приложений:

CONFIG_NSH_BUILTIN_APPS=y

Приложения, зарегистрированные в файле apps/builtin/builtin_list.h, станут доступны через командную строку NSH. Если вы введите help в командной строке NSH, вы увидите список зарегистрированных команд.

Синхронные встроенные командыПо умолчанию, команды, запущенные из командной строки NSH, выполняются асинхронно. Если вы хотите заставить NSH выполнять команды и ждать их завершения, вы можете включить эту функцию, добавив следующее в конфигурационный файл NuttX:```conf

CONFIG_SCHED_WAITPID=y


Этот параметр конфигурации включает поддержку интерфейса RTOS `waitpid()`. Когда этот интерфейс включен, NSH использует его для ожидания завершения команд, спящий до тех пор, пока команда не завершит выполнение.

Конечно, даже при включении `CONFIG_SCHED_WAITPID=y`, конкретные команды все еще могут быть заставлена выполняться асинхронно, добавив символ амперсанд (`&`) после команды NSH.

## Файл конфигурации приложения

Конфигурация NuttX использует инструменты `kconfig-frontends` и конфигурационный файл NuttX (`.config`). Например, конфигурационный файл NuttX `.config` может содержать:

```conf
CONFIG_EXAMPLES_HELLO=y

Это выбирает apps/examples/hello следующим образом:

  • Верхнеуровневый make включает apps/examples/Make.defs
  • apps/examples/Make.defs устанавливает CONFIGURED_APPS += $(APPDIR)/examples/hello следующим образом:
  ifneq ($(CONFIG_EXAMPLES_HELLO),)
  CONFIGURED_APPS += $(APPDIR)/examples/hello
  endif

Пример встроенного приложения

Шаблон примера приложения можно найти в подкаталоге examples/hello. Этот пример показывает, как можно добавить встроенное приложение в проект. Необходимо:

  1. Создать подкаталог с именем: progname

  2. В этом каталоге должны быть: - Файл Make.defs, который будет включен в apps/Makefile

    • Файл Kconfig, который будет использоваться конфигурационным инструментом (см. файл kconfig-language.txt в репозитории инструментов NuttX). Этот файл Kconfig должен быть включен в apps/Kconfig
    • Файл Makefile, и
    • Исходный код приложения. Исходный код приложения должен предоставлять точку входа: ```c main()
  3. Установите требования в файле: Makefile, особенно строки:

    PROGNAME   = progname
    PRIORITY   = SCHED_PRIORITY_DEFAULT
    STACKSIZE  = 768
    ASRCS      = список ассемблерных исходных файлов, например a.asm b.asm ...
    CSRCS      = список исходных файлов на C, например foo1.c foo2.c ...
  4. Файл Make.defs должен содержать строку вида:

    ifneq ($(CONFIG_PROGNAME),)
    CONFIGURED_APPS += progname
    endif

Сборка NuttX с компонентами, специфичными для платы, вне дерева исходного кода

Вопрос: Есть ли у кого-нибудь элегантный способ сборки NuttX с компонентами, специфичными для платы, вне дерева исходного кода?

Ответ: Вот три варианта:

  1. Существует цель сборки make export. Она собирает NuttX, затем упаковывает все заголовочные файлы, библиотеки, объекты запуска и другие компоненты сборки в файл .zip. Вы можете переместить этот файл .zip в любую среду сборки, какую вам угодно. Вы даже можете собирать NuttX под окном командной строки DOS CMD.

    Эта цель сборки документирована в файле nuttx/README.txt на верхнем уровне.

  2. Вы можете заменить всю директорию apps/. Если в директории apps/ нет ничего, что вам нужно, вы можете определить CONFIG_APPS_DIR в вашем файле .config, чтобы он указывал на другую, пользовательскую директорию приложений.

    Вы можете скопировать любые части, которые вам нужны, из старой директории apps/ в вашу пользовательскую директорию apps по мере необходимости. Это документировано в файле NuttX/boards/README.txt и в руководстве по портированию NuttX, доступном по адресу https://cwiki.apache.org/confluence/display/NUTTX/Porting+Guide.

  3. Если вам нравится случайная коллекция файлов в директории apps/, но вы хотите расширить существующие компоненты собственными внешними поддиректориями, то есть простой способ сделать это: просто создайте символическую ссылку в директории apps/, которая будет указывать на вашу поддиректорию приложений.

    Чтобы быть включенной в процесс сборки, директория, на которую вы создаете ссылку в директории apps/, должна содержать (1) файл Makefile, поддерживающий цели clean и distclean (см. другие файлы Makefile для примеров), и (2) небольшой файл Make.defs, который просто добавляет пользовательские директории сборки в переменную CONFIGURED_APPS вроде:

    CONFIGURED_APPS += my_directory1 my_directory2

    Файл apps/Makefile автоматически проверяет наличие подкаталогов, содержащих файлы Makefile и Make.defs. Файл Makefile используется только для поддержки операций очистки. Файл Make.defs предоставляет набор каталогов для сборки; эти каталоги также должны содержать файл Makefile. Этот файл Makefile должен быть способен собирать исходные файлы и добавлять объекты в архив apps/libapps.a. (см. другие файлы Makefile для примеров). Он должен поддерживать цели all, install, context и depend. Файл apps/Makefile не зависит от жестко закодированных списков каталогов. Вместо этого он выполняет поиск по маске, чтобы найти все подходящие каталоги. Это означает, что для установки нового приложения вам просто нужно скопировать каталог (или создать ссылку на него) в каталог apps/. Если новый каталог включает файлы Makefile и Make.defs, он автоматически будет включен в сборку.

    Если добавляемый вами каталог также включает файл Kconfig, он автоматически будет включен в систему конфигурации NuttX. Файл apps/Makefile использует инструмент в apps/tools/mkkconfig.sh, который динамически создает файл apps/Kconfig до конфигурации.

    Например, вы можете создать скрипт под названием install.sh, который устанавливает пользовательское приложение, конфигурацию и каталог, специфичный для платы:

    a) Скопировать каталог MyBoard в boards/MyBoard. b) Добавить символическую ссылку на MyApplication в apps/external. c) Настроить NuttX, обычно следуя команде:

    tools/configure.sh MyBoard:MyConfiguration

    Использование имени apps/external рекомендуется, так как это имя включено в файл .gitignore, что избавит вас от некоторых проблем при работе с GIT.

Ограничения экспортаЭтот дистрибутив включает криптографическое программное обеспечение. Страна, в которой вы находитесь в данный момент, может иметь ограничения на импорт, обладание, использование и/или пересылку в другую страну криптографического программного обеспечения. ПЕРЕД использованием любого криптографического программного обеспечения, пожалуйста, проверьте законы, регламенты и политики вашей страны, касающиеся импорта, обладания или использования, и пересылки криптографического программного обеспечения, чтобы убедиться, что это разрешено. См. http://www.wassenaar.org/ для получения дополнительной информации. Департамент торговли США, Управление по вопросам промышленности и безопасности (BIS), отнесло данное программное обеспечение к категории Экспортного товара управления (ECCN) 5D002.C.1, что включает программное обеспечение для обеспечения информационной безопасности, использующее или выполняющее криптографические функции с асимметричными алгоритмами. Форма и способ распространения этого программного обеспечения Apache Software Foundation делают его пригодным для экспорта под исключением Лицензии на исключение ENC (License Exception ENC) для неограниченного технологического программного обеспечения (TSU) (см. раздел 740.13 Управления по экспортной администрации BIS) как для объектного кода, так и для исходного кода.Далее приведены дополнительные сведения о включённом криптографическом программном обеспечении:

https://tls.mbed.org/supported-ssl-ciphersuites. https://github.com/intel/tinycrypt

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Клонируйте приложения Nuttx с https://github.com/apache/nuttx-apps Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/nuttx-rtos-nuttx-apps.git
git@api.gitlife.ru:oschina-mirror/nuttx-rtos-nuttx-apps.git
oschina-mirror
nuttx-rtos-nuttx-apps
nuttx-rtos-nuttx-apps
master