Apps is a collection of tools, shells, network utilities, libraries, interpreters and can be used with the openvela.
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 27 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 |
应用程序文件夹
目录内容
- 概述
- 目录位置
- 内置应用程序
- NuttShell (NSH) 内置命令
- 同步内置命令
- 应用程序配置文件
- 示例内置应用程序
- 在源代码树外部构建包含特定于板的组件的 NuttX
概述
此文件夹提供了位于子目录中的各种应用程序。这些应用程序并非 NuttX 的固有部分,但提供给您以帮助开发自己的应用程序。apps/ 目录是配置中的一个可分离部分,您可以选择使用或不用。
目录位置
NuttX 构建所使用的默认应用程序目录应命名为 apps/(或 apps-x.y.z/,其中 x.y.z 是 NuttX 的版本号)。此 apps/ 目录应该在目录树中与 NuttX 目录处于同一级别。如下所示:
.
|- nuttx
|
`- apps
如果以上所有条件均为真,那么 NuttX 将能够找到应用程序目录。如果您的应用程序目录名称不同或位于其他位置,那么您需要通知 NuttX 构建系统该位置。有几种方法可以实现:
- 您可以在 NuttX 配置文件中将
CONFIG_APPS_DIR定义为应用程序目录的完整路径。 - 您可以在命令行上提供应用程序目录的路径,如:
make APPDIR=<路径>或make CONFIG_APPS_DIR=<路径>。 - 当您使用
tools/configure.sh配置 NuttX 时,可以在配置命令行中提供应用程序目录的路径,如:./configure.sh -a <应用程序目录> <开发板名称>:<配置名称>。
内置应用程序
NuttX 还支持可以使用名称字符串启动的应用程序。在这种情况下,应用程序入口点及其需求被收集在两个文件中:
builtin/builtin_proto.h—— 入口点,原型函数builtin/builtin_list.h—— 应用程序特定信息及需求
构建过程分为几个阶段,随着不同构建目标的执行而进行:(1) 上下文,(2) 依赖,和 (3) 默认(全部)。应用程序信息在 make 上下文构建阶段收集。
要执行应用程序函数:
exec_builtin() 在 apps/include/builtin/builtin.h 中定义。
NuttShell (NSH) 内置命令
内置应用程序的一种用途是提供一种通过 NuttShell (NSH) 命令行调用自定义应用程序的方式。当以下选项在 NuttX 配置文件中启用时,NSH 将支持一种无缝调用应用程序的方法:
CONFIG_NSH_BUILTIN_APPS=y
在 apps/builtin/builtin_list.h 文件中注册的应用程序之后将可以通过 NSH 命令行进行访问。如果在 NSH 提示符下输入 help,您将看到已注册命令的列表。
同步内置命令
默认情况下,从 NSH 命令行启动的内置命令将异步运行。如果您希望强制 NSH 执行命令并等待命令执行完成,您可以通过在 NuttX 配置文件中添加以下内容来启用该功能:
CONFIG_SCHED_WAITPID=y
配置选项启用了对 waitpid() RTOS 接口的支持。启用该接口后,NSH 将使用它进行等待,直到内建命令执行完毕才会休眠。
当然,即使在定义了 CONFIG_SCHED_WAITPID=y 的情况下,也可以通过在 NSH 命令后添加与号 (&) 强制特定命令异步运行。
应用配置文件
NuttX 配置使用 kconfig-frontends 工具和 NuttX 配置文件(.config)。例如,NuttX .config 文件可能包含:
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 子目录下找到。这个示例展示了如何将一个内置应用程序添加到项目中。需要进行以下操作:
-
创建子目录:
progname -
在此目录中应包含:
- 一个
Make.defs文件,该文件将被apps/Makefile包含 - 一个
Kconfig文件,供配置工具使用(见 NuttX 工具库中的kconfig-language.txt文件)。这个Kconfig文件应该被apps/Kconfig文件包含 - 一个
Makefile - 应用程序源代码
- 一个
-
应用程序源代码应提供入口点:
main() -
在
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
问:有人提出一种整洁的方法,在源树外部构建针对特定板件的 NuttX 吗?
答:以下是三种方法:
-
有一个叫做
make export的构建目标。它会构建 NuttX,然后将所有头文件、库、启动对象和其他构建组件捆绑到一个.zip文件中。你可以将这个.zip文件移动到任何构建环境中。你甚至可以在 DOSCMD窗口中构建 NuttX。这个构建目标在顶层
nuttx/README.txt中有文档说明。 -
你可以替换整个
apps/目录。如果apps/目录中没有任何你需要的东西,你可以在.config文件中定义CONFIG_APPS_DIR以指向一个不同的自定义应用程序目录。你可以根据需要从旧的
apps/目录中复制任何内容到你的自定义应用程序目录。这在
NuttX/boards/README.txt和在线的 NuttX 移植指南 https://cwiki.apache.org/confluence/display/NUTTX/Porting+Guide 中有文档说明。 -
如果你喜欢
apps/目录中的东西,但只是想通过外部子目录扩展现有组件,也有一个简单的方法:你只需要在apps/目录中创建一个符号链接,将其重定向到你的应用程序子目录。为了将其纳入构建过程,你链接到
apps/目录下的目录应包含:(1)支持clean和distclean目标的Makefile(参见其他Makefile中的示例),以及(2)一个简单的Make.defs文件,它仅将自定义构建目录添加到变量CONFIGURED_APPS中,如下所示:CONFIGURED_APPS += my_directory1 my_directory2apps/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) 在apps/external处添加MyApplication的符号链接。 c) 通常通过以下方式配置 NuttX:tools/configure.sh MyBoard:MyConfiguration使用名称
apps/external是推荐的,因为这个名称包含在.gitignore文件中,可以节省在使用 GIT 时的麻烦。
出口限制
此发行版包含加密软件。你目前居住的国家可能对加密软件的进口、持有、使用和/或将加密软件再出口到其他国家有限制。在使用任何加密软件之前,请检查你所在国家关于加密软件进口、持有或使用以及再出口的法律、法规和政策,以了解这是否被允许。更多信息请见 http://www.wassenaar.org/。
美国商务部工业安全局(BIS)已将本软件分类为出口商品管制编号(ECCN)5D002.C.1,其中包括使用或执行非对称算法加密功能的信息安全软件。本 Apache 软件基金会的发行形式和方式使其有资格根据许可证例外 ENC 技术软件无限制(TSU)例外(见 BIS 出口管理条例第 740.13 节)进行出口,适用于对象代码和源代码。
以下提供了关于包含的加密软件的更多详细信息: https://tls.mbed.org/supported-ssl-ciphersuites。 https://github.com/intel/tinycrypt。