建置即時可用的應用程式
重要
這是 Azure Sphere (舊版) 檔。 Azure Sphere(舊版)將於 2027 年 9 月 27 日淘汰,且使用者此時必須移轉至 Azure Sphere(整合式)。 使用位於 TOC 上方的版本選取器來檢視 Azure Sphere (整合式) 檔。
您可以使用 Visual Studio、Visual Studio Code 或命令行 (CLI) 來開發及偵錯即時可用的應用程式 (RTApps),方式與高階應用程式大致相同。
必要條件
- 將 Azure Sphere 裝置連線到您的電腦
- 安裝 Azure Sphere
- 安裝 GNU Arm Embedded 工具鏈
- 如果您尚未這麼做,請設定硬體以顯示專用UART的輸出
啟用開發和偵錯
您必須先啟用開發和偵錯,才能在 Azure Sphere 裝置上建置範例應用程式,或為其開發新的應用程式。 根據預設,Azure Sphere 裝置會「鎖定」;也就是說,它們不允許從計算機載入開發中的應用程式,而且不允許對應用程式進行偵錯。 準備裝置以進行偵錯會移除這項限制,並載入偵錯和解除鎖定裝置功能所需的軟體,如裝置功能和通訊中所述。
若要對即時核心進行偵錯,請使用 azsphere device enable-development 命令。 此命令會將裝置設定為接受來自計算機的應用程式進行偵錯,並將裝置指派給開發裝置群組,而此群組不允許雲端應用程式更新。 在應用程式開發和偵錯期間,您應該讓裝置留在此群組中,讓雲端應用程式更新不會覆寫開發中的應用程式。
在 Windows 上,您必須新增 --enable-rt-core-debugging
參數,以將偵錯伺服器和每種核心類型所需的驅動程式載入裝置上。
如果您尚未登入 Azure Sphere,請執行此動作:
azsphere login
使用 PowerShell 或具有系統管理員許可權的 Windows 命令提示字元開啟命令行介面。 參數
--enable-rt-core-debugging
需要系統管理員許可權,因為它會安裝調試程式的USB驅動程式。輸入下列命令:
azsphere device enable-development --enable-rt-core-debugging
關閉命令完成後的視窗,因為不再需要系統管理員許可權。 最佳做法是,您應該一律使用可完成工作的最低許可權。
如果 azsphere device enable-development 命令失敗,請參閱針對 Azure Sphere 問題進行疑難解答以取得協助。
啟用開發和偵錯
您必須先啟用開發和偵錯,才能在 Azure Sphere 裝置上建置範例應用程式,或為其開發新的應用程式。 根據預設,Azure Sphere 裝置會「鎖定」;也就是說,它們不允許從計算機載入開發中的應用程式,而且不允許對應用程式進行偵錯。 準備裝置以進行偵錯會移除這項限制,並載入偵錯和解除鎖定裝置功能所需的軟體,如裝置功能和通訊中所述。
若要對即時核心進行偵錯,請使用 azsphere device enable-development 命令。 此命令會將裝置設定為接受來自計算機的應用程式進行偵錯,並將裝置指派給開發裝置群組,而此群組不允許雲端應用程式更新。 在應用程式開發和偵錯期間,您應該讓裝置留在此群組中,讓雲端應用程式更新不會覆寫開發中的應用程式。
在 Windows 上,您必須新增 --enable-rt-core-debugging
參數,以將偵錯伺服器和每種核心類型所需的驅動程式載入裝置上。
如果您尚未登入 Azure Sphere,請執行此動作:
azsphere login
使用 PowerShell、Windows 命令提示字元或具有系統管理員許可權的 Linux 命令殼層開啟命令行介面。 參數
--enable-rt-core-debugging
需要系統管理員許可權,因為它會安裝調試程式的USB驅動程式。輸入下列命令:
azsphere device enable-development --enable-rt-core-debugging
關閉命令完成後的視窗,因為不再需要系統管理員許可權。 最佳做法是,您應該一律使用可完成工作的最低許可權。
如果 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:
在 Visual Studio Code 中,開啟您複製 Azure Sphere 範例存放庫中的 HelloWorld_RTApp_MT3620_BareMetal資料夾。 如果系統提示您選取套件,請選擇 [不要使用套件]。
按 F5 啟動偵錯工具。 如果專案先前尚未建置,或檔案已變更並重建為必要專案,Visual Studio Code 會在偵錯開始之前建置專案。
連接的終端機模擬器應該會顯示應用程式的輸出。 程式會以一秒的間隔傳送下列單字:
Tick
Tock
注意
Visual Studio Code 提供 Intellisense,但是當您修改CMakeLists.txt時,它不會自動更新。 您必須執行 CMake:刪除快取和重新設定 命令以重新整理 Intellisense。 CMake 目標檢視可以在左側列的 CMake 延伸模組檢視中找到。
使用 Visual Studio 建置 RTApp
若要建置 RTApp:
在 Visual Studio 中,選取 [檔案>CMake],然後流覽至包含範例的資料夾。
如果 CMake 產生未自動啟動,請選取CMakeLists.txt檔案。
在 Visual Studio 中,檢視>輸出>顯示輸出來源:CMake 輸出應該會顯示訊息和
CMake generation started.
CMake generation finished.
在 [CMake] 功能表上(如果有的話),選取 [ 全部建置]。 如果功能表不存在,請開啟 方案總管,以滑鼠右鍵按兩下CMakeLists.txt檔案,然後選取 [建置]。 Azure Sphere 應用程式的輸出位置會出現在 [ 輸出 ] 視窗中。
按 F5 部署應用程式。
連接的終端機模擬器應該會顯示應用程式的輸出。 程式會以一秒的間隔傳送下列單字:
Tick
Tock
注意
Visual Studio 透過從 CMake 快取收集數據,為 Azure Sphere RTApps 提供 Intellisense。 每當 RTApp 中的CMakeLists.txt或CMakeSettings.json檔案變更時,Visual Studio 就會更新快取。
根據預設,Visual Studio 會使用資料夾檢視。 如果您偏好 CMake 專案的邏輯檢視,則可以變更為 CMake 目標檢視。 在 方案總管 中,選取資料夾切換圖示:
從下拉功能表中,選取 [CMake 目標檢視]。
應用程式可能會在 OpenOCD 建立連接之前開始執行。 因此,可能會遺漏程式代碼早期設定的斷點。 這的簡單因應措施是延遲應用程式啟動,直到 OpenOCD 連線為止。
在應用程式進入點 RTCoreMain 的開頭插入下列程式代碼。 這會導致應用程式進入並維持在迴圈中
while
,直到變數f
設定為 true 為止。volatile bool f = false; while (!f) { // empty. }
按 F5 以偵錯啟動應用程式,然後中斷執行。
在 [局部 變數 偵錯] 窗格中,將 的值
f
從零變更為一。如常逐步執行程序代碼。
使用 CLI 建置 RTApp
下列指示假設您使用 CMake。 如果您想要在命令行上建置而不使用 CMake,您可以查看隨 Azure Sphere SDK 一起安裝的 AzureSphereToolchainBase.cmake 和 AzureSphereRTCoreToolchain.cmake 檔案,以判斷適當的編譯程式和鏈接器選項。
使用 PowerShell、Windows 命令提示字元或 Linux 命令殼層開啟命令行介面。 流覽至您的專案組建目錄。
從您的項目建置目錄,在命令提示字元中,使用下列參數執行 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 命令:
執行 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
。刪除已部署至裝置的任何應用程式:
azsphere device sideload delete
部署 Ninja 建立的映射套件:
azsphere device sideload deploy --image-package <package-name>
取得映像的元件識別碼:
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>
判斷您的應用程式執行所在的核心。
根據預設,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
連接的終端機模擬器應該會顯示應用程式的輸出。 程式會以一秒的間隔傳送下列單字:
Tick
Tock
記錄來自 RTApp 的輸出
MT3620 上的每個即時核心都有專用的 UART,用於記錄輸出。 即時核心也可以存取 ISU UART。 MT3620 RDB 只會公開 TX 針腳,您可用來顯示應用程式的記錄輸出。 其他硬體可能會以不同的方式公開,或完全不公開。 若要查看記錄輸出,請設定硬體以顯示此輸出,如快速入門中所述。 專用 UART 不需要 Uart
應用程式指令清單需求;不過,它不應該用於記錄 RTApp 的輸出以外的用途。
使用合作夥伴應用程式進行開發
當您將應用程式載入 Azure Sphere 裝置時,Azure Sphere 部署工具預設會刪除所有現有的應用程式。 若要避免在開發彼此通訊的應用程式時發生此情況,您必須將應用程式標示為 合作夥伴。 當您部署其中一個應用程式時,將不會刪除其合作夥伴。 如需詳細資訊,請參閱 將應用程式標示為合作夥伴 。
疑難排解
如果您遇到問題,請參閱 針對即時可用的應用程式進行疑難解答。
其他資源
針對以 MT3620 晶片上的 M4 即時核心為目標的 RTApp 的其他驅動程式和範例,可從 Azure Sphere 合作夥伴的 GitHub 上取得: