與高階應用程式通訊
支援即時 (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 球體應用程式資訊清單 有更多詳細資料。 以下是設定 RTApp 與其他應用程式通訊的應用程式資訊清單摘要。
"AllowedApplicationConnections": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
合作夥伴應用程式
當您將應用程式載入 Azure 球體裝置時,Azure 球體部署工具預設會刪除所有現有的應用程式。 若要避免在您開發彼此通訊的應用程式時發生這種情況,您必須將應用程式標示為 合作夥伴。 當您部署其中一個應用程式時,不會刪除其合作夥伴。 如需詳細資訊,請參閱 將應用程式標示為合作夥伴 。