共用方式為


建置即時可用的應用程式

重要

這是 Azure Sphere (舊版) 檔。 Azure Sphere(舊版)將於 2027 年 9 月 27 日淘汰,且使用者此時必須移轉至 Azure Sphere(整合式)。 使用位於 TOC 上方的版本選取器來檢視 Azure Sphere (整合式) 檔。

您可以使用 Visual Studio、Visual Studio Code 或命令行 (CLI) 來開發及偵錯即時可用的應用程式 (RTApps),方式與高階應用程式大致相同。

必要條件

啟用開發和偵錯

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

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

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

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

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

  3. 輸入下列命令:

    azsphere device enable-development --enable-rt-core-debugging
    
  4. 關閉命令完成後的視窗,因為不再需要系統管理員許可權。 最佳做法是,您應該一律使用可完成工作的最低許可權。

如果 azsphere device enable-development 命令失敗,請參閱針對 Azure Sphere 問題進行疑難解答以取得協助。

啟用開發和偵錯

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

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

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

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

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

  3. 輸入下列命令:

    azsphere device enable-development --enable-rt-core-debugging
    
  4. 關閉命令完成後的視窗,因為不再需要系統管理員許可權。 最佳做法是,您應該一律使用可完成工作的最低許可權。

如果 azsphere device enable-development 命令失敗,並出現下列錯誤訊息,請參閱針對 Azure Sphere 問題進行疑難解答以取得協助。

error: The device did not accept the device capability configuration. Please check the Azure Sphere OS on your device is up-to-date using 'azsphere device show-deployment-status'.

使用 Visual Studio Code 建置 RTApp

若要建置 RTApp:

  1. 在 Visual Studio Code 中,開啟您複製 Azure Sphere 範例存放庫中的 HelloWorld_RTApp_MT3620_BareMetal資料夾。 如果系統提示您選取套件,請選擇 [不要使用套件]。

  2. F5 啟動偵錯工具。 如果專案先前尚未建置,或檔案已變更並重建為必要專案,Visual Studio Code 會在偵錯開始之前建置專案。

  3. 連接的終端機模擬器應該會顯示應用程式的輸出。 程式會以一秒的間隔傳送下列單字:

    Tick

    Tock

    注意

    Visual Studio Code 提供 Intellisense,但是當您修改CMakeLists.txt時,它不會自動更新。 您必須執行 CMake:刪除快取和重新設定 命令以重新整理 Intellisense。 CMake 目標檢視可以在左側列的 CMake 延伸模組檢視中找到。

使用 Visual Studio 建置 RTApp

若要建置 RTApp:

  1. 在 Visual Studio 中,選取 [檔案>CMake],然後流覽至包含範例的資料夾。

  2. 如果 CMake 產生未自動啟動,請選取CMakeLists.txt檔案。

  3. 在 Visual Studio 中,檢視>輸出>顯示輸出來源CMake 輸出應該會顯示訊息和CMake generation started.CMake generation finished.

  4. 在 [CMake] 功能表上(如果有的話),選取 [ 全部建置]。 如果功能表不存在,請開啟 方案總管,以滑鼠右鍵按兩下CMakeLists.txt檔案,然後選取 [建置]。 Azure Sphere 應用程式的輸出位置會出現在 [ 輸出 ] 視窗中。

  5. F5 部署應用程式。

  6. 連接的終端機模擬器應該會顯示應用程式的輸出。 程式會以一秒的間隔傳送下列單字:

    Tick

    Tock

    注意

    • Visual Studio 透過從 CMake 快取收集數據,為 Azure Sphere RTApps 提供 Intellisense。 每當 RTApp 中的CMakeLists.txt或CMakeSettings.json檔案變更時,Visual Studio 就會更新快取。

    • 根據預設,Visual Studio 會使用資料夾檢視。 如果您偏好 CMake 專案的邏輯檢視,則可以變更為 CMake 目標檢視。 在 方案總管 中,選取資料夾切換圖示:

      在 [方案] 和 [資料夾] 檢視之間切換

      從下拉功能表中,選取 [CMake 目標檢視]。

    • 應用程式可能會在 OpenOCD 建立連接之前開始執行。 因此,可能會遺漏程式代碼早期設定的斷點。 這的簡單因應措施是延遲應用程式啟動,直到 OpenOCD 連線為止。

      1. 在應用程式進入點 RTCoreMain 的開頭插入下列程式代碼。 這會導致應用程式進入並維持在迴圈中 while ,直到變數 f 設定為 true 為止。

          volatile bool f = false;
          while (!f) {
            // empty.
          }
        
      2. F5 以偵錯啟動應用程式,然後中斷執行。

      3. 在 [局部 變數 偵錯] 窗格中,將 的值 f 從零變更為一。

      4. 如常逐步執行程序代碼。

