共用方式為


建置及部署合作夥伴應用程式

本節說明如何建置、封裝及部署 Azure 球體合作夥伴應用程式。

這些指示使用 IntercoreComms 範例應用程式做為範例。

先決條件

啟用開發與偵錯

您必須先啟用開發和偵錯,才能在 Azure 球體裝置上建立範例應用程式或開發新的應用程式。 根據預設,Azure 球體裝置會被「鎖定」;也就是說,他們不允許從計算機載入開發中的應用程式,也不允許偵錯應用程式。 準備裝置進行偵錯會移除此限制,並載入偵錯和解除鎖定裝置功能 所需的軟體。

若要偵錯即時核心,請使用 az 球體裝置啟用開發 命令。 此命令會將裝置設定為接受來自計算機的應用程式進行偵錯,並將裝置指派給「開發裝置」群組,而此群組不允許雲端應用程式更新。 在應用程式開發和偵錯期間,您應將裝置留在此群組中,讓雲端應用程式更新不會覆寫開發中的應用程式。

在 Windows 上,您必須新增 --enable-rt-core-debugging 參數,將偵錯伺服器和每種核心類型的必要驅動程式載入裝置上。

  1. 如果您尚未登入 Azure 球體,請登入:

    az login
    
  2. 使用 PowerShell 或具有系統管理員許可權的 Windows 命令提示字元開啟命令行介面。 參數 --enable-rt-core-debugging 需要系統管理員許可權,因為它會安裝偵錯程式的USB驅動程式。

  3. 輸入下列命令:

    az sphere device enable-development --enable-rt-core-debugging  --catalog <CatalogName>  --resource-group <ResourceGroupName>
    
  4. 由於不再需要系統管理員許可權,所以在命令完成後關閉視窗。 最佳作法是一律使用能完成工作的最低許可權。

如果 az 球體裝置啟用開發 命令失敗,請參閱 Azure 球體問題的疑難解答 以取得協助。

啟用開發與偵錯

您必須先啟用開發和偵錯,才能在 Azure 球體裝置上建立範例應用程式或開發新的應用程式。 根據預設,Azure 球體裝置會被「鎖定」;也就是說,他們不允許從計算機載入開發中的應用程式,也不允許偵錯應用程式。 準備裝置進行偵錯會移除此限制,並載入偵錯和解除鎖定裝置功能所需的軟體,如 裝置功能和通訊中所述。

若要偵錯即時核心,請使用 az 球體裝置啟用開發 命令。 此命令會將裝置設定為接受來自計算機的應用程式進行偵錯,並將裝置指派給「開發裝置」群組,而此群組不允許雲端應用程式更新。 在應用程式開發和偵錯期間,您應將裝置留在此群組中,讓雲端應用程式更新不會覆寫開發中的應用程式。

在 Windows 上,您必須新增 --enable-rt-core-debugging 參數,將偵錯伺服器和每種核心類型的必要驅動程式載入裝置上。

  1. 如果您尚未登入 Azure,請執行下列動作:

    az login
    
  2. 使用 PowerShell、Windows 命令提示字元或具有系統管理員許可權的 Linux 命令殼層開啟命令行介面。 參數 --enable-rt-core-debugging 需要系統管理員許可權,因為它會安裝偵錯程式的USB驅動程式。

  3. 輸入下列命令:

    az sphere device enable-development --enable-rt-core-debugging
    
  4. 由於不再需要系統管理員許可權,所以在命令完成後關閉視窗。 最佳作法是一律使用能完成工作的最低許可權。

