【正文】
所使用的 buffer 和描述符,并關(guān)閉與其相關(guān)的發(fā)送隊列和接收流。? 隨后,調(diào)用 API 函數(shù)“HC_FftcClose() ”,關(guān)閉由當(dāng)前 FFTC 應(yīng)用程序通過“HC_FftcOpen()”打開的 FFTC 例程。? 最后釋放驅(qū)動程序,調(diào)用 API 函數(shù)HC_Fftc_deInit()。當(dāng) FFTC 例程的計數(shù)器達(dá)到零時,驅(qū)動關(guān)閉 FFTC 多核導(dǎo)航儀,并復(fù)位 FFTC engine 的狀態(tài)。此時,系統(tǒng)中沒有可以供應(yīng)用程序使用 FFTC 多核導(dǎo)航儀,除非對 FFTC 再次進(jìn)行初始化。 其它? 對于某個 FFTC 隊列的寄存器參數(shù),可以通過調(diào)用 API 函數(shù)HC_FftcCfgParams 配置該隊列的目標(biāo)隊列寄存器、縮放和移位寄存器、循環(huán)前綴寄存器 控制寄存器、LTE頻移寄存器。? 需要清除 FFTC 錯誤中斷使能和設(shè)置寄存器中相應(yīng)的各種中斷使能位時,調(diào)用 API 函數(shù)HC_FftcDisableErrInt。? 使能錯誤狀態(tài)位時,調(diào)用 API 函數(shù)HC_FftcEnableErrInt.? 讀取 FFTC 塊的狀態(tài)寄存器相關(guān)信息時,通過調(diào)用 API 函數(shù)HC_FftcGetBlockStatus獲得。? 獲取 FFTC 的相關(guān)錯誤信息時,調(diào)用 API 函數(shù)HC_FftcGetErrInfo。? 配置 DFT 塊大小列表時,調(diào)用 API 函數(shù)HC_FftcCfgDftSizeList 。 API 調(diào)用流程對于一個 FFTC 應(yīng)用程序,主要包括對 FFTC 驅(qū)動的使能,初始化, FFTC 發(fā)送端、接收端處理,以及最后的資源關(guān)閉與釋放。FFTC 應(yīng)用對驅(qū)動 API 的調(diào)用過程如圖 61 所示。11A p p I n i t當(dāng)前 c o r e 是否為m a s t e r c o r e ?H C _ F f t c I n i t ( )H C _ F f t c O p e n ( )H C _ F f t c T x O p e n ( )H C _ F f t c R x O p e n ( )H C _ F f t c S e n d ( )H C _ F f t c C l o s e ( )H C _ F f t c R e c v ( )H C _ F f t c R x C l o s e ( )H C _ F f t c T x C l o s e ( )F F T R x O p e n f a i l e d ?F F T T x O p e n f a i l e d ?Y E SN OF F T s e n d f a i l e d ?F F T r e c e i v e f a i l e d ?Y E SY E SY E SY E SH C _ F f t c E n a b l e ( )N ON ON ON O圖 61 FFTC API 調(diào)用步驟128. 測試 單元測試分別對每一個 FFTC 對外提供的 API 進(jìn)行,當(dāng)函數(shù)運(yùn)行正確時返回 0、錯誤時返回 1,該單元測試主要是驗證在給正確和錯誤的輸入時能否返回預(yù)期的值。 功能測試FFTC 協(xié)處理器的功能測試,是利用 FTTC 的驅(qū)動的 API 在 C6670 多核情況下完成FFT 運(yùn)算的過程。有前面章節(jié)可知:一個進(jìn)程號 process ID 對應(yīng)可得到 FFTC 例程號,發(fā)送端使用的隊列號,接收端使用的隊列號,對應(yīng)于接收隊列的中斷 eventId,發(fā)送端使用的收集器通道號,測試中取 process ID 為 3 來對功能進(jìn)行驗證。當(dāng) process ID=3 時,每個核使用的 FFTC 實例為 FFTC_A,4 個核共用一個發(fā)送隊列。對于核 0:使用的接收隊列號為 704,對應(yīng)的中斷事件號為 48,accumulation channel number 為 0,該核輸出結(jié)果發(fā)往的目標(biāo)隊列號為 705,即核 1。對于核 1:使用的接收隊列號為為 705,中斷 eventId 對應(yīng)為 48,accumulation channel number 為 1,該核輸出結(jié)果發(fā)往的目標(biāo)隊列號為 706,即核 2。對于核 2:使用的接收隊列號為為 706,對應(yīng)的中斷事件號為 48,accumulation channel number 為 2,該核輸出結(jié)果發(fā)往的目標(biāo)隊列號為 707,即核 3。對于核 3:使用的接收隊列號為為 707,中斷 eventId 對應(yīng)為 48,accumulation channel number 為 3,該核輸出結(jié)果發(fā)往的目標(biāo)隊列號為 704,即核 0。測試中,F(xiàn)FT 數(shù)據(jù)的樣點為 16,F(xiàn)FT 塊數(shù)為 5,描述符類型為 Host。測試過程如下: 首先由核 0 先做系統(tǒng)級初始化。接著每個核都執(zhí)行如下操作: ? 建立并打開 FFTC 驅(qū)動。 ? 打開發(fā)送隊列 1 并建立默認(rèn)的配置。 ? 配置接收 flow。 ? 使用 Host 類型的描述符建立請求和結(jié)果緩存。 ? 發(fā)送 FFTC 請求。 ? 采用中斷機(jī)制從 FFTC 中接收 FFT 計算結(jié)果。 ? 分析驗證接收到的 FFT 結(jié)果是否正確。對于 FFT 的數(shù)據(jù),測試中采用 16bit 實部,16bit 虛部的復(fù)數(shù)形式,使用fftc_pare_exampleCfg()函數(shù)將所需要的 FFT 數(shù)據(jù)從已定義的測試數(shù)據(jù) hc_inputConfig_16[]中讀入,在通過 HC_FftcSend()API 發(fā)送至 FFTC 進(jìn)行處理。FFTC 處理后的結(jié)果會通過 HC_FftcResv()API 送入到指定的核中,其中 HC_FftcResv()API 完成了對接收到的 FFT 計算結(jié)果的驗證工作。經(jīng)驗證,此配置可以實現(xiàn)正確的 FFT 處理過程。139. 軟件對外接口 對外接口 參見《FFTC 驅(qū)動軟件用戶使用手冊 .ch