Azure 球體應用程式概觀
Azure 球體裝置可以執行兩種類型的應用程式:
- 在 Azure 球體 OS 上執行容器化的高階應用程式
- 支援 (RTApps 的即時應用程式) 在金屬上執行,或在即時核心上使用即時作業系統 (RTOS)
每個 Azure 球體裝置都必須有高階應用程式;RTApps 是選用的。
高階應用程式
每個 Azure 球體裝置都有高階應用程式,可在 Azure 球體作業系統上執行,並可使用應用程式庫。 高階應用程式可以:
設定 Azure 球體周邊設備並與之互動,例如一般用途的輸入/輸出 (GPIO) 針、通用非同步接收器/傳輸器 (UART) ,以及其他介面
使用 RTApps 通訊
與網際網路和雲端服務通訊
透過憑證式驗證代理與其他裝置和服務的信任關係
高階應用程式會在標準世界使用者模式的容器中執行,如 Azure 球體是什麼?中所述。 應用程式容器支援 POSIX 環境的子集合,以及 Azure 球體 OS 特有的應用程式) (應用程式庫集合。 高階應用程式所提供的文件庫和函數會受到限制,以確保平臺保持安全且可輕鬆更新。 應用程式只能存取 Microsoft 提供的文件庫和執行時間服務;不提供直接檔案 I/O 或殼層存取,以及其他限制式。 開發環境 說明基礎 API 集,並介紹支援裝置特定功能的 Azure 球體應用程式庫。
高階應用程式預期會持續執行,並在它們停止或失敗時自動重新開機。
建立高層級應用程式 可提供功能的詳細資訊。
支援即時功能的應用程式
Azure 球體裝置除了具有高階應用程式外,也可能有一或多個支援即時的應用程式。 RTApp 可以:
- 設定與整合到 Azure 球體 MCU 的周邊設備互動,例如 GPIO 圖釘和 UART
- 與高階應用程式通訊
RTApps 可以在金屬上執行,也可以使用即時作業系統 (RTOS) 。 GitHub 上的 Azure 球體樣本隨即出現,其中包含一個金屬光擷 的 HelloWorld 樣本 ,以及示範高階和 RTApps 之間 核心間通訊 的樣本。 GitHub 上的 Azure 範例 repo 包含示範 如何搭配 Azure RTOS 使用 Azure 球體的樣本。
針對 MT3620 晶片上的 M4 即時核心目標之 RTApps 的其他驅動程式和樣本,可從 Azure 球體合作夥伴 MediaTek 和 Codethink在 GitHub 上取得。
每個 RTApp 會隔離在特定的 I/O 核心上執行,而且只能與高階應用程式通訊;它無法使用網際網路、Azure 球體應用程式或 Azure 球體 OS 的其他功能。
建立支援即時功能的應用程式 可提供 RTApps 功能和開發程式的詳細資訊。
所有應用程式常用的功能
儘管高階應用程式和 RTApps 之間有很大的差異,但所有 Azure 球體應用程式都有一些共同點。 您可以使用 Visual Studio 或 Visual Studio Code 開發、建置和偵錯這兩種應用程式類型,或是使用 CLI 叫用 CMake 和 Ninja。
此外,下列安全性功能適用于高層級和 RTApps:
應用程式功能
無論它在何處執行,每個 Azure 球體應用程式都必須指定所需的外部服務和介面,例如 I/O 和網路需求,以防止任何未經授權或非預期的使用。
應用程式功能 是應用程式需要的資源。 應用程式功能包括應用程式使用的周邊設備、高階應用程式連線至的網際網路主機,以及變更網路設定的許可權等等。 每個應用程式都必須有可識別這些資源的 應用程式資訊清單 。
裝置功能
裝置功能可啟用裝置特定的活動。 Azure 球體安全性服務授與裝置功能。 根據預設,Azure 球形晶片沒有裝置功能。 裝置功能有兩種主要類型: app必要 裝置功能和 fieldServicing 裝置功能。
app其他裝置功能會變更裝置信任的簽署類型。 根據預設,Azure 球體裝置信任經生產簽署的影像套件,但不信任 SDK 簽署的影像套件。 因此,您無法將 SDK 簽署的映射套件側載至沒有此功能的 Azure 球體裝置。 應用程式功能出現時,裝置會信任 SDK 簽名的影像套件。 此外,它可讓您從裝置啟動、停止、偵錯或移除應用程式。 總之,應用程式開發功能必須先出現在裝置上,您才能:
- 側載由 Visual Studio 或 azsphere 影像套 件命令所建置的圖像套件。
- 無論圖像套件的簽署方式為何,都能從 Azure 球體裝置啟動、停止、偵錯或移除影像套件。
az 球形裝置啟用開發命令會建立並套用 app 必要功能,並防止裝置接收雲端應用程式更新。
FieldServicing 功能允許裝置在 DeviceComplete 製造狀態的裝置上進行裝置對電腦通訊。 使用這項功能,您可以側載已簽署生產狀態的影像,但不能刪除影像。 您可以啟動和停止應用程式,但無法偵錯應用程式。 您也可以執行例行維護工作,例如設定 Wi-Fi。 這是用於在 維護會話期間進行短期使用,在一段有限的期間內,每項作業授與裝置的存取權。
簽署與部署需求
部署到 Azure 球體裝置的所有影像套件都必須簽署。 Azure 球體 SDK 和 az 球體圖像封裝 命令簽署圖像套件,可使用 SDK 簽署金鑰進行測試。 Azure 球體裝置只有在 app 中也提供 應用程式 的裝置功能時,才信任此金鑰。
當您將 Azure 球體安全性服務生產簽署映射套件上傳到雲端時,會顯示影像套件。 您可以從雲端側載或載入已簽署生產狀態的影像套件。
若要防止安裝惡意軟體,應用程式只能以兩種方式載入 Azure 球體裝置:
側載,可用於軟體發展和測試以及裝置欄位維護。 要側載以進行軟體發展和測試,必須具備 app 的裝置功能。 欄位維護的側載需要功能變數儲存裝置功能和生產簽署的映射套件。 Visual Studio 和 Visual Studio Code在開發和偵錯期間側載應用程式;您也可以使用Azure CLI手動側載。
雲端更新只能由 Azure 球體安全性服務執行。 使用 Azure CLI 建立及管理雲端部署。
合作夥伴應用程式
共同作業的應用程式可視為 合作夥伴應用程式 ,並可個別側載。 當您側載具有合作夥伴的應用程式時,如果 Azure 球體裝置已經部署,合作夥伴應用程式仍會保留在該應用程式上。 每個應用程式都會在其專案設定中宣告其合作夥伴清單。
若要將合作夥伴新增至 CMake 專案設定,請在 launch.vs.json 或 .vscode/launch.json 檔案之設定區段的partnerComponents功能變數中,指定合作夥伴應用程式的元件識別碼:
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
彼此通訊的高層級應用程式和 RTApps 必須識別為合作夥伴。 Azure 球體不支援高階應用程式組或 RTApps 對之間的通訊。