Azure Sphere 應用程式概觀
重要
這是 Azure Sphere (舊版) 檔。 Azure Sphere(舊版)將於 2027 年 9 月 27 日淘汰,且使用者此時必須移轉至 Azure Sphere(整合式)。 使用位於 TOC 上方的版本選取器來檢視 Azure Sphere (整合式) 檔。
Azure Sphere 裝置可以執行兩種類型的應用程式:
- 高階應用程式 會在 Azure Sphere OS 上執行容器化
- 即時可用的應用程式 (RTApps) 在裸機上執行,或在即時核心上使用即時作業系統 (RTOS) 執行
每個 Azure Sphere 裝置都需要高階應用程式;RTApp 是選擇性的。
高階應用程式
每個 Azure Sphere 裝置都有高階應用程式,可在 Azure Sphere OS 上執行,而且可以使用應用程式連結庫。 高階應用程式可以:
設定 Azure Sphere 周邊並與其互動,例如一般用途輸入/輸出 (GPIO) 接頭、通用非同步收發器 (UART) 及其他介面
與 RTApp 通訊
與網際網路和雲端式服務通訊
透過憑證式驗證來協商與其他裝置和服務的信任關係
高層級應用程式會在標準世界使用者模式的容器中執行,如什麼是 Azure Sphere?中所述。 應用程式容器支援 POSIX 環境的子集,以及 Azure Sphere OS 特有的一組應用程式連結庫 (Applibs)。 高階應用程式可用的連結庫和函式受限於確保平臺保持安全且易於更新。 應用程式只能存取Microsoft提供的連結庫和運行時間服務;除了其他條件約束之外,也無法使用直接檔案 I/O 和殼層存取。 開發環境 描述基底 API 集合,並介紹支援裝置特定功能的 Azure Sphere 應用程式連結庫。
高階應用程式預期會持續執行,且會在停止或失敗時自動重新啟動。
建立高階應用程式 可提供有關功能的詳細資訊。
即時可用的應用程式
除了其高階應用程式之外,Azure Sphere 裝置也可能有一或多個即時可用的應用程式。 RTApp 可以:
- 設定並與整合至 Azure Sphere MCU 的周邊互動,例如 GPIO 針腳和 UART
- 與高階應用程式通訊
RTApps 可以在裸機或使用即時作業系統 (RTOS) 執行。 GitHub 上的 Azure Sphere 範例存放庫包含裸機 HelloWorld 範例 ,以及示範 高層級與 RTApp 之間核心間通訊 的範例。 GitHub 上的 Azure 範例存放庫包含範例,示範 如何搭配 Azure RTOS 使用 Azure Sphere。
針對以 MT3620 晶片上的 M4 即時核心為目標的 RTApp 的其他驅動程式和範例可從 Azure Sphere 合作夥伴 MediaTek 和 Codethink 取得。
每個 RTApp 都會在特定 I/O 核心上執行隔離,且只能與高階應用程式通訊;它無法使用因特網、Azure Sphere applibs 或 Azure Sphere OS 的其他功能。
建立即時可用的應用程式 ,提供有關 RTApps 功能與開發程式的詳細資訊。
所有應用程式通用的功能
儘管高階應用程式與 RTApps 之間有顯著差異,但所有 Azure Sphere 應用程式都有一些共同點。 您可以使用 Visual Studio 或 Visual Studio Code,或使用 CLI 叫用 CMake 和 Ninja 來開發、建置和偵錯這兩種類型的應用程式。
此外,下列安全性功能同時適用於高階和 RTApps:
應用程式功能
不論其執行位置為何,每個 Azure Sphere 應用程式都必須指定它所需的外部服務和介面,例如其 I/O 和網路需求,以防止任何未經授權的或非預期的使用。
應用程式功能 是應用程式所需的資源。 應用程式功能包括應用程式所使用的周邊、高層級應用程式所連線的因特網主機,以及變更網路設定的許可權等等。 每個應用程式都必須有可 識別這些資源的應用程式指令清單 。
裝置功能
裝置功能可啟用裝置特定活動。 Azure Sphere 安全性服務會授與裝置功能。 根據預設,Azure Sphere 晶片沒有裝置功能。 裝置功能有兩種主要類型: appDevelopment 裝置功能和 fieldServicing 裝置功能。
appDevelopment 裝置功能會變更裝置信任的簽署類型。 根據預設,Azure Sphere 裝置會信任生產簽署的映射套件,但不信任 SDK 簽署的映射套件。 因此,您無法將 SDK 簽署的映像套件側載至沒有此功能的 Azure Sphere 裝置。 不過,當 appDevelopment 功能存在時,裝置會信任 SDK 簽署的映像套件。 此外,它可讓您從裝置啟動、停止、偵錯或移除應用程式。 總而言之,應用程式開發功能必須存在於裝置上,才能:
- 側載 Visual Studio 或 azsphere image-package 命令所建置的映射套件。
- 不論映像套件的簽署方式為何,從 Azure Sphere 裝置啟動、停止、偵錯或移除映射套件。
azsphere device enable-development 命令會建立並套用 appDevelopment 功能,並防止裝置接收雲端應用程式更新。
fieldServicing 功能允許裝置對計算機通訊處於 DeviceComplete 製造狀態的裝置。 透過這項功能,您可以側載生產簽署的映像,但無法刪除它們。 您可以啟動和停止應用程式,但無法對其進行偵錯。 您也可以執行例行維護工作,例如設定Wi-Fi。 它的目的是在維護會話期間短期使用,在有限期間,裝置的存取權會根據每個作業授與。
簽署和部署需求
部署至 Azure Sphere 裝置的所有映像套件都必須簽署。 Azure Sphere SDK 和 azsphere image-package 命令會簽署映射套件,以使用 SDK 簽署密鑰進行測試。 只有在 appDevelopment 裝置功能也存在時,Azure Sphere 裝置才會信任此密鑰。
當您將映像套件上傳至雲端時,Azure Sphere 安全性服務會簽署映像套件。 生產簽署的映像套件可以從雲端側載或載入。
若要防止安裝 Rogue 軟體,應用程式只能以兩種方式載入 Azure Sphere 裝置:
側載,可用於軟體開發和測試,以及裝置的現場服務。 進行軟體開發和測試的側載需要 appDevelopment 裝置功能。 側載現場服務需要 fieldServicing 裝置功能和生產簽署映射套件。 Visual Studio 和 Visual Studio Code 會在開發和偵錯期間側載應用程式;您也可以使用 Azure Sphere CLI 手動側載。
雲端更新,只能由 Azure Sphere 安全性服務執行。 使用 Azure Sphere CLI 來建立和管理雲端部署。
合作夥伴應用程式
一起運作的應用程式可以視為 合作夥伴應用程式 ,然後可以個別側載。 當您側載具有合作夥伴的應用程式時,如果已部署合作夥伴,合作夥伴應用程式會保留在 Azure Sphere 裝置上。 每個應用程式都會在其項目組態中宣告其夥伴清單。
若要將合作夥伴新增至 CMake 項目組態,請在 launch.vs.json 或 .vscode/launch.json 檔案之 configurations 區段的 partnerComponents 字段中指定合作夥伴應用程式的元件標識符:
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
與彼此通訊的高階應用程式和 RTApp 必須識別為合作夥伴。 Azure Sphere 不支援高層級應用程式配對或 RTApp 配對之間的通訊。