本文中您將瞭解:
案例:調用GPIO控制LED頻閃
本地開發調試->發佈到雲端-> 從雲端部署到設備
一、通過VS Code 開發和調試 示例Azure Sphere 高級應用程序
本程序調用GPIO控制LED燈頻閃
二、從雲端進行部署
創建產品;
配置設備爲“接受基於雲的應用程序更新”;
創建部署;
觸發部署;
重新配置設備爲“啓用調試”;
視頻講解:
您可以在B站觀看視頻講解:https://www.bilibili.com/video/av98276348/
或在本站觀看:https://www.51azure.cloud/search/azure%20sphere
圖文講解:
一、通過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