生成高级应用程序
重要
这是 Azure Sphere(旧版)文档。 Azure Sphere(旧版)将于 2027 年 9 月 27 日停用,用户此时必须迁移到 Azure Sphere(集成)。 使用位于 TOC 上方的版本选择器查看 Azure Sphere(集成)文档。
本部分介绍如何生成、打包和部署 Azure Sphere 高级应用程序。
这些说明使用 HelloWorld_HighLevelApp 示例应用程序作为示例。
先决条件
- 将 Azure Sphere 设备连接到计算机
- 安装 Azure Sphere
准备设备以进行开发和调试
在 Azure Sphere 设备上生成示例应用程序或为其开发新应用程序前,必须启用开发和旁加载。 默认情况下,Azure Sphere 设备处于“锁定”状态;也就是说,这些设备不允许从计算机加载开发中的应用程序,并且不允许调试应用程序。 准备设备以进行旁加载可消除此限制。
azsphere device enable-development 命令将设备配置为接受应用程序进行调试,将调试服务器加载到设备上,并将设备分配给不允许云应用程序更新的设备组。 在应用程序开发和调试期间,应将设备保留在该组中,以便云应用程序更新不会覆盖开发中的应用程序。
确保 Azure Sphere 设备已连接到计算机,并且计算机已连接到 Internet。
使用 PowerShell、Windows 命令提示符或 Linux 命令行界面打开命令行界面。
输入以下命令:
azsphere device enable-development
应该会看到与下面类似的输出:
Getting device capability configuration for application development. Downloading device capability configuration for device ID '<device ID>'. Successfully downloaded device capability configuration. Successfully wrote device capability configuration file 'C:\Users\user\AppData\Local\Temp\tmpD732.tmp'. Setting device group ID 'a6df7013-c7c2-4764-8424-00cbacb431e5' for device with ID '<device ID>'. Successfully disabled over-the-air updates. Enabling application development capability on attached device. Applying device capability configuration to device. Successfully applied device capability configuration to device. The device is rebooting. Installing debugging server to device. Deploying 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' to the attached device. Image package 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' has been deployed to the attached device. Application development capability enabled. Successfully set up device '<device ID>' for application development, and disabled over-the-air updates. Command completed successfully in 00:00:38.3299276.
如果 azsphere device enable-development 命令失败,请参阅排查 Azure Sphere 问题以获取帮助。
使用调试在 Visual Studio 中生成和部署应用程序
确保通过 USB 将设备连接到电脑。 在“设置启动项”菜单中,选择 Azure Sphere 应用(HLCore),其中 Azure Sphere 应用是当前高级应用程序的名称或按 F5。
如果系统提示你生成项目,请选择“是”。 Visual Studio 编译应用程序,创建映像包,并将其旁加载到开发板上,然后以调试模式启动该应用程序。 “旁加载”意味着应用程序通过有线连接直接从电脑传送,而不是通过云传送。
请注意“视图>输出>显示输出”输出中映像包的图像 ID:生成输出。 稍后将在教程:创建云部署中使用映像 ID。
默认情况下,“输出”窗口显示设备输出的输出。 若要查看调试程序中的消息,请从“显示输出来源:”下拉菜单中选择“调试”。 也可通过“调试”>“Windows”菜单检查程序反汇编、寄存器或内存。
在不调试的情况下在 Visual Studio 中生成和部署应用程序
确保通过 USB 将设备连接到电脑。 在 “调试 ”菜单中,选择“ 开始”而不调试 或按 Ctrl+F5。
如果系统提示你生成项目,请选择“是”。 Visual Studio 编译应用程序,创建映像包, 将其旁加载 到开发板上,然后启动它。 “旁加载”意味着应用程序通过有线连接直接从电脑传送,而不是通过云传送。
默认情况下,“输出”窗口显示设备输出的输出。
使用调试在 Visual Studio Code 中生成和部署应用程序
按 F5 生成和调试项目。 如果项目以前尚未生成,或者文件已更改并重新生成,Visual Studio Code 将在调试开始之前生成项目。
等待几秒钟,Visual Studio Code 生成应用程序、创建映像包、将其部署到开发板,并在调试模式下启动它。 在此过程中, 你将在“输出 ”窗格中看到状态更新。
首先,CMake 确定是否需要生成应用程序。 如果是这样,焦点将移动到输出窗口,该窗口显示 CMake/Build 的输出。
接下来,“ 输出 ”窗格显示将映像包部署到设备时的结果。 最后,调试控制台接收焦点并显示调试器输出。
在不调试的情况下在 Visual Studio Code 中生成和部署应用程序
确保通过 USB 将设备连接到电脑。 在 “运行 ”菜单中,选择“ 开始”而不调试 ,或按 Ctrl+F5 生成并运行项目。 如果项目以前尚未生成,或者文件已更改并重新生成,Visual Studio Code 将生成项目。
等待几秒钟,Visual Studio Code 生成应用程序,创建映像包,将其部署到开发板,然后启动它。 在此过程中, 你将在“输出 ”窗格中看到状态更新。
首先,CMake 确定是否需要生成应用程序。 如果是这样,焦点将移动到输出窗口,该窗口显示 CMake/Build 的输出。
接下来,输出窗口显示 azsphere 将映像包部署到设备时的输出。 应用在部署到设备后自动启动。
构建应用程序
若要生成应用程序,需要在计算机上查找正确的编译工具、标头和库 — 统称为 sysroot。 Azure Sphere SDK 附带了多个 sysroot,因此应用程序可以面向不同的 API 集,如应用程序运行时版本、sysroot 和 Beta API 中所述。 sysroot 安装在 Sysroots 下的 Azure Sphere SDK 安装文件夹中。
创建或导航到将包含生成过程中生成的文件的目录。
如果应用程序依赖于其他应用程序,请在这些应用程序的 app_manifest md 文件中将应用程序标记为合作伙伴。
添加或更新 CMakeLists.txt 文件,以便应用程序根据需要调用 Azure Sphere CMake 函数。
在命令提示符下,从项目生成目录中,使用以下参数运行 CMake:
cmake --preset <preset-name> <source-path>
--preset <preset-name>
CMakePresets.json中定义的生成配置预设名称。
--build <cmake-path>
包含 CMake 缓存的二进制目录。 例如,如果在 Azure Sphere 示例中运行 CMake,则生成命令将是
cmake --build out/ARM-Debug
。<source-path>
包含示例应用程序的源文件的目录的路径。 在此示例中,Azure Sphere 示例存储库已下载到名为 AzSphere 的目录。
这些 CMake 参数以空格分隔。 行延续字符(^ for Windows 命令行、\for Linux 命令行或“for PowerShell”)可用于可读性,但不是必需的。
以下示例显示了 Hello World 高级应用的 CMake 命令。
运行 Ninja 以生成应用程序并创建映像包文件:
ninja -C out/ARM-Debug
Ninja 将生成的应用程序和 .imagepackage 文件放置在指定的目录中。
还可以使用以下命令通过 CMake 调用 Ninja:
cmake --build out/<binary-dir>
设置为
<binary-dir>
包含 CMake 缓存的二进制目录。 例如,如果在 Azure Sphere 示例中运行 CMake,则生成命令将是cmake --build out/ARM-Debug
。
部署应用
请确保设备具有 appDevelopment 功能,以便可以旁加载应用程序并确保存在调试服务器。 如有必要,请使用 azsphere device enable-development
命令。
如果设备已在运行一个或多个应用程序,请将其删除。
azsphere device sideload delete
请注意,此命令将删除设备上的所有应用程序。 如果已部署作为高级应用的合作伙伴的 RTApp,请使用
--component-id
参数指定要删除的应用程序。 可以在 应用程序的app_manifest.json文件中找到应用程序的组件 ID 。通过运行 azsphere device sideload deploy 命令并指定映像包,将映像包加载到设备上。 例如:
azsphere device sideload deploy --image-package C:\Users\LocalSamples\HelloWorld\HelloWorld_HighLevelApp\out\ARM-Debug\HelloWorld_HighLevelApp.imagepackage
应用程序应开始运行。
稍后可以使用 azsphere device app stop --component-id <component-ID>
和 azsphere device app start --component-id <component ID>
命令来停止和重新启动应用程序。