1. 程式人生 > 實用技巧 >MMWAVE SDK deep dive(1)

MMWAVE SDK deep dive(1)

文章目錄

System Deployment

一個典型的mmWave應用程式會執行以下操作:

  1. 通過mmwave Link控制和監控射頻前端
  2. 通過標準外設進行外部資訊的傳輸
  3. 使用DSP對雷達資料進行處理

典型的mmWave感測器客戶部署如下圖所示:

  1. MSS和DSP-SS的應用程式程式碼從與mmWave device(通過QSPI)連線的裝置的序列快閃記憶體中下載
  2. 從遠端的實體進行高水平的控制
  3. (檢測到物體時)傳送低速資料到遠端的裝置
  4. 可選的高速資料通過LVDS從裝置中發出

在這裡插入圖片描述
上面的部署可以使用mmWave SDK和ti元件分層實現,如下圖:

在這裡插入圖片描述

Typical mmWave Radar Processing Chain

在這裡插入圖片描述
上面的這個圖是一個典型的mmWave雷達資料處理流程,從mmWave前端接收到ADC資料,然後執行距離和多普勒FFT,然後使用CFAR進行非相干的檢測,最後,使用三維快速傅立葉變換進行角度的估計,並且被檢測到的點代表著點雲,這些點雲資料通過使用更高層次的演算法對點雲資料處理,如聚類、跟蹤、分類,以表示真實的世界。

使用mmWave SDK,對於以HWA或DSP為處理節點的裝置,會出現如下圖所示:在下圖中,綠色箭頭代表控制鏈路,紅色箭頭代表資料鏈路,藍色的塊是mmWave SDK元件,黃色的塊是自定義應用程式程式碼。軟體流/呼叫的層次結構通過嵌入框顯示。根據更高演算法的複雜性和它們的記憶體/mips的消耗,它們技能在mmWave裝置的內部實現,也可以完全在外部處理器上實現

在這裡插入圖片描述

不同的裝置提供不同的處理節點來實現mmWave處理,在xWR14xx有HWA引擎,xWR16xx有DSP C674x核心,xWR68xx和xWR18xx有HWA+DSP(C674x)。對於就具有多個處理節點的裝置,mmWave檢測處理鏈可以根據效能和可伸縮性的需要利用它們,下面是一個檢測處理鏈的例子,它使用各種資料處理單元(DPUs)執行典型的mmWave處理直到點雲。在mmWave裝置儲存器中,mmWave資料表示在不同的DPUs之間形成一個介面層。每個DPU可以使用HWA或DSP處理節點獨立實現—選擇是有usecase或處理節點在給定mmWave裝置上的可用性驅動
在這裡插入圖片描述

Typical Programming Sequence

上述的處理鏈可以被分成兩個不同的塊:射頻控制電路和資料路徑

RF Control Path

上面處理鏈中的控制路徑有下面的塊表示:
在這裡插入圖片描述
下面的一組圖顯示了設定典型控制路徑(init、config、start)的應用程式程式設計序列

Single RF Control(MSSRADARSS or DSSRADARSS)

在下面的這個應用中,RF控制路徑在主子系統(Cortex-R4F)或DSP子系統(C674x)上執行,應用程式可以在隔離模式下簡單地呼叫SDK中的mmwave api來實現大部分功能
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

Co-operative RF control((MSS+DSS)<->RADARRSS)

在這種情況下,控制路徑可以在“合作”模式下執行,其中RF控制API可以被任意一個域互換調換(但是需要維護API的序列)。這樣的部署可以由MSS啟動RF init和配置,並且在資料路徑配置完成後由DSS啟動。在下面的圖中,控制路徑完全執行在MSS上,MSS負責正確的配置雷達(RF)和DSS(資料處理)。
在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述

Data Path