使用 CLI 建置 RTApp

下列指示假設您使用 CMake。 如果您想要在命令行上建置而不使用 CMake,您可以查看隨 Azure Sphere SDK 一起安裝的 AzureSphereToolchainBase.cmake 和 AzureSphereRTCoreToolchain.cmake 檔案,以判斷適當的編譯程式和鏈接器選項。

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

  2. 從您的項目建置目錄,在命令提示字元中,使用下列參數執行 CMake:

    cmake --preset <preset-name> <source-path>
    
    • --preset <preset-name>

      CMakePresets.json中所定義的組建組態預設名稱。

    • --build <cmake-path>

      包含 CMake 快取的二進位目錄。 例如,如果您在 Azure Sphere 範例上執行 CMake,組建命令會是 cmake --build out/ARM-Debug

    • <source-path>

      包含範例應用程式來源檔案之目錄的路徑。 在此範例中,Azure Sphere 範例存放庫已下載至名為 AzSphere 的目錄。

      CMake 參數會以空格分隔。 行接續字元 (^ for Windows 命令行、 \ for Linux 命令行或 ' for PowerShell) 可用於可讀性,但並非必要。

    下列範例顯示 HelloWorld RTApp 的 CMake 命令:

    Windows 命令提示字元

    cmake ^
    --preset "ARM-Debug" ^
    "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_RTApp_MT3620_BareMetal"
    

    Windows PowerShell

    cmake `
    --preset "ARM-Debug" `
    "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_RTApp_MT3620_BareMetal"
    
  3. 執行 Ninja 以建置應用程式並建立映像套件檔案:

    ninja -C out/ARM-Debug
    

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

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

    cmake --build out/<binary-dir>
    

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

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

    azsphere device sideload delete
    
  5. 部署 Ninja 建立的映射套件:

    azsphere device sideload deploy --image-package <package-name>
    
  6. 取得映像的元件識別碼:

    azsphere image-package show --image-package <path-to-imagepackage>
    

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

    Image package metadata:
    Section: Identity
    Image Type:           Application
    Component ID:         <component id>
    Image ID:             <image id>
    
  7. 判斷您的應用程式執行所在的核心。

    根據預設,RTApp 會部署到裝置上第一個可用的即時核心;您目前無法指定特定核心。 若要找出應用程式執行所在的核心,請使用 azsphere device app 命令停止,然後重新啟動應用程式。 在命令中提供應用程式的元件標識碼。 例如:

    azsphere device app stop --component-id <component id>
    <component id>: App state: stopped
    
    azsphere device app start --component-id <component id>
    <component id>
    App state: running
    Core     : Real-time 0
    
  8. 連接的終端機模擬器應該會顯示應用程式的輸出。 程式會以一秒的間隔傳送下列單字:

    Tick

    Tock

記錄來自 RTApp 的輸出

MT3620 上的每個即時核心都有專用的 UART,用於記錄輸出。 即時核心也可以存取 ISU UART。 MT3620 RDB 只會公開 TX 針腳,您可用來顯示應用程式的記錄輸出。 其他硬體可能會以不同的方式公開,或完全不公開。 若要查看記錄輸出,請設定硬體以顯示此輸出,如快速入門中所述。 專用 UART 不需要 Uart 應用程式指令清單需求;不過,它不應該用於記錄 RTApp 的輸出以外的用途。

使用合作夥伴應用程式進行開發

當您將應用程式載入 Azure Sphere 裝置時,Azure Sphere 部署工具預設會刪除所有現有的應用程式。 若要避免在開發彼此通訊的應用程式時發生此情況,您必須將應用程式標示為 合作夥伴。 當您部署其中一個應用程式時,將不會刪除其合作夥伴。 如需詳細資訊,請參閱 將應用程式標示為合作夥伴

疑難排解

如果您遇到問題,請參閱 針對即時可用的應用程式進行疑難解答。

其他資源

針對以 MT3620 晶片上的 M4 即時核心為目標的 RTApp 的其他驅動程式和範例,可從 Azure Sphere 合作夥伴的 GitHub 上取得: