????? 本文檔是AM273x等毫米波雷達處理器SDK的配置和使用,主要參考TI的官方文檔《mmwave mcuplus sdk user guide》。這里僅摘取其中重要的部分,其余枝節可參考原文。
2 系統概覽
????????mmWave SDK分為兩個主要組件:mmWave套件和mmWave演示。
2.1. mmWave套件
????????mmWave套件是mmWave SDK的基礎軟件部分,將封裝這些較小的組件:
- 驅動程序(MCU PLUS SDK的一部分)
- DPL (MCU PLUS SDK的一部分)
- mmWaveLink和固件(設備固件包的一部分- DFP)
- mmWave API
- 數據處理層(管理器、處理單元)
- 板設置和Flash實用程序
2.2 mmWave演示
????????SDK提供了描述毫米波應用程序的各種控制和數據處理方面的演示。作為這些演示的一部分,在PC上提供了演示輸出的數據可視化。這些演示是提供給客戶的示例代碼,用于了解毫米波設備和SDK的內部工作原理,并幫助他們開始開發自己的應用程序。
2.3 外部依賴關系
????????構建mmWave SDK所需的所有工具/組件都包含在mmWave SDK安裝程序中。但是CCS (用于調試)不包含在mmWave SDK中。
????????請參閱mmWave SDK發布說明,了解這些外部依賴項的詳細信息以及支持的平臺列表。AM273x MCU+ SDK: Using SDK with CCS Projects (ti.com)
2.4 本文檔中使用的術語
使用的術語 | 評論 |
xWR | 這在整個文檔中都被使用,其中的章節/組件/模塊適用于AWR和IWR的變體 |
BSS | 這在源代碼中使用,在本文檔中也有少量用于表示RADARSS。它也可以互換稱為mmWave前端。注意,這個術語只在AWR294X和AWR2544 soc上下文中使用。 |
MSS | 主子系統。它也可以互換地稱為Cortex R5F。 |
DSS | DSP子系統。它也可以互換地稱為DSS或C66x核心。 |
3 開始上手
????????開始使用mmWave SDK的最佳方法是運行軟件包中提供的各種演示程序中的一個。TI mmWave EVM與mmWave演示一起預先閃現。但是,預閃演示的版本可能比本文檔中提到的SDK版本早。用戶可以按照本節升級/運行閃過的演示版本。演示(源代碼和預構建的二進制文件)放在mmwave_mcuplus_sdk_<ver>/ti/demo/<platform>/mmw/文件夾中。
毫米波demo
????????這個演示位于mmwave_mcuplus_sdk_<ver>/ti/demo/<platform>/mmw文件夾。毫米波演示展示了使用毫米波SDK(軟件開發工具包)中的驅動程序的SoC的一些雷達傳感和目標檢測功能。它允許用戶指定chirp配置文件,并實時顯示檢測到的對象和其他信息。這個演示的詳細說明可以在演示的docs文件夾中找到,可以通過mmwave_mcuplus_sdk_<ver>/docs/mmwave_sdk_module_document .html瀏覽。該演示提供檢測到的對象和其他實時信息,可以使用TI Gallery應用程序- 'mmWave demo Visualizer'進行可視化,托管在-https://dev.ti.com/gallery/view /mmWave /mmWave_Demo_Visualizer。運行在TI mmWave EVM上的mmWave Demo版本可以通過Visualizer應用中的HelpAbout菜單獲得。
????????另外,提供的級聯demo必須在級聯的硬件板上運行,由于AM2732開發板是和AWR2243一起使用,只有單個射頻芯片,無法運行cascade模式的demo,下圖是TI論壇的解釋,也可以參考4.6節的內容。
????????下面的部分描述了用演示啟動設備然后執行它的一般過程,這里只摘錄一部分,更詳細內容可參考原文檔。
3.1 硬件設置(EVM詳細信息)
????????下面的EVM圖顯示了一些重要的電纜連接、端口和交換機。注意“BOOT MODE”開關的位置,這用于在不同的啟動模式之間切換,如OSPI, UART, NOBOOT模式。
????????請參閱EVM用戶指南以了解EVM的啟動模式(毫米波設備的EVM用戶指南中的“感應電源(SOP)跳線”部分)。
3.1.1 AM273x
3.2 毫米波器件編程
????????以下是對毫米波設備及其提供的可編程內核的一些了解。有關詳細信息,請參閱相應毫米波設備的技術參考手冊。在使用CCS加載二進制文件和/或理解“入門”一節中存在的各種術語時,需要這些詳細信息。
3.2.1 AM273x
????????該器件具有一個cortex R5F內核和一個DSP C66x內核,可用于用戶編程,分別稱為MSS/R5F和DSS/ C66x。演示有兩個可執行文件——一個用于MSS,一個用于DSS,它們應該并發加載,以便演示工作。有關詳細信息,請參見運行演示部分。單元測試可能有MSS或DSS的可執行文件,或者兩者都有。這些可執行文件意味著在獨立操作中運行。這意味著可以在MSS R5F上加載并運行MSS單元測試可執行文件,而無需在DSS上下載任何代碼。
????????類似地,可以在DSS C66x上加載和運行DSS單元測試可執行文件,而無需在DSS上下載任何代碼。這方面的例外是在完整單元測試和數據路徑管理器(DPM)單元測試下的毫米波單元測試。
4.6 如何運行2片級聯應用(僅適用于AM273X + 2xAWR2243 EVM)
????????預構建的二進制文件(僅限R5F)可在mmwave_sdkmmwave_mcuplus_sdk_<ver>/ti/utils/test/cascade/am273x中獲得。2片級聯應用支持捕獲原始ADC數據使用DCA1000 EVM。
????????1.級聯EVM上電。
????????2.連接R5F核,下載“am273x_cascade_mss.xer5f“應用,不啟動執行。
????????3.從mmwave_sdkmmwave_mcuplus_sdk_/tools/data_capture拷貝AM273X_Capture.json文件。
????????4.在應用啟動執行前,打開C:/ti/mmwave_studio_03_00_00_14/mmWaveStudio/PostProc的命令提示符,然后發出以下命令。
?? ????????a. DCA1000EVM_CLI_Control.exe fpga AM273X_Capture.json
?????????? b. DCA1000EVM_CLI_Control.exe start_record AM273X_Capture.json
?? ????????c. AM273X_Capture.json file configures to save the captured LVDS data at "C:\ti\data_capture\am273x__Raw_0"
????? 5.應用啟動執行。
5 毫米波SDK深度解析
5.1 系統部署
????? 典型的毫米波應用程序將執行以下操作:
- 通過mmaveLink實現射頻前端的控制和監控
- 通過標準外設傳輸外部通信
- 部分雷達數據處理采用DSP
????????毫米波傳感器的典型客戶部署如下圖所示:
????????1.appimage (MSS + DSS代碼)從連接到毫米波設備的串行閃存(通過QSPI)下載;
????????2.遠程實體的可選高級控制;
????????3.發送低速數據輸出(檢測到的對象)到遠程實體.
圖5-4 自主毫米波傳感器(獨立模式)
????????上述部署可以使用毫米波SDK及其分層結構中的組件來實現,如下所示:
圖5-5 SDK分層框圖
5.2 典型毫米波雷達處理鏈
????????下圖顯示了一個典型的毫米波雷達處理鏈,它接收ADC數據作為毫米波前端的輸入,然后執行距離和多普勒FFT,然后使用CFAR進行非相干檢測。最后利用三維FFT估計角度,檢測到的點代表點云數據。然后,點云數據可以使用更高層的算法(如聚類、跟蹤、分類)進行后處理,以表示真實世界的目標。
圖5-6 典型毫米波雷達處理鏈
????????在以HWA為處理節點的設備上,使用mmWave SDK可以實現如下圖所示的上述處理鏈。下圖中,綠色箭頭表示控制路徑,紅色箭頭表示數據路徑。藍色塊是毫米波SDK組件,黃色塊是自定義應用程序代碼。軟件流/調用的層次結構用嵌入框表示。根據高級算法(如聚類、跟蹤等)的復雜性及其內存/MIPS消耗,它們可以部分在毫米波設備內實現,也可以完全在外部處理器上運行。
圖5-7 使用毫米波SDK組件的典型的毫米波雷達處理鏈
????????每個毫米波器件提供不同的處理節點來實現毫米波處理。AM273X具有HWA+DSP(C66x)。對于具有多個處理節點的設備,毫米波檢測處理鏈可以根據性能和可擴展性的需要利用它們。下圖是一個檢測處理鏈的示例,它使用各種數據處理單元(DPU)來執行典型的毫米波處理直至點云。毫米波設備存儲器中的毫米波數據表示形成了各個DPU之間的接口層。每個DPU都可以使用HWA或DSP處理節點獨立實現——選擇取決于用例或給定毫米波設備上該處理節點的可用性。
圖5-8 使用毫米波SDK的可擴展數據處理鏈
????????請參閱mmwave_mcuplus_sdk_<ver>\ti\demo\<platform>\mmw文件夾中的代碼和文檔,了解有關如何使用mmWave SDK組件實現此鏈的更多詳細信息和示例代碼。
5.3 典型編程順序
????????上述處理鏈可以分為兩個不同的塊:射頻控制路徑和數據路徑。
5.3.1 射頻控制路徑
????????上述處理鏈中的控制路徑由下列模塊描述。
圖5-9 典型毫米波雷達控制流
????????下面的一組圖顯示了設置典型控制路徑(init、config、start)的應用程序編程順序。這是一個簡化的高級圖,以突出顯示主要的軟件API,可能不會顯示所有的處理元素和調用流。有關此調用流的示例實現,請參閱mmwave_mcuplus_sdk_<ver>\ti\demo\<platform>\mmw文件夾中的代碼和文檔。
5.3.1.2 單射頻控制(MSSRADARSS或DSSRADRSS)
????????在這種情況下,射頻控制路徑運行在主子系統(Cortex-R5F)或DSP子系統(C66x)上,應用程序可以簡單地以隔離模式調用SDK中的毫米波API來實現大部分功能。
圖5-10 毫米波隔離模式:詳細控制流(初始化順序)
圖5-11 毫米波隔離模式:詳細控制流(配置順序)
5.3.1.3 協同射頻控制((MSS+DSS)<->RADARSS)
????????在這種情況下,控制路徑可以以“合作”模式運行,其中RF控制API可以被兩個域互換調用(但需要維護API的順序)。這樣的部署可以讓射頻初始化和配置由MSS發起,并且在數據路徑配置完成后由DSS發起啟動。在下面的圖中,控制路徑完全運行在MSS上,MSS負責正確配置RADARSS (射頻)和DSS(數據處理)。毫米波單元測試提供了這種合作模式的示例實現。
圖5-13 毫米波協同模式:詳細控制流(初始化順序)
圖5-14 毫米波協同模式:詳細控制流(配置順序)
圖5-15 毫米波協同模式:詳細控制流(啟動順序)
5.3.2 數據路徑
????????毫米波檢測處理可以分為以下應用代碼層,控制/管理層操作數據處理元素,處理鏈連接各個模塊創建數據流和低層數據處理模塊和接口。
圖5-16 典型毫米波檢測處理層
????????毫米波設備提供了一些關于如何使用設備內的各種控制/處理節點來實現數據處理層的選項。為了便于跨這些部署類型編程,數據路徑管理器(DPM)向應用程序提供了簡化的API結構,同時隱藏了任務間和處理器間通信的復雜性。從下圖中可以看出,應用程序只需要調用各種DPM API來控制處理鏈(在下面的梯形圖中看到“藍色”的函數調用),并在報告回調中對這些API的結果做出反應。數據處理鏈(DPC)也通過DPM向應用程序提供了一個標準化的API結構,并使用數據處理單元(DPU)封裝了數據流的實現,同時提供了基于IOCTL的簡單接口來配置和觸發數據流。基于用例和毫米波設備硬件功能,應用程序可以選擇以下部署之一:
- DPC與控制核心在同一核心上運行,應用程序可以通過DPM在本地模式下控制DPC。(見下面的本地域配置和處理圖)
- DPC運行在與控制核心不同的另一個核心上,應用程序可以通過DPM遠程控制DPC。(參見下面的遠程域配置和處理圖)
- DPC分為兩個核心,應用程序可以在分布式模式下通過DPM控制DPC。(見下圖分布式域配置及處理圖)
????????下面的梯形圖顯示了初始化、兩種不同形式的配置(一種在本地核心上啟動,另一種在遠程核心上啟動)、啟動觸發器、chirps/frame事件和停止觸發器的流程。MSS和DSS職責的選擇是一個可能的例子——它們的角色可以根據應用程序的需要互換。這些梯形圖沒有顯示相應的毫米波/射頻控制調用,以顯示射頻控制和數據路徑控制之間的獨立性。盡管如此,典型的應用程序將遵循以下兩種形式的控制流程:
- mmWave初始化和DPM初始化(順序不重要)
- 毫米波配置和DPM IOCTL的DPC配置(順序不重要)
- DPM啟動,然后毫米波啟動(注意,建議這樣做,因為DPC應該在毫米波啟動導致的實時幀/chirp H/W事件發生之前處于啟動狀態)
- 毫米波停止,然后DPM停止(注意,建議這樣做,因為DPC應該在實時幀/chirp H/W事件由于毫米波停止而停止后停止)
5.3.2.2 具有本地域控制的數據處理流程
????????在此部署中,運行實際數據處理鏈(DPC)的核心(MSS或DSS)也控制它。應用程序調用DPM API進行初始化,數據處理IOCTL進行配置,啟動和停止。DPM使用應用程序注冊的報告回調函數從DPC報告狀態。應用程序為DPM/DPC運行提供了一個執行上下文(任務)。DPC將處理結果(點云、跟蹤對象等)提供給這個執行上下文中的應用程序。
圖5-17 具有本地域控制的數據處理流程(初始化/配置)
圖5-18 具有本地域控制的數據處理流程(啟動/chirp/幀/停止)
5.3.2.3 具有遠程域控制的數據處理流程
????????在此部署中,數據處理鏈在選定的數據核心上運行,而它的控件存在于另一個核心上。控制核心和數據核心上的應用程序代碼調用DPM API進行初始化和同步。控制核心調用數據處理IOCTL來配置、啟動和停止API。H/W事件在數據核上接收。DPM使用應用程序在控制核和數據核上注冊的報告回調函數從DPC報告狀態。DPC將處理結果(點云、跟蹤對象等)返回給數據核心應用程序代碼,數據核心應用程序代碼可以使用DPM發送結果API將結果發送給控制核心。
圖5-19 具有遠程域控制的數據處理流程(初始化/配置)
圖5-20 具有遠程域控制的數據處理流程(啟動/chirp/幀/停止)
5.3.2.4 分布式數據處理流程和控制
????????在此部署中,數據處理鏈與控件一起拆分為多個核心。兩個核心上的應用程序代碼調用DPM API進行初始化和相互同步。任何一個核心都可以調用數據處理IOCTL來配置、啟動和停止API。DPM使用兩個核心上的應用程序注冊的報告回調函數從DPC報告狀態。可以使用DPM中繼結果API將運行在一個核心上的DPC的部分結果傳遞給運行在另一個核心上的DPC。DPC可以將最終的處理結果(點云,跟蹤對象等)提供給同一核心的應用程序代碼,然后該代碼可以使用DPM發送結果API將結果發送給運行在其他核心上的應用程序。下面的梯形圖顯示了將DPC分成兩個核心的眾多方法之一。
圖5-20 分布式數據處理流程和控制(初始化/配置)
圖5-20 分布式數據處理流程和控制(啟動/chirp/幀/停止)