建立合作夥伴應用程式

建立一對新合作夥伴應用程式最簡單的方法是建立頂層目錄,以同時包含高階和即時支援應用程式,然後依序建立高階和即時支援應用程式。

建立高階應用程式

若要建立高階應用程式,請從 Visual Studio Code Azure 球體擴充功能開始使用 HLCore 空白範本,並依照下列步驟調整專案設定:

  1. 開始Visual Studio Code。 選取 [檢視>命令調色盤],然後輸入 Azure 球體:產生新專案。

    Visual Studio 程式碼中的命令列

  2. 從 [範本] 功能表中選擇 [HLCore 空白]。

    含有範本名稱的快顯功能表

  3. Visual Studio Code然後顯示檔案總管視窗。 流覽至您要將空白應用程式 (的資料夾,或選取 [新增資料夾],然後建立新的頂層合作夥伴專案目錄) 並指定專案名稱,例如 NewHLApp。 Visual Studio Code在您選取的位置建立 NewHLApp 資料夾,並產生空白應用程式的組建檔案。 您應該會看到來自 CMake 的郵件。

  4. 開啟 CMakeLists.txt 檔案,並指定包含所使用硬體定義的資料夾。 根據預設,HLCore 空白應用程式不包含任何硬體定義。 您可以在 Azure 球體範例存放庫中尋找 範例硬體定義 ,或建立如硬體定義中所述 的定義

    下列說明如何新增 Seeed Azure 球體 MT3620 開發工具組的範例硬體定義:

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")

    應該會在最終命令開頭 azsphere_target_add_image_package 之前插入此行。

您也可以從任何高階 Azure 球體範例建立新的高階應用程式:

  1. 如果您尚未複製 樣本檢視 ,請複製該批註。 複製其中一個高階應用程式資料夾,並為專案重新命名。

  2. 在 CMakeLists.txt 檔案中,將專案名稱變更為新資料夾的名稱。 例如:

    PROJECT(NewHLApp C)

建立 RTApp

若要建立新的即時應用程式,請從 Visual Studio Code Azure 球體擴充功能的 RTCore 空白範本開始,並依照下列步驟調整專案設定:

  1. 開始Visual Studio Code。 選取 [檢視>命令調色盤],然後輸入 Azure 球體:產生新專案。

    Visual Studio 程式碼中的命令列

  2. 從 [範本] 功能表中選擇 [RTCore 空白]。

    含有範本名稱的快顯功能表

  3. Visual Studio Code然後顯示檔案總管視窗。 流覽至包含您高階應用程式資料夾的資料夾,並指定專案名稱,例如 NewRTApp。 Visual Studio Code在您選取的位置建立 NewRTApp 資料夾,並產生空白應用程式的組建檔案。 您應該會看到來自 CMake 的郵件。

您也可以從任何支援即時 Azure 球體的範例建立支援即時的應用程式:

  1. 如果您尚未複製 樣本檢視 ,請複製該批註。 複製其中一個高階應用程式資料夾,並為專案重新命名。

  2. 在 CMakeLists.txt 檔案中,將專案名稱變更為新資料夾的名稱。 例如:

    PROJECT(NewRTApp C)

設定您的工作區以進行合作夥伴應用程式開發

若要有效聯結高階應用程式和支援即時開發的應用程式,請將兩個應用程式合併成單一多根工作區,如下所示:

  1. 在 Visual Studio Code 中開啟高階應用程式資料夾。

  2. 取 [將檔>夾新增至工作區],然後選取您支援即時的應用程式資料夾。

  3. 取 [檔案儲存>工作區為...],然後將檔案儲存在同時包含即時功能和高階應用程式的資料夾中。

  4. 在文字編輯器中開啟您的工作區檔案,並在行後 "settings" 立即新增下列啟動資訊:

    "launch": {
        "configurations": [{
            "name": "Launch Azure Sphere Apps (All Cores)",
            "type": "azurespheredbg",
            "request": "launch",
            "args": [],
            "stopAtEntry": false,
            "environment": [],
            "externalConsole": true,
            "partnerComponents": [],
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }],
        "compounds": []
    }

如需多根工作區的詳細資訊,請參閱Visual Studio Code檔

建立高階應用程式

