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 球體合作夥伴 MediaTekCodethink在 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 對之間的通訊。