與高階應用程式通訊
重要
這是 Azure Sphere (舊版) 檔。 Azure Sphere(舊版)將於 2027 年 9 月 27 日淘汰,且使用者此時必須移轉至 Azure Sphere(整合式)。 使用位於 TOC 上方的版本選取器來檢視 Azure Sphere (整合式) 檔。
即時可用的應用程式 (RTApps) 會透過對應至記憶體共用區域的通道緩衝區與高階應用程式通訊。
IntercoreComms 範例示範 RTApps 如何與高階應用程式通訊。 使用IntercoreComms_RTApp_MT3620_BareMetal範例作為開發您自己的 RTApp 通訊程式碼的起點。 如需高階應用程式所需的程式代碼相關信息,請參閱 與即時可用的應用程式 通訊。
重要
如需註冊位址和其他硬體特定詳細數據的相關信息,請透過電子郵件 Azure.Sphere@avnet.com要求「MT3620 M4 程式設計人員指南」。
作業
從 RTApp 的觀點來看,與高階應用程式的通訊涉及下列基本作業:
- 從其與 MT3620 上高階核心共用的信箱讀取設定資訊
- 讀取和寫入數據至共享記憶體
初始化緩衝區大小和指標
RTApp 會透過信箱中即時和高階核心共用的三則訊息,接收通道緩衝區的相關信息。 每個訊息都包含命令和數據。 前兩個訊息會提供應用程式將用來通訊之讀取和寫入緩衝區的基位址;第三則訊息表示緩衝區的安裝資訊傳輸已完成。
命令值 | 資料 |
---|---|
0xba5e0001 | RTApp 的輸出(寫入)緩衝區描述元 |
0xba5e0002 | RTApp 的輸入(讀取) 緩衝區描述元 |
0xba5e0003 | 設定結束 |
RTApp 會計算讀取和寫入緩衝區的大小,並根據緩衝區描述元中的數據,設定每個緩衝區初始位置的指標。
如需如何使用信箱的其他詳細數據,請參閱IntercoreComms_RTApp_MT3620_BareMetal範例。
讀取和寫入緩衝區
初始化之後,RTApp 可以讀取和寫入緩衝區。 由於通訊是使用環形緩衝區實作,因此讀取和寫入都可以包裝到緩衝區的開頭。
寫入或讀取緩衝區的訊息具有下列結構:
訊息標頭 | 訊息內容 | ||||||
---|---|---|---|---|---|---|---|
|
|
訊息標頭的第一個字段 (16 個字節) 包含高階應用程式的元件標識碼。
如果 RTApp 正在起始與高階應用程式的通訊,請確定元件標識碼的前 3 個區段中每個位元組的順序都是小到小(第一個最小顯著位元組)。 其餘兩個區段中位元組的順序必須是大到端。
如果 RTApp 正在回應來自高階應用程式的訊息,您只需要將來源訊息中的元件標識碼複製到回應訊息的標頭。
訊息標頭 (4 個字節) 的第二個字段目前已保留,且必須包含 0。
訊息標頭一律會對齊 16 位元組界限。
目前,訊息內容的大小最多可以是 1 KB。
在緩衝區的每個讀取或寫入作業之後,RTApp 會使用共用信箱通知高階應用程式已接收或傳輸訊息。
應用程式指令清單設定
RTApp 和高階應用程式的應用程式指令清單必須列出它們通訊的應用程式元件標識碼。 若要設定此設定,請將功能新增 AllowedApplicationConnections
至應用程式指令清單,然後將每個元件標識元新增至功能。 Azure Sphere 應用程式指令清單 有更多詳細數據。 以下是設定 RTApp 與其他應用程式通訊的應用程式指令清單摘錄。
"AllowedApplicationConnections": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
合作夥伴應用程式
當您將應用程式載入 Azure Sphere 裝置時,Azure Sphere 部署工具預設會刪除所有現有的應用程式。 若要避免在開發彼此通訊的應用程式時發生此情況,您必須將應用程式標示為 合作夥伴。 當您部署其中一個應用程式時,將不會刪除其合作夥伴。 如需詳細資訊,請參閱 將應用程式標示為合作夥伴 。