若要建立新的高階應用程式,請從 Visual Studio Azure 球體擴充功能的 HLCore 空白範本開始,並依照下列步驟調整專案設定:

  1. 啟動 Visual Studio,然後選取 [建立新專案]

  2. Azure Sphere 標示 為 [搜尋範本] 的搜尋方塊中輸入。 從傳回的清單中選取 [Azure 球體 HLCore 空白 ],然後選取 [ 下一步]

  3. 指定專案名稱 (例如 NewHLApp) 、專案檔案位置和解決方案名稱 (可以與專案名稱) 相同,然後選取 [ 建立]。 Visual Studio 會在您選取的位置建立 NewHLpp 資料夾,並產生空白應用程式的組建檔案。 您應該會看到來自 CMake 的郵件。

  4. 開啟 CMakeLists.txt 檔案,並指定包含所使用硬體定義的資料夾。 根據預設,HL 空白應用程式不包含任何硬體定義。 您可以在 Azure 球體範例存放庫中尋找 範例硬體定義 ,或建立如硬體定義中所述 的定義

    下列說明如何新增 Seeed Azure 球體 MT3620 開發工具組的範例硬體定義:

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")

    應該會在最終命令開頭 azsphere_target_add_image_package 之前插入此行。

您也可以從任何高階 Azure 球體範例建立新的高階應用程式:

  1. 如果您尚未複製 樣本檢視 ,請複製該批註。 複製其中一個高階應用程式資料夾,並為專案重新命名。

  2. 在 CMakeLists.txt 檔案中,將專案名稱變更為新資料夾的名稱。 例如:

    PROJECT(NewHLApp C)

建立 RTApp

若要建立支援即時功能的新應用程式,請從 Visual Studio Azure 球體擴充功能的 RTCore 空白範本開始,並依照下列步驟調整專案設定:

  1. 啟動 Visual Studio,然後選取 [建立新專案]

  2. Azure Sphere 標示 為 [搜尋範本] 的搜尋方塊中輸入。 從傳回的清單中選取 [Azure 球體 RTCore 空白 ],然後選取 [ 下一步]

  3. 指定專案名稱 (例如 NewRTApp) 、專案檔案位置,以及您用於高階應用程式的解決方案名稱,然後選取 [ 建立]。 Visual Studio 會在您選取的位置建立 NewRTApp 資料夾,並產生空白應用程式的組建檔案。 您應該會看到來自 CMake 的郵件。

您也可以從任何支援即時 Azure 球體的範例建立支援即時的應用程式:

  1. 如果您尚未複製 樣本檢視 ,請複製該批註。 複製其中一個支援即時功能的應用程式資料夾,並為專案重新命名。

  2. 在 CMakeLists.txt 檔案中,將專案名稱變更為新資料夾的名稱。 例如:

    PROJECT(NewRTApp C)

建立頂層 Visual Studio 啟動檔案

若要同時使用合作夥伴應用程式,您想要允許 Visual Studio 偵錯到多個核心。 您可以在包含兩個合作夥伴應用程式資料夾的頂層資料夾中建立 launch.vs.json 檔案來啟用此功能。 此檔案的內容應類似下列專案:

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "azurespheredbg",
      "name": "Azure Sphere Apps (All Cores)",
      "project": "PartnerAppsHL/CMakeLists.txt",
      "DebugBuildStepBuildAll": "true",
      "workingDirectory": "${workspaceRoot}",
      "applicationPath": "${debugInfo.target}",
      "imagePath": "${debugInfo.targetImage}",
      "targetCore": "AnyCore",
      "partnerComponents": [ "0cc81b35-08dd-4d65-b318-5fa73a4ff6b1", "a9d25f0a-807e-4cb9-80e8-80fee5a1bcb4" ]
    }
  ]
}

"project" 線條應包含高層級應用程式 CMakeLists.txt 檔案的相對路徑,且該 "partnerComponents" 行應具有兩個合作夥伴應用程式的元件識別碼。

建立此頂層 launch.vs.json 檔案後,您就可以在頂層資料夾中開啟 Visual Studio,而且您會在 [選取啟動專案] 功能表中看到[Azure 球體應用程式 (所有核心) ] 選項。

建立 CMakeWorkspaceSettings.json 檔案

如果您使用的是 Visual Studio 2022 版本 17.1 或更新版本,而且您有一個具有多個根源的專案,例如 IntercoreComms 範例,您將需要將 CMakeWorkspaceSettings.json 檔案新增至專案最上層的資料夾。 檔案有兩個專案,一個用來指定已啟用 CMake 組建,另一個包含多個根源的路徑。 例如,針對 IntercoreComms 範例,CMakeWorkspaceSettings.json 具有下列內容:

