本文中您将了解:

案例:调用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 

一起学Azure Sphere(3)- 本地开发调试高级程序,上传映像后云端部署到设备_第1张图片

2. 修改示例代码中的配置文件:

  • 打开 .vscode/settings.json。

  • 更新 AZURE_SPHERE_TARGET_HARDWARE_DEFINITION_DIRECTORY CMake 变量以指向包含设备的目标硬件定义的目录。 Microsoft 在 Azure Sphere 示例存储库的硬件目录中提供了目标硬件定义。 例如: /Hardware/mt3620_rdb

  • 确保 AZURE_SPHERE_TARGET_HARDWARE_DEFINITION CMake 变量指向目标硬件定义目录中的 JSON 文件。 对于示例应用程序,请使用 sample_hardware.json

一起学Azure Sphere(3)- 本地开发调试高级程序,上传映像后云端部署到设备_第2张图片

 

3.按 F5 调试项目。 如果以前未生成项目,或者如果文件已更改且需要重新生成,则 VS Code 将在调试开始之前生成项目。

4.等待几分钟时间,以便 Visual Studio Code 编译应用程序、创建映像包、将其部署到板上并在调试模式下启动它。

5.短暂延迟后,应看到 LED 闪烁。

一起学Azure Sphere(3)- 本地开发调试高级程序,上传映像后云端部署到设备_第3张图片

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个设备组:

一起学Azure Sphere(3)- 本地开发调试高级程序,上传映像后云端部署到设备_第4张图片

 

2.配置设备为“接受基于云的应用程序更新”

之前的步骤中,设备处于“开发状态”,开发状态的设备无法从云端接收更新,所以,此时需要先将设备配置为“接受基于云的应用程序更新”。

使用 azsphere device enable-cloud-test 准备设备 :

azsphere device enable-cloud-test --productname "MyProduct"

 

此命令:

  • 禁用 SDK 将应用程序加载到设备上的功能,以便只能加载基于云的应用程序

  • 根据需要将设备分配给产品。

  • 将设备分配到启用基于云的应用程序更新的设备组。 如果未指定设备组,则会将设备分配给其产品的默认“现场测试(Field Test)”设备组。

Azure Sphere 安全服务使用设备组和产品来确定是否在设备上更新应用程序。

一起学Azure Sphere(3)- 本地开发调试高级程序,上传映像后云端部署到设备_第5张图片

 

此时可以通过如下命令查询Field Test group 的信息:

azsphere device-group show --devicegroupid “Field Group ID”
其中Field Group ID 在创建Product后显示过

一起学Azure Sphere(3)- 本地开发调试高级程序,上传映像后云端部署到设备_第6张图片

 

3.上传映像并创建部署

此步骤可以通过一个命令执行,也可以分部执行,

本文中,分布执行,1. 上传;2. 创建部署

1.上传:

azsphere image add --filepath Path\HelloWorld_HighLevelApp.imagepackage --temporary

本例中Path见下图所示:

参数 说明
-t, --temporary 将映像包标记为临时。 此参数适合在生产过程中使用。

 

一起学Azure Sphere(3)- 本地开发调试高级程序,上传映像后云端部署到设备_第7张图片

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 不带引号

一起学Azure Sphere(3)- 本地开发调试高级程序,上传映像后云端部署到设备_第8张图片

 

  4. 触发部署

若要立即触发下载,请在 Azure Sphere 设备上按“重置”按钮 。 应用程序应在几分钟内下载并启动,然后应看到 LED 开始闪烁。

可通过如下命令查看部署结果:

azsphere device show-deployment-status

一起学Azure Sphere(3)- 本地开发调试高级程序,上传映像后云端部署到设备_第9张图片

 

 

5. 重新配置设备为“启用调试”;

 

此时,如果在VS Code中使用F5开启调试,则会报如下错误,因为此时“Filed Test”组未开启调试,即不能从本地Windows 电脑启动调试,默认情况下,此组中的设备接收零售 OS 源和所有应用程序更新。

一起学Azure Sphere(3)- 本地开发调试高级程序,上传映像后云端部署到设备_第10张图片

如果要启动调试,则需要切换回“开发设备组”,执行如下命令:

azsphere device enable-development

一起学Azure Sphere(3)- 本地开发调试高级程序,上传映像后云端部署到设备_第11张图片