本文中您将了解:
案例:调用GPIO控制LED频闪
本地开发调试->发布到云端-> 从云端部署到设备
一、通过VS Code 开发和调试 示例Azure Sphere 高级应用程序
本程序调用GPIO控制LED灯频闪
二、从云端进行部署
创建产品;
配置设备为“接受基于云的应用程序更新”;
创建部署;
触发部署;
重新配置设备为“启用调试”;
视频讲解:
您可以在B站观看视频讲解:https://www.bilibili.com/video/av98276348/
或在本站观看:
图文讲解:
一、通过VS Code 开发和调试 示例Azure Sphere 高级应用程序
参照微软官方文档:
https://docs.microsoft.com/zh-cn/azure-sphere/install/qs-blink-vscode
使用的示例代码:
https://github.com/Azure/azure-sphere-samples
1. 启动 Visual Studio Code 并从 Azure Sphere 示例存储库中打开 HelloWorld_HighLevelApp 文件夹。 请勿打开更高级别的文件夹。 VS Code 一次只生成一个解决方案。 如果 VS Code 显示一个对话框,指示没有可用的 CMake 工具包,请选择 Do not use a kit
。
2. 修改示例代码中的配置文件:
- 打开 .vscode/settings.json。
- 更新 AZURE_SPHERE_TARGET_HARDWARE_DEFINITION_DIRECTORY CMake 变量以指向包含设备的目标硬件定义的目录。 Microsoft 在 Azure Sphere 示例存储库的硬件目录中提供了目标硬件定义。 例如:
<path-to-cloned-samples>/Hardware/mt3620_rdb
- 确保 AZURE_SPHERE_TARGET_HARDWARE_DEFINITION CMake 变量指向目标硬件定义目录中的 JSON 文件。 对于示例应用程序,请使用
sample_hardware.json
。
3.按 F5 调试项目。 如果以前未生成项目,或者如果文件已更改且需要重新生成,则 VS Code 将在调试开始之前生成项目。
4.等待几分钟时间,以便 Visual Studio Code 编译应用程序、创建映像包、将其部署到板上并在调试模式下启动它。
5.短暂延迟后,应看到 LED 闪烁。
6.在 main.c 中的某个位置设置断点并逐步执行应用程序,以便可以浏览 Azure Sphere 的 VSCode 调试功能。
二、从云端进行部署
1.创建产品
产品标识合并到已连接设备中以执行特定功能的 Azure Sphere MCU 。 作为制造商,你可以为每种型号的连接设备(例如洗碗机或咖啡机)创建产品。 每个产品都有一个在租户中唯一且无法更改的 GUID。
每个连接的设备都有单个产品,但单个产品可以与多台设备关联。 每个产品都有一个在租户中必须唯一的名称,以及描述。 产品名称和描述以用户可读的方式来区分产品与其他产品。 可以根据需要修改产品的名称和描述。
azsphere product create --name MyProduct --description "My First Product"
此命令会自动为此新产品创建默认设备组:
- 开发(Development):开发组旨在供在开发过程中旁加载应用程序的开发人员使用。 默认情况下,此组中的设备接收零售版 OS 源;应用程序更新处于禁用状态。 若要针对不同的 OS 版本进行测试,可以更改组的默认 OS。
- 现场测试(Field Test):现场测试组旨在供在实验室或现场试验中测试设备的开发人员使用。 默认情况下,此组中的设备接收零售 OS 源和所有应用程序更新。
- 生产(Production):生产组适用于生产设备。 默认情况下,此组中的设备接收零售 OS 源和所有应用程序更新。 此组适用于特定产品的生产设备。
- 现场测试 OS 评估(Field Test OS Evaluation):现场测试 OS 评估组旨在供在实验室或现场试验中验证新版 Azure Sphere OS 与设备上的应用程序是否兼容的开发人员使用。 默认情况下,此组中的设备接收零售评估 OS 源和所有应用程序更新。
- 生产 OS 评估(Production OS Evaluation):生产 OS 评估组旨在用于验证新版 Azure Sphere OS 与生产应用程序是否兼容。 默认情况下,此组中的设备接收零售评估 OS 源和所有应用程序更新。
其中,开发设备组会禁用基于云的更新。 其他组支持基于云的更新。
产品名称在租户中必须唯一,并且不区分大小写。 如果名称包含空格,则在命令中将其用双引号括起来。
如下图,生成了5个设备组:
2.配置设备为“接受基于云的应用程序更新”
之前的步骤中,设备处于“开发状态”,开发状态的设备无法从云端接收更新,所以,此时需要先将设备配置为“接受基于云的应用程序更新”。
使用 azsphere device enable-cloud-test 准备设备 :
azsphere device enable-cloud-test --productname "MyProduct"
此命令:
- 禁用 SDK 将应用程序加载到设备上的功能,以便只能加载基于云的应用程序
- 根据需要将设备分配给产品。
- 将设备分配到启用基于云的应用程序更新的设备组。 如果未指定设备组,则会将设备分配给其产品的默认“现场测试(Field Test)”设备组。
Azure Sphere 安全服务使用设备组和产品来确定是否在设备上更新应用程序。
此时可以通过如下命令查询Field Test group 的信息:
azsphere device-group show --devicegroupid “Field Group ID”
其中Field Group ID 在创建Product后显示过
3.上传映像并创建部署
此步骤可以通过一个命令执行,也可以分部执行,
本文中,分布执行,1. 上传;2. 创建部署
1.上传:
azsphere image add --filepath Path\HelloWorld_HighLevelApp.imagepackage --temporary
本例中Path见下图所示:
参数 | 说明 |
---|---|
-t, --temporary | 将映像包标记为临时。 此参数适合在生产过程中使用。 |
2.部署规定了某个产品的某个产品组部署某个映像。
azsphere device-group deployment create 命令将创建部署 。
有如下两种方案:本例中选择第二种方案,其中 imageid为 上一步 上传映像后返回值中的Image ID:
azsphere device-group deployment create --devicegroupname "Field Test" --productname MyProduct --filepath c:\temp\blink.imagepackage
azsphere device-group deployment create --devicegroupname "Field Test" --productname MyProduct --imageid "例1bd8f03f-297e-43ab-819b-d2b0d05d0230"
注意,映像ID 不带引号
4. 触发部署
若要立即触发下载,请在 Azure Sphere 设备上按“重置”按钮 。 应用程序应在几分钟内下载并启动,然后应看到 LED 开始闪烁。
可通过如下命令查看部署结果:
azsphere device show-deployment-status
5. 重新配置设备为“启用调试”;
此时,如果在VS Code中使用F5开启调试,则会报如下错误,因为此时“Filed Test”组未开启调试,即不能从本地Windows 电脑启动调试,默认情况下,此组中的设备接收零售 OS 源和所有应用程序更新。
如果要启动调试,则需要切换回“开发设备组”,执行如下命令:
azsphere device enable-development
本系列其他内容:
- (视频)一起学Azure Sphere(1)- 什么是 Azure Sphere
- (视频)一起学Azure Sphere(2)- 准备 Azure Sphere开发环境并声明设备
- (视频)一起学Azure Sphere(3)- 本地开发调试高级程序,上传映像后云端部署到设备
- (视频)一起学Azure Sphere(4)- 将Azure Sphere 通过DPS注册到Azure IoT Hub并发送遥测消息
- (视频)一起学Azure Sphere(5)- 将Azure Sphere 预配到Azure China IoT Hub
- (视频)一起学Azure Sphere(6)- 30分钟内将Azure Sphere 连接到Azure IoT Central并展示基本图表