{
  "enableCMake": true,
  "sourceDirectory": [ "IntercoreComms_HighLevelApp", "IntercoreComms_RTApp_MT3620_BareMetal" ]
}

路徑是相對於包含 CMakeWorkspaceSettings.json 檔案的資料夾所指定。

建立高階應用程式

若要建立新的高階應用程式,請從任何高階 Azure 球體範例開始:

  1. 如果您尚未複製 樣本檢視 ,請複製該批註。 複製其中一個高階應用程式資料夾,並為專案重新命名。

  2. 在 CMakeLists.txt 檔案中,將專案名稱變更為新資料夾的名稱。 例如:

    PROJECT(NewHLApp C)

建立 RTApp

建立支援即時應用程式最簡單的方法是從 HelloWorld_RTApp_MT3620_BareMetal範例 開始,然後依照下列步驟調整專案的設定:

  1. 如果您尚未複製 樣本檢視 ,請複製該批註。 複製HelloWorld_RTApp_MT3620_BareMetal資料夾,並為專案重新命名。

  2. 在 CMakeLists.txt 檔案中,將專案名稱變更為新資料夾的名稱。 例如:

    PROJECT(NewRTApp C)

Azure 球體應用程式的基本檔案結構

無論您如何建立應用程式,所有 Azure 球體應用程式都會共用下列核心檔案:

  • 一或多個檔案中的應用程式原始程式碼。 目前僅支援 C 語言原始程式碼。
  • CMake 組建檔案。 CMakeLists.txt 為必要專案。 CMake 與忍者輕量型組建公用程式搭配使用,用來控制 Azure 球體應用程式組建程式。
  • 說明應用程式可用功能的 應用程式資訊清單 檔案。

高階應用程式通常會有至少三個其他檔案:

  • 指定各種 Azure 球體 API 版本層級的 applibs-version.h 檔案
  • 兩個硬體定義檔 (JSON 格式的可編輯版本,而 C 語言包含從中產生的檔案,) 提供方便的方式來參照程式碼中的硬體元件。 透過一組一致的硬體定義檔案,您可以撰寫硬體獨立原始程式碼,然後只要在 CMakeLists.txt 檔案中重新設定適當的硬體定義檔目標,即可建置特定硬體的應用程式映射。

支援即時功能的應用程式會新增至少一個其他檔案:一個 linker.ld 檔案,用來指定要在即時核心上精確地載入應用程式的各種元件。

撰寫您的高階應用程式代碼

  1. 使用 Azure 球體高層級應用程式範例做為指南,撰寫您的高階應用程式代碼。 下列主題說明特定的實作案例:
  2. CMakeLists.txt 檔案中:
    • 指定 Azure 球體 SDK 工具修訂
    • 指定目標 API 集
    • 指定目標硬體
  3. app_manifest.json 檔案中:
    • 設定 Name 為您的專案名稱。
    • 新增程式碼所需的任何應用程式特定功能,例如硬體資源或連線。 如果高階應用程式與 RTApp 通訊,請將高階應用程式的元件識別碼新增至該 AllowedApplicationConnections 功能。
  1. 如果您想要同時部署 RTApp 與高階合作夥伴應用程式,請將合作夥伴的元件識別碼新增至 launch.vs.json (Visual Studio) 或 .vscode/launch.json (Visual Studio Code) 檔案的partnerComponents功能變數

    "partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]

撰寫 RTApp 程式碼

  1. 使用 Azure 球體 RTApp 範例做為指南,撰寫 RTApp 程式碼。 下列主題說明特定的實作案例:
  2. app_manifest.json 檔案中:
    • [設定 Name 為您的專案名稱],
    • 設定為 ApplicationType"RealTimeCapable"
    • 新增程式碼所需的任何應用程式特定功能,例如硬體資源或連線。 如果 RTApp 與高階應用程式通訊,請將高階應用程式的元件識別碼新增至該 AllowedApplicationConnections 功能。
  1. 如果您想要同時部署 RTApp 與高階合作夥伴應用程式,請將合作夥伴的元件識別碼新增至 launch.vs.json (Visual Studio) 或 .vscode/launch.json (Visual Studio Code) 檔案的partnerComponents功能變數

    "partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]

另請參閱