1. 程式人生 > >(多核DSP快速入門)4.編譯測試多核DSP例項Vlfft

(多核DSP快速入門)4.編譯測試多核DSP例項Vlfft

原創文章       Vlfft是由TI官網提供的一個大尺寸快速傅立葉變換的多核DSP例項,其下載地址如下:       這個例項是許多同學多核DSP的入門例項,例項內也提供了簡單的安裝編譯教程,不過並沒有講得很清楚,在編譯的過程中還是會出現很多問題,本節主要提供一個詳細的Vlfft安裝編譯步驟,但是由於這個例項涉及了較多關於多核通訊的內容,所以這裡並不詳細解釋程式碼原理,如果後面有時間的話,以後再具體分析這個例項。 一、安裝MCSDK和STMlib 這MCSDK元件是Vlfft必須的,不過STMlib卻是不必須的。 (1)MCSDK的安裝 MCSDK ( Multicore Software Development Kit )是一個多核的軟體開發元件,它主要是通過同BIOS協同開發,裡面提供了比如PDK等工具,與CCS5.2相容的MCSDK應該是2.0版本,而我使用的是2.1版本,會出現一個警告,但也是可以執行的。

      下載MCSDK後,直接點選安裝,安裝目錄同CCS在同一資料夾下,如D:/ti,在安裝元件上,可以全部選擇啦。
      完成安裝,重新啟動CCS,檢視相關元件是否安裝到CCS中去(一般都自動匯入了),如果不是,請手動匯入。
(2)STMlib安裝         STMlib(System Trace)是一個系統追蹤元件,Vlfft這個工程支援2種配置,一種是純VLFFT運算工程(預設模組,也可以不安裝STM),還有一種是集成了STM 模組的VLFFT工程,即在Build option中的build variables中定義了STM_LIBRARY_ROOT,如果未安裝STM lib或者STM的路徑不對,則可能編譯報錯。         STMLib安裝只需要將安裝解壓跟CCS放到同一個資料夾就可以了(如D:/ti) 二、Vlfft的配置
(1)將Vlfft專案的整體資料夾放到MCSDK的demo資料夾下:如\mcsdk_2_01_02_06\demos (2)CCS中匯入專案 在Project Explorer中右擊選擇Import...,選擇匯入一個已存在的CCS專案
專案位置中輸入Vlfft資料夾所在地址,此時在Vlfft資料夾下,發現了兩個專案檔案(6678版本和6670版本)這裡選擇6678版本就可以了。
如果是選擇6670版本,還需要開啟vlfftconfig.h(vlfft\vlfftInc資料夾下),把常量EIGHT_CORE_DEVICE設為0,常量FOUR_CORE_DEVICE設為1,(預設是6678,與個這個設定剛好相反) TIPs:
a).關於FFT的大小設定,將vlfftconfig.h中的如下巨集中的一個設為1,其他為0
b). DSP核心的數目設定,選擇1,2,4,8個設定
(3)BIOS檔案的配置 vlfft_evmc6678l.cfg檔案是BIOS檔案的配置檔案,下一節會具體解釋如何使用BIOS,這裡直接雙擊點開,出現如下:          BIOS的設定提供了介面和原始碼編輯兩種選擇,這裡我們點選Source,選擇原始碼編輯 如果是Debug模型,需要將.cfg原始碼中的92~96行的程式碼註釋,而Release模式,則不作改變。
此時點選小錘子進行Debug模式編譯,出現如下錯誤,這裡的警告主要是MCSDK版本不配,關係不大。
錯誤主要是placement fails for object
這裡提示.const所在段L2SRAM太小,記憶體段分配太小,需要開啟連結命令檔案.cmd(在Debug/configPkg/Linker.cmd)檢視:
這裡的L2SRAM只有156kb,實在太小,於是我們可以增加其大小到4M左右,但是我們不能直接到.cmd檔案上修改,因為這個檔案是由BIOS配置檔案.cfg自動生成的,所以即使我們在.cmd檔案中修改了,最後還是會出現原來的錯誤。 (3)在BIOS檔案中修改記憶體設定
SYS/BIOS是DSP的一個實時作業系統,其給DSP提供許多API函式和操作元件,CSS提供了介面式的配置方法(通過System Overview)可以開啟,這裡的Task、Swi、Hwi、Memory等都是BIOS的相關元件,這裡綠色小勾表明了當前元件已經被安裝到了BIOS中了,現在我們需要重新分配記憶體,所以我們點開Memory元件,選擇Program模式
在Program中選擇View,找到cpu中的MemoryMap中修改L2SRAM的大小和L2SRAM_1的起始地址,這裡需要注意的是雖然錯誤只是提示L2SRAM的太小,但由於L2SRAM和L2SRAM_1相鄰,所以如果修改L2SRAM的大小,就必然也要修改L2SRAM_1的起始地址。

還有一種更為便捷的方法是直接在.cfg的原始檔(Source)上修改,這裡在檔案末尾新增如下:
var execontextInstance0 = xdc.lookup('xdc.platform.ExeContext.Instance#0'); execontextInstance0.memoryMap["L2SRAM"].len = 4194304; execontextInstance0.memoryMap["L2SRAM_1"].base = 12582912; 此時再次點選編譯,完成編譯
三、Vlfft的除錯結果 (1)匯入目標配置檔案.ccxml,選擇C6678 Device Functional Simulator, Little Endian的目標配置檔案 (2)將所有的(8個)核Group,點選執行,獲得結果: 四、集成了STM 模組的VLFFT工程 前面我們安裝了STMLib,這一節介紹如何使用STMLib (1)在Build option中的build variables中定義了STM_LIBRARY_ROOT
(2)在Linked Resources中修正STM_LIBRARY_ROOT的地址
做完上面兩件事後,我們點選專案檔案中的STMhelper.c,發現現在是可以開啟的,說明STMlib已經成功匯入了 Vlfft程式碼下載