建立合作夥伴應用程式
建立一對新合作夥伴應用程式最簡單的方法是建立頂層目錄,以同時包含高階和即時支援應用程式,然後依序建立高階和即時支援應用程式。
建立高階應用程式
若要建立高階應用程式,請從 Visual Studio Code Azure 球體擴充功能開始使用 HLCore 空白範本,並依照下列步驟調整專案設定:
開始Visual Studio Code。 選取 [檢視>命令調色盤],然後輸入 Azure 球體:產生新專案。
從 [範本] 功能表中選擇 [HLCore 空白]。
Visual Studio Code然後顯示檔案總管視窗。 流覽至您要將空白應用程式 (的資料夾,或選取 [新增資料夾],然後建立新的頂層合作夥伴專案目錄) 並指定專案名稱,例如 NewHLApp。 Visual Studio Code在您選取的位置建立 NewHLApp 資料夾,並產生空白應用程式的組建檔案。 您應該會看到來自 CMake 的郵件。
開啟 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 球體範例建立新的高階應用程式:
如果您尚未複製 樣本檢視 ,請複製該批註。 複製其中一個高階應用程式資料夾,並為專案重新命名。
在 CMakeLists.txt 檔案中,將專案名稱變更為新資料夾的名稱。 例如:
PROJECT(NewHLApp C)
建立 RTApp
若要建立新的即時應用程式,請從 Visual Studio Code Azure 球體擴充功能的 RTCore 空白範本開始,並依照下列步驟調整專案設定:
開始Visual Studio Code。 選取 [檢視>命令調色盤],然後輸入 Azure 球體:產生新專案。
從 [範本] 功能表中選擇 [RTCore 空白]。
Visual Studio Code然後顯示檔案總管視窗。 流覽至包含您高階應用程式資料夾的資料夾,並指定專案名稱,例如 NewRTApp。 Visual Studio Code在您選取的位置建立 NewRTApp 資料夾,並產生空白應用程式的組建檔案。 您應該會看到來自 CMake 的郵件。
您也可以從任何支援即時 Azure 球體的範例建立支援即時的應用程式:
如果您尚未複製 樣本檢視 ,請複製該批註。 複製其中一個高階應用程式資料夾,並為專案重新命名。
在 CMakeLists.txt 檔案中,將專案名稱變更為新資料夾的名稱。 例如:
PROJECT(NewRTApp C)
設定您的工作區以進行合作夥伴應用程式開發
若要有效聯結高階應用程式和支援即時開發的應用程式,請將兩個應用程式合併成單一多根工作區,如下所示:
在 Visual Studio Code 中開啟高階應用程式資料夾。
選取 [將檔>夾新增至工作區],然後選取您支援即時的應用程式資料夾。
選取 [檔案儲存>工作區為...],然後將檔案儲存在同時包含即時功能和高階應用程式的資料夾中。
在文字編輯器中開啟您的工作區檔案,並在行後
"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 空白範本開始,並依照下列步驟調整專案設定:
啟動 Visual Studio,然後選取 [建立新專案]。
在
Azure Sphere
標示 為 [搜尋範本] 的搜尋方塊中輸入。 從傳回的清單中選取 [Azure 球體 HLCore 空白 ],然後選取 [ 下一步]。指定專案名稱 (例如 NewHLApp) 、專案檔案位置和解決方案名稱 (可以與專案名稱) 相同,然後選取 [ 建立]。 Visual Studio 會在您選取的位置建立 NewHLpp 資料夾,並產生空白應用程式的組建檔案。 您應該會看到來自 CMake 的郵件。
開啟 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 球體範例建立新的高階應用程式:
如果您尚未複製 樣本檢視 ,請複製該批註。 複製其中一個高階應用程式資料夾,並為專案重新命名。
在 CMakeLists.txt 檔案中,將專案名稱變更為新資料夾的名稱。 例如:
PROJECT(NewHLApp C)
建立 RTApp
若要建立支援即時功能的新應用程式,請從 Visual Studio Azure 球體擴充功能的 RTCore 空白範本開始,並依照下列步驟調整專案設定:
啟動 Visual Studio,然後選取 [建立新專案]。
在
Azure Sphere
標示 為 [搜尋範本] 的搜尋方塊中輸入。 從傳回的清單中選取 [Azure 球體 RTCore 空白 ],然後選取 [ 下一步]。指定專案名稱 (例如 NewRTApp) 、專案檔案位置,以及您用於高階應用程式的解決方案名稱,然後選取 [ 建立]。 Visual Studio 會在您選取的位置建立 NewRTApp 資料夾,並產生空白應用程式的組建檔案。 您應該會看到來自 CMake 的郵件。
您也可以從任何支援即時 Azure 球體的範例建立支援即時的應用程式:
如果您尚未複製 樣本檢視 ,請複製該批註。 複製其中一個支援即時功能的應用程式資料夾,並為專案重新命名。
在 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 球體範例開始:
如果您尚未複製 樣本檢視 ,請複製該批註。 複製其中一個高階應用程式資料夾,並為專案重新命名。
在 CMakeLists.txt 檔案中,將專案名稱變更為新資料夾的名稱。 例如:
PROJECT(NewHLApp C)
建立 RTApp
建立支援即時應用程式最簡單的方法是從 HelloWorld_RTApp_MT3620_BareMetal範例 開始,然後依照下列步驟調整專案的設定:
如果您尚未複製 樣本檢視 ,請複製該批註。 複製HelloWorld_RTApp_MT3620_BareMetal資料夾,並為專案重新命名。
在 CMakeLists.txt 檔案中,將專案名稱變更為新資料夾的名稱。 例如:
PROJECT(NewRTApp C)
Azure 球體應用程式的基本檔案結構
無論您如何建立應用程式,所有 Azure 球體應用程式都會共用下列核心檔案:
- 一或多個檔案中的應用程式原始程式碼。 目前僅支援 C 語言原始程式碼。
- CMake 組建檔案。 CMakeLists.txt 為必要專案。 CMake 與忍者輕量型組建公用程式搭配使用,用來控制 Azure 球體應用程式組建程式。
- 說明應用程式可用功能的 應用程式資訊清單 檔案。
高階應用程式通常會有至少三個其他檔案:
- 指定各種 Azure 球體 API 版本層級的 applibs-version.h 檔案
- 兩個硬體定義檔 (JSON 格式的可編輯版本,而 C 語言包含從中產生的檔案,) 提供方便的方式來參照程式碼中的硬體元件。 透過一組一致的硬體定義檔案,您可以撰寫硬體獨立原始程式碼,然後只要在 CMakeLists.txt 檔案中重新設定適當的硬體定義檔目標,即可建置特定硬體的應用程式映射。
支援即時功能的應用程式會新增至少一個其他檔案:一個 linker.ld 檔案,用來指定要在即時核心上精確地載入應用程式的各種元件。
撰寫您的高階應用程式代碼
- 使用 Azure 球體高層級應用程式範例做為指南,撰寫您的高階應用程式代碼。 下列主題說明特定的實作案例:
- 在 CMakeLists.txt 檔案中:
- 指定 Azure 球體 SDK 工具修訂
- 指定目標 API 集
- 指定目標硬體
- 在 app_manifest.json 檔案中:
- 設定
Name
為您的專案名稱。 - 新增程式碼所需的任何應用程式特定功能,例如硬體資源或連線。 如果高階應用程式與 RTApp 通訊,請將高階應用程式的元件識別碼新增至該
AllowedApplicationConnections
功能。
- 設定
如果您想要同時部署 RTApp 與高階合作夥伴應用程式,請將合作夥伴的元件識別碼新增至 launch.vs.json (Visual Studio) 或 .vscode/launch.json (Visual Studio Code) 檔案的partnerComponents功能變數:
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
撰寫 RTApp 程式碼
- 使用 Azure 球體 RTApp 範例做為指南,撰寫 RTApp 程式碼。 下列主題說明特定的實作案例:
- 在 app_manifest.json 檔案中:
- [設定
Name
為您的專案名稱], - 設定為
ApplicationType
"RealTimeCapable"
- 新增程式碼所需的任何應用程式特定功能,例如硬體資源或連線。 如果 RTApp 與高階應用程式通訊,請將高階應用程式的元件識別碼新增至該
AllowedApplicationConnections
功能。
- [設定
如果您想要同時部署 RTApp 與高階合作夥伴應用程式,請將合作夥伴的元件識別碼新增至 launch.vs.json (Visual Studio) 或 .vscode/launch.json (Visual Studio Code) 檔案的partnerComponents功能變數:
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]