mmwave檢測處理可以分為以下幾層應用程式碼,控制/管理層來操作資料處理元素,處理鏈將各個模組捆綁起來建立資料流,以及底層的資料處理模組和介面
在這裡插入圖片描述mmWave裝置提供了一些選項,說明如何使用裝置內的各種控制/處理節點來實現資料處理層。為了簡化跨這些部署型別的程式設計,data path manager(DPM)為應用程式提供了一個簡化的API結構,同時隱藏了任務間和處理器間通訊的複雜性。從下面的圖中可以看出,應用程式只需要呼叫各種DPM api來控制處理鏈(在下面的梯形圖中"藍色"中的函式呼叫),並在報告回撥中對這些api的結果進行重新操作。資料處理鏈(DPCs)也通過DPM嚮應用程式提供了一個標準化的API結構,並使用資料處理單元(DPUs)封裝了資料流的實現,同時提供了簡單的基於IOCTL介面來配置和觸發資料流。基於usecase和mmWave裝置硬體功能,應用程式可以從以下部署中進行選擇:

  1. DPC與控制核心執行在同一核上,應用程式可以在本地模式下的DPM對DPC進行控制
  2. DPC執行在與控制核心不同的另一個核上,應用程式可以通過DPM遠端控制DPC
  3. DPC被一分為二,應用程式可以通過分散式的DPM方式對DPC進行控制

下面的梯形圖顯示了init的流程,配置兩種不同形式(一種是在本地核心上啟動,另一種是在遠端核心上啟動),啟動觸發器,線性調頻脈衝/幀事件和停止觸發器。MSS和DSS的職責的選擇顯示為一個可能的示例–它們的角色可以根據應用程式的需要交換,這些梯形圖沒有顯示相應的MMWAVE/RF控制呼叫,以顯示RF控制和資料通路控制之間的獨立性,儘管如此,對於這兩種形式的控制元件,典型的應用程式將遵循以下流程:

  1. mmWave init和DPM init(順序無關)
  2. 用於DPC配置的mmWave配置和DPM IOCTL(順序無關)
  3. DMP啟動然後mmWave啟動(注意,這是推薦的,因為在mmWave啟動的實時幀/線性調頻脈衝H/W事件發生之前,DPC應該處於啟動狀態)
  4. mmWave停止,然後DPM停止(注意,這是推薦的,因為DPC應該在實時幀/線性調頻脈衝H/W事件由於mmWave停止而停止後停止)

Data processing flow with local domain control

在此部署中,執行實際資料處理鏈(DPC)的核心(MSS或DSS)也控制它。應用程式呼叫DPM api來進行init,呼叫資料處理IOCTL來進行配置、啟動和停止。DPM使用應用程式註冊的報告回撥函式從DPC報告狀態。應用程式為執行的DPM/DPC提供了一個執行上下文(任務)。DPC在這個執行上下文中嚮應用程式提供處理結果(點雲、跟蹤物件等)
在這裡插入圖片描述
在這裡插入圖片描述

Data processing flow with remote domain control

在這個部署中,資料處理鏈執行在一個選定的資料核心上,而它的控制元件存在於另一個核心上。控制核心和資料核心的應用程式碼呼叫DPM api來進行初始化和同步。控制核心呼叫資料處理IOCTL進行配置、啟動和停止api。在資料核上接收H/W事件。DMP在控制核和資料核上使用應用程式註冊的報告回撥函式從DPC報告狀態。DPC將處理結果(點雲、跟蹤物件等)返回到資料核心應用程式碼中,資料核心應用程式碼可以使用DPM傳送結果API將結果傳送到控制核心。
在這裡插入圖片描述
在這裡插入圖片描述

Distributed Data processing flow and control

在此部署中,資料處理鏈與控制元件一起在多個核之間拆分。兩個核心上的應用程式程式碼都呼叫DPM api來進行初始化核同步。任何一個核心都可以呼叫資料處理IOCTL來進行配置、啟動和停止api。在兩個核上,DPM使用應用程式註冊的報告回撥函式從DPC報告狀態。執行在一個核上的DPC的部分結果可以使用DPM relay result API傳遞到執行在其他核上的DPC上。DPC可以將最終的處理結果(點雲、跟蹤的物件等)返回到同一個核心的應用程式程式碼中,然後使用DPM傳送結果API將結果傳送到執行在其他核心上的應用程式中。下面的梯形圖顯示了將DPC拆分為兩個核的許多方法中的一種。
在這裡插入圖片描述
在這裡插入圖片描述

參考資料:

  1. 《MMWAVE SDK User Guide》