建置及部署合作夥伴應用程式
本節說明如何建置、封裝及部署 Azure 球體合作夥伴應用程式。
這些指示使用 IntercoreComms 範例應用程式做為範例。
先決條件
- 將 Azure 球體裝置連接到電腦
- 安裝 Azure 球體
- 如果您使用的是 Visual Studio Code 或 CLI,請安裝 GNU Arm Embedded 工具鏈。
- 如果您尚未這樣做,請設定硬體以顯示來自專用UART的輸出
啟用開發與偵錯
您必須先啟用開發和偵錯,才能在 Azure 球體裝置上建立範例應用程式或開發新的應用程式。 根據預設,Azure 球體裝置會被「鎖定」;也就是說,他們不允許從計算機載入開發中的應用程式,也不允許偵錯應用程式。 準備裝置進行偵錯會移除此限制,並載入偵錯和解除鎖定裝置功能 所需的軟體。
若要偵錯即時核心,請使用 az 球體裝置啟用開發 命令。 此命令會將裝置設定為接受來自計算機的應用程式進行偵錯,並將裝置指派給「開發裝置」群組,而此群組不允許雲端應用程式更新。 在應用程式開發和偵錯期間,您應將裝置留在此群組中,讓雲端應用程式更新不會覆寫開發中的應用程式。
在 Windows 上,您必須新增 --enable-rt-core-debugging
參數,將偵錯伺服器和每種核心類型的必要驅動程式載入裝置上。
如果您尚未登入 Azure 球體,請登入:
az login
使用 PowerShell 或具有系統管理員許可權的 Windows 命令提示字元開啟命令行介面。 參數
--enable-rt-core-debugging
需要系統管理員許可權,因為它會安裝偵錯程式的USB驅動程式。輸入下列命令:
az sphere device enable-development --enable-rt-core-debugging --catalog <CatalogName> --resource-group <ResourceGroupName>
由於不再需要系統管理員許可權,所以在命令完成後關閉視窗。 最佳作法是一律使用能完成工作的最低許可權。
如果 az 球體裝置啟用開發 命令失敗,請參閱 Azure 球體問題的疑難解答 以取得協助。
啟用開發與偵錯
您必須先啟用開發和偵錯,才能在 Azure 球體裝置上建立範例應用程式或開發新的應用程式。 根據預設,Azure 球體裝置會被「鎖定」;也就是說,他們不允許從計算機載入開發中的應用程式,也不允許偵錯應用程式。 準備裝置進行偵錯會移除此限制,並載入偵錯和解除鎖定裝置功能所需的軟體,如 裝置功能和通訊中所述。
若要偵錯即時核心,請使用 az 球體裝置啟用開發 命令。 此命令會將裝置設定為接受來自計算機的應用程式進行偵錯,並將裝置指派給「開發裝置」群組,而此群組不允許雲端應用程式更新。 在應用程式開發和偵錯期間,您應將裝置留在此群組中,讓雲端應用程式更新不會覆寫開發中的應用程式。
在 Windows 上,您必須新增 --enable-rt-core-debugging
參數,將偵錯伺服器和每種核心類型的必要驅動程式載入裝置上。
如果您尚未登入 Azure,請執行下列動作:
az login
使用 PowerShell、Windows 命令提示字元或具有系統管理員許可權的 Linux 命令殼層開啟命令行介面。 參數
--enable-rt-core-debugging
需要系統管理員許可權,因為它會安裝偵錯程式的USB驅動程式。輸入下列命令:
az sphere device enable-development --enable-rt-core-debugging
由於不再需要系統管理員許可權,所以在命令完成後關閉視窗。 最佳作法是一律使用能完成工作的最低許可權。
如果 az 球體裝置啟用開發 命令失敗,並出現下列錯誤訊息,請參閱 疑難解答 Azure 球體問題 以取得協助。
error: The device did not accept the device capability configuration. Please check the Azure Sphere OS on your device is up-to-date using 'az sphere device show-deployment-status'.
使用 Visual Studio 建置合作夥伴應用程式
確定您的裝置已透過 USB 連接到電腦。 在 [設定啟動專案] 功能表中,選取 [Azure 球體應用程式 (所有核心) 其中 Azure 球體應用程式是頂層專案的名稱,或按 F5。
如果系統提示您建立專案,請選取 [ 是]。 Visual Studio 會編譯合作夥伴應用程式、建立影像套件、將它們 側載 到白板,然後以偵錯模式啟動它們。 側載 表示應用程式是透過有線連線直接從電腦傳遞,而不是透過雲端傳遞。
請注意[ 檢視>輸出>顯示來自: 組建 輸出] 的輸出路徑,此結果會指出輸出映像套件在計算機上的位置。 當您準備好建立部署時,您必須知道影像套件的路徑。
根據預設,[ 輸出] 視窗會顯示 [裝置輸出] 的輸出。 若要查看來自調試程式的郵件,請從 [顯示輸出來源:] 下拉功能表中選取 [偵錯]。 您也可以透過 [ 偵錯>Windows ] 功能表,對程序進行拆解、註冊或記憶體檢查。
使用 Visual Studio Code 建立合作夥伴應用程式
開啟包含合作夥伴應用程式的資料夾。 Visual Studio Code 偵測到工作區檔案,並詢問您是否要開啟工作區。 選取 [開啟工作區],同時開啟即時應用程式和高階應用程式。
以滑鼠右鍵按兩個 CMakeLists.txt 檔案的其中一個,然後選 取 [建立所有專案]。
按兩下 Visual Studio Code活動列中的 [執行] 圖示。
在出現在畫面左側視窗頂端的下拉功能表上,選 取 [啟動 Azure 球體應用程式] (gdb) (工作區) 。
按 F5 以建立及偵錯專案。 如果專案先前尚未建立,或是檔案已變更且需要重建,Visual Studio Code 會在偵錯開始之前建立專案。
請等候數秒 Visual Studio Code 來建立應用程式、建立影像套件、將它們部署到白板,然後以偵錯模式啟動它們。 一路走來,您會在 [ 輸出 ] 窗格中看到狀態更新。
首先,CMake 會判斷是否需要建立應用程式。 若是如此,焦點會移至輸出窗口,顯示來自 CMake/Build 的輸出。
接下來,輸出窗格會在將影像套件部署到裝置時顯示輸出。 最後,偵錯主機會接收焦點並顯示 gdb 輸出。
編譯並建立應用程式
若要使用 CLI 建置應用程式,您必須在電腦上找到正確的編譯工具、標題和文檔庫,統稱為 sysroot。 Azure 球體 SDK 會隨附多個 sysroots,讓應用程式可以按照 應用程式運行時間版本、sysroots 和 Beta API 中所述,以不同的 API 集為目標。 Sysroots 會安裝在 Sysroots 下的 Azure 球體 SDK 安裝資料夾中。
使用 CLI 建置時,請先建置並部署支援即時的應用程式,然後建置及部署高階應用程式。
建置及部署支援即時的應用程式
瀏覽至包含您支援即時應用程式的資料夾。
開啟app_manifest.json檔案,並確認高層級應用程式的元件標識符顯示在AllowedApplicationConnections功能中。
使用 PowerShell、Windows 命令提示字元或 Linux 命令殼層開啟命令行介面。 流覽至您的專案組建目錄。
在專案組建目錄的命令提示字元中,使用下列參數執行 CMake:
cmake --preset <preset-name> <source-path>
--preset <preset-name>
組建設定預設名稱,如 CMakePresets.json 中所定義。
--build <cmake-path>
包含 CMake 快取的二進位目錄。 例如,如果您在 Azure 球體樣本上執行 CMake,則組建命令會是
cmake --build out/ARM-Debug
。<source-path>
包含範例應用程式之來源檔案的目錄路徑。 在範例中,Azure 球體樣本存放庫已下載到名為 AzSphere 的目錄。
CMake 參數會以空格分隔。 Windows 命令行的線條延續字元 (^、 \ for Linux 命令行或 ' for PowerShell) 可用於可讀性,但並非必要。
下列範例顯示 IntercoreComms RTApp 的 CMake 命令:
在專案組建目錄的命令提示字元中,執行 [忍者] 以建立應用程式並建立圖像套件檔案。
ninja -C out/ARM-Debug
忍者會將產生的應用程式和 .imagepackage 檔案放在指定的目錄中。
您也可以使用下列命令透過 CMake 叫用忍者:
cmake --build out/<binary-dir>
設定
<binary-dir>
為包含 CMake 快取的二進位目錄。 例如,如果您在 Azure 球體樣本上執行 CMake,則組建命令會是cmake --build out/ARM-Debug
。進行疑難解答時,尤其是對 CMake 命令進行任何變更之後,請刪除整個組建,然後再試一次。
刪除已部署到裝置的任何應用程式:
az sphere device sideload delete
在專案組建目錄的命令提示字元中,載入忍者建立的影像套件:
az sphere device sideload deploy --image-package <path-to-imagepackage>
應用程式載入之後很快就會開始執行。
取得影像的元件識別碼:
az sphere image-package show --image-package <path-to-imagepackage>
命令會傳回圖像套件的所有元數據。 應用程式的元件識別碼會出現在應用程式圖像類型的 [身分識別] 區段中。 例如:
... "Identity": { "ComponentId": "<component-id>", "ImageId": "<image-id>", "ImageType": "Application" }, ...
建置和部署高階應用程式
瀏覽至包含您高階應用程式的資料夾。
開啟app_manifest.json檔案,並確認 RTApp 的元件標識碼顯示在 AllowedApplicationConnections 功能中。
使用 PowerShell、Windows 命令提示字元或 Linux 命令殼層開啟命令行介面。 流覽至您的專案組建目錄。
在專案組建目錄的命令提示字元中,使用下列參數執行 CMake:
cmake --preset <preset-name> <source-path>
--preset <preset-name>
組建設定預設名稱,如 CMakePresets.json 中所定義。
--build <cmake-path>
包含 CMake 快取的二進位目錄。 例如,如果您在 Azure 球體樣本上執行 CMake,則組建命令會是
cmake --build out/ARM-Debug
。<source-path>
包含範例應用程式之來源檔案的目錄路徑。 在範例中,Azure 球體樣本存放庫已下載到名為 AzSphere 的目錄。
CMake 參數會以空格分隔。 Windows 命令行的線條延續字元 (^、 \ for Linux 命令行或 ' for PowerShell) 可用於可讀性,但並非必要。
下列範例顯示 IntercoreComms 高階應用程式的 CMake 命令。
在專案組建目錄的命令提示字元中,執行 [忍者] 以建立應用程式並建立圖像套件檔案。
ninja -C out/ARM-Debug
忍者會將產生的應用程式和 .imagepackage 檔案放在指定的目錄中。
您也可以使用下列命令透過 CMake 叫用忍者:
cmake --build out/<binary-dir>
設定
<binary-dir>
為包含 CMake 快取的二進位目錄。 例如,如果您在 Azure 球體樣本上執行 CMake,則組建命令會是cmake --build out/ARM-Debug
。進行疑難解答時,尤其是對 CMake 命令進行任何變更之後,請刪除整個組建,然後再試一次。
在專案組建目錄的命令提示字元中,載入忍者建立的影像套件:
az sphere device sideload deploy --image-package <package-name>
應用程式載入之後很快就會開始執行。
取得影像的元件識別碼:
az sphere image-package show --image-package <path-to-imagepackage>
命令會傳回圖像套件的所有元數據。 應用程式的元件識別碼會出現在應用程式圖像類型的 [身分識別] 區段中。 例如:
"ComponentId": "<component-ID>", ... "Identity": { "ComponentId": "<component-id>", "ImageId": "<image-id>", "ImageType": "Application" }, ...