如果 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 建置合作夥伴應用程式

  1. 確定您的裝置已透過 USB 連接到電腦。 在 [設定啟動專案] 功能表中,選[Azure 球體應用程式 (所有核心) 其中 Azure 球體應用程式是頂層專案的名稱,或按 F5

    遠端 GDB 調試程式按鈕

  2. 如果系統提示您建立專案,請選取 [ 是]。 Visual Studio 會編譯合作夥伴應用程式、建立影像套件、將它們 側載 到白板,然後以偵錯模式啟動它們。 側載 表示應用程式是透過有線連線直接從電腦傳遞,而不是透過雲端傳遞。

    請注意[ 檢視>輸出>顯示來自組建 輸出] 的輸出路徑,此結果會指出輸出映像套件在計算機上的位置。 當您準備好建立部署時,您必須知道影像套件的路徑。

  3. 根據預設,[ 輸出] 視窗會顯示 [裝置輸出] 的輸出。 若要查看來自調試程式的郵件,請從 [顯示輸出來源:] 下拉功能表中選取 [偵錯]。 您也可以透過 [ 偵錯>Windows ] 功能表,對程序進行拆解、註冊或記憶體檢查。

使用 Visual Studio Code 建立合作夥伴應用程式

  1. 開啟包含合作夥伴應用程式的資料夾。 Visual Studio Code 偵測到工作區檔案,並詢問您是否要開啟工作區。 選取 [開啟工作區],同時開啟即時應用程式和高階應用程式。

  2. 以滑鼠右鍵按兩個 CMakeLists.txt 檔案的其中一個,然後選 取 [建立所有專案]

  3. 按兩下 Visual Studio Code活動列中的 [執行] 圖示。

  4. 在出現在畫面左側視窗頂端的下拉功能表上,選 取 [啟動 Azure 球體應用程式] (gdb) (工作區)

  5. 按 F5 以建立及偵錯專案。 如果專案先前尚未建立,或是檔案已變更且需要重建,Visual Studio Code 會在偵錯開始之前建立專案。

  6. 請等候數秒 Visual Studio Code 來建立應用程式、建立影像套件、將它們部署到白板,然後以偵錯模式啟動它們。 一路走來,您會在 [ 輸出 ] 窗格中看到狀態更新。

    首先,CMake 會判斷是否需要建立應用程式。 若是如此,焦點會移至輸出窗口,顯示來自 CMake/Build 的輸出。

    接下來,輸出窗格會在將影像套件部署到裝置時顯示輸出。 最後,偵錯主機會接收焦點並顯示 gdb 輸出。

編譯並建立應用程式

若要使用 CLI 建置應用程式,您必須在電腦上找到正確的編譯工具、標題和文檔庫,統稱為 sysroot。 Azure 球體 SDK 會隨附多個 sysroots,讓應用程式可以按照 應用程式運行時間版本、sysroots 和 Beta API 中所述,以不同的 API 集為目標。 Sysroots 會安裝在 Sysroots 下的 Azure 球體 SDK 安裝資料夾中。

使用 CLI 建置時,請先建置並部署支援即時的應用程式,然後建置及部署高階應用程式。

建置及部署支援即時的應用程式

  1. 瀏覽至包含您支援即時應用程式的資料夾。

  2. 開啟app_manifest.json檔案,並確認高層級應用程式的元件標識符顯示在AllowedApplicationConnections功能中。

  3. 使用 PowerShell、Windows 命令提示字元或 Linux 命令殼層開啟命令行介面。 流覽至您的專案組建目錄。

  4. 在專案組建目錄的命令提示字元中,使用下列參數執行 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 命令:

    Windows 命令提示字元

    cmake ^
    --preset "ARM-Debug" ^
    "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_RTApp_MT3620_BareMetal"
    

    Windows PowerShell

    cmake `
    --preset "ARM-Debug" `
    "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_RTApp_MT3620_BareMetal"
    
  5. 在專案組建目錄的命令提示字元中,執行 [忍者] 以建立應用程式並建立圖像套件檔案。

    ninja -C out/ARM-Debug
    

    忍者會將產生的應用程式和 .imagepackage 檔案放在指定的目錄中。

    您也可以使用下列命令透過 CMake 叫用忍者:

    cmake --build out/<binary-dir>
    

    設定 <binary-dir> 為包含 CMake 快取的二進位目錄。 例如,如果您在 Azure 球體樣本上執行 CMake,則組建命令會是 cmake --build out/ARM-Debug

    進行疑難解答時,尤其是對 CMake 命令進行任何變更之後,請刪除整個組建,然後再試一次。

  6. 刪除已部署到裝置的任何應用程式:

    az sphere device sideload delete
    
  7. 在專案組建目錄的命令提示字元中,載入忍者建立的影像套件:

    az sphere device sideload deploy --image-package <path-to-imagepackage>
    

    應用程式載入之後很快就會開始執行。

  8. 取得影像的元件識別碼:

    az sphere image-package show --image-package <path-to-imagepackage>
    

    命令會傳回圖像套件的所有元數據。 應用程式的元件識別碼會出現在應用程式圖像類型的 [身分識別] 區段中。 例如:

    ...
      "Identity": {
        "ComponentId": "<component-id>",
        "ImageId": "<image-id>",
        "ImageType": "Application"
      },
    ...
    

建置和部署高階應用程式

  1. 瀏覽至包含您高階應用程式的資料夾。

  2. 開啟app_manifest.json檔案,並確認 RTApp 的元件標識碼顯示在 AllowedApplicationConnections 功能中。

  3. 使用 PowerShell、Windows 命令提示字元或 Linux 命令殼層開啟命令行介面。 流覽至您的專案組建目錄。

  4. 在專案組建目錄的命令提示字元中,使用下列參數執行 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 命令。

    Windows 命令提示字元

    cmake ^
    --preset "ARM-Debug" ^
    "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_HighLevelApp"
    

    Windows PowerShell

    cmake `
    --preset "ARM-Debug" `
    "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_HighLevelApp"
    
  5. 在專案組建目錄的命令提示字元中,執行 [忍者] 以建立應用程式並建立圖像套件檔案。

    ninja -C out/ARM-Debug
    

    忍者會將產生的應用程式和 .imagepackage 檔案放在指定的目錄中。

    您也可以使用下列命令透過 CMake 叫用忍者:

    cmake --build out/<binary-dir>
    

    設定 <binary-dir> 為包含 CMake 快取的二進位目錄。 例如,如果您在 Azure 球體樣本上執行 CMake,則組建命令會是 cmake --build out/ARM-Debug

    進行疑難解答時,尤其是對 CMake 命令進行任何變更之後,請刪除整個組建,然後再試一次。

  6. 在專案組建目錄的命令提示字元中,載入忍者建立的影像套件:

    az sphere device sideload deploy --image-package <package-name>
    

    應用程式載入之後很快就會開始執行。

  7. 取得影像的元件識別碼:

    az sphere image-package show --image-package <path-to-imagepackage>
    

    命令會傳回圖像套件的所有元數據。 應用程式的元件識別碼會出現在應用程式圖像類型的 [身分識別] 區段中。 例如:

      "ComponentId": "<component-ID>",
    ...
      "Identity": {
        "ComponentId": "<component-id>",
        "ImageId": "<image-id>",
        "ImageType": "Application"
      },
    ...