Эта папка предоставляет различные приложения, найденные в подпапках. Эти
приложения не являются неотъемлемой частью 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). Когда следующий параметр включен в конфигурационном файле NuttX, NSH обеспечивает плавное выполнение приложений:
CONFIG_NSH_BUILTIN_APPS=y
Приложения, зарегистрированные в файле apps/builtin/builtin_list.h
, станут доступны через командную строку NSH. Если вы введите help
в командной строке NSH, вы увидите список зарегистрированных команд.
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
следующим образом:
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
. Этот пример показывает, как можно добавить встроенное приложение в проект. Необходимо:
Создать подкаталог с именем: progname
В этом каталоге должны быть: - Файл Make.defs
, который будет включен в apps/Makefile
Kconfig
, который будет использоваться конфигурационным инструментом (см. файл kconfig-language.txt
в репозитории инструментов NuttX). Этот файл Kconfig
должен быть включен в apps/Kconfig
Makefile
, и
Установите требования в файле: Makefile
, особенно строки:
PROGNAME = progname
PRIORITY = SCHED_PRIORITY_DEFAULT
STACKSIZE = 768
ASRCS = список ассемблерных исходных файлов, например a.asm b.asm ...
CSRCS = список исходных файлов на C, например foo1.c foo2.c ...
Файл Make.defs
должен содержать строку вида:
ifneq ($(CONFIG_PROGNAME),)
CONFIGURED_APPS += progname
endif
Вопрос: Есть ли у кого-нибудь элегантный способ сборки NuttX с компонентами, специфичными для платы, вне дерева исходного кода?
Ответ: Вот три варианта:
Существует цель сборки make export
. Она собирает NuttX, затем упаковывает все заголовочные файлы, библиотеки, объекты запуска и другие компоненты сборки в файл .zip
. Вы можете переместить этот файл .zip
в любую среду сборки, какую вам угодно. Вы даже можете собирать NuttX под окном командной строки DOS CMD
.
Эта цель сборки документирована в файле nuttx/README.txt
на верхнем уровне.
Вы можете заменить всю директорию apps/
. Если в директории apps/
нет ничего, что вам нужно, вы можете определить CONFIG_APPS_DIR
в вашем файле .config
, чтобы он указывал на другую, пользовательскую директорию приложений.
Вы можете скопировать любые части, которые вам нужны, из старой директории apps/
в вашу пользовательскую директорию apps
по мере необходимости. Это документировано в файле NuttX/boards/README.txt
и в руководстве по портированию NuttX, доступном по адресу https://cwiki.apache.org/confluence/display/NUTTX/Porting+Guide.
Если вам нравится случайная коллекция файлов в директории 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.
https://tls.mbed.org/supported-ssl-ciphersuites. https://github.com/intel/tinycrypt
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )