前段時間一直忙一個項目,同時在生活上時時提防和抵抗中國地溝油、國外核心轉基因調和油、大豆油、色拉油、大米玉米、可怕的喂藥魚、藥水泡農藥噴無蟲咬的青菜,是以沒時間打理自己的部落格,讓開發攻略停頓了一段時間。還好,這個世界上還有很多善良和正義的人們,值得我們繼續戰鬥下去。
DAVINCI DSP的開發環境分兩部分來講,一是單核DSP運作的環境,二是和ARM建立互相通信DSP SERVER機制。本片先從簡單的單核DSP運作環境說起,因為這個是基礎的必須的東西,同時适合DM643X、DM644X平台。說到DSP的開發環境,當然離不開CCS,仿真器安裝調試等步驟,這些很多網友都發表過不錯的文章。本人重點介紹DM6446的DSP開發環境。
一、CCS安裝介紹
目前CCS4.0已經出來,網上有篇文章《CCS V4+SEED仿真器基本操作指南.pdf》的介紹,大家可以了解一下,功能比CCS3.3強大多了,而且配置也比較簡單。但鑒于國内主流開發DAVINCI的CCS版本是3.3,是以在這裡具體介紹一下。
購買合衆達仿真器或聞亭仿真器,都會提供TI CCS3.3,網上也有下載下傳,安裝之前,建議把各種防毒軟體先關閉掉,然後運作檔案包裡的setup.exe,會提示你的安裝路徑選擇和平台選擇界面,見下圖:
如果不是開發OMAP 晶片、C2000、C5000平台晶片,這些可以參考上圖,把他們 “X” 掉,這樣CCS安裝就更省空間。TMS470和C6000平台一定要選,TMS470包括ARM9的驅動和配置,C6000包括C64、C64+、C67。然後點選“Next”,按提示安裝下去。
二、仿真器驅動安裝介紹
選用仿真器,一般就是合衆達SEED和聞亭了,開發DAVINCI平台,都必須用到560型仿真器,510是不行的,不知道TI當時是怎麼想的,仿真器如此貴,也不便于DAVINCI平台的推廣。三年前PCI 560(8000多) 和USB 560(上萬元)都非常貴,後來推出560 PLUS一般都要4000左右。購買兩家公司的仿真器都會提供安裝CD光牒,裡邊有詳細的安裝介紹,這裡不累贅。
三、建立DSP BIOS例子工程
1、 配置CCS
CCS安裝和仿真器驅動(本人買的是SEED 560PLUS)結束後,輕按兩下桌面Setup CCStudio v3.3,進入配置界面,見下圖
主要選擇C64+平台,xds560,開發DM6437,就選擇C6455 XDS560這一項,如果開發開發DM6446,就選擇DM6446 XDS560這一項,然後點選下面“Add”,這樣在配置My System左邊出現平台資訊。
右鍵點選“ARM9_0”,選擇“屬性properties”,進入,在GEL file輸入dm644x_dvevm_arm.gel,
接着,點選“C6400PLUS_0”,選擇“屬性properties”,在GEL file輸入dm644x_dvevm_dsp.gel。一般買開發闆都會提供相應的GEL 檔案,最後點選左下邊“Save&Quit”,儲存設定。
為了驗證CCS安裝、仿真器安裝和配置是否正确,首先插好仿真器JTAG,如果闆子有程式,建議把DM6446 BOOT MODE設定為UART模式,目的讓闆子發送BOOTME指令,闆子沒程式也會發送BOOTME,在這種模式下,才能連接配接JTAG。運作桌面的CCStudio v3.3,見下圖,
給闆子上電,確定上面的安裝和配置一切OK,右鍵點選ICEPICK_C_0,“Connect Device”能連接配接上的話,表明仿真器等安裝沒問題,見下圖。
連接配接裝置
連接配接ARM
Open ARM9_0,設定DSP從DDR BOOT
連接配接DSP
Open DSP
以上連接配接如果都OK的話,表明仿真環境已經建立好,這時可以做DSP開發工作了。不過在進行工程開發之前,補充一點東西,有些朋友喜歡更新較新的DSP/BIOS包,DSP/BIOS是一個實時的作業系統,比如bios_setupwin32_5_33_06.exe,或者開發DM6437平台,則需要安裝DM6437_DVSDK、NDK等開發包。CCS3.3自帶的DSP/BIOS版本比較低,是5.31.02,安裝新的DSP/BIOS包後,要對新的BIOS版本進行設定,點選菜單上的“Help”的“About”就會彈出下圖:
點選“Component Manager”,見下圖,
選擇新的BIOS版本,從菜單上“Save”,并“OK”退出。關閉CCS,然後再重新啟動CCS,新版本的BIOS就設定好了。
2、 工程建立
通過以上的步驟,我們可以開發DSP程式了,DSP程式分兩種開發模式,算法LIB的開發和系統工程開發,或者把LIB的源碼一起放到工程統一開發。
點選DSP界面菜單“Project”的“New”,出現以下界面,
如果是系統工程開發,輸入工程名字,選擇工程儲存路徑,點選Finish,就OK了。如果是算法LIB開發,則按下圖選擇.lib
進入工程界面
這裡邊的工程配置有很多學問,涉及到DSP/BIOS的配置和設計,程式運作效率(優化),大部分DSP的書籍都有介紹,如果這裡要詳細一步一步描述,則太浪費時間,我們在這裡點到為止,重點介紹DM6446 DSP端開發。右鍵點選工程,dm6446_example.prj,下拉有Build Options,這裡有Debug模式和Release模式,運作程式時,Debug模式可以設定斷點等一些功能,但運作效率很低。而Release則是正式釋出版本模式,對程式做了一些優化,包括流水線等,不能設定斷點。我們以Release模式為例,見下三圖,
其他設定保持預設的就可以了,更完善的功能,則需要自己修改,這方面得書籍和網文有很多,CCS菜單Help裡也有很多描述詳細的文檔。
設定完工程配置後,右鍵點選Soure,添加源碼檔案,一般就是*.C、*.CPP、*.asm、*.sa檔案,然後添加相應的*.cmd檔案,有例子可參考。Include不需要添加,編譯的時候會自動連結到工程配置指定的路徑搜尋。Libraries則需要添加(\CCStudio_v3.3\C6000\cgtools\lib\)裡的rts64plus.lib。還有其他LIB,比如自己開發的*.lib,c6400\dsplib\lib下的dsp64x.lib,c6400\imglib\lib下的img64x.lib,EDMA3 LIB,這些根據工程和算法程式需要而添加。
對于DM6446産品開發,無論采用TI DSP SERVER機制,還是獨立DSP運作模式,都離不開DSP/BIOS,下圖是新添加DSP/BIOS的方法,當然,你也可以直接使用開發闆提供商提供的例子,或從網上下載下傳相關帶DSP/BIOS的例子。選擇ti.platform.evmDM6446,
選擇“Global Settings”,右鍵進行設定,見下圖,DSP工作頻率,看情況設定,商業級DM6446采用594M,其他設定保持不變。
還是在同一個界面,選擇64PLUS,關鍵的地方時L2CFG,就是定義L2内部存儲器CACHE的大小,同時使能MAR 128-159,這些L1D、L2的存取速度比DDR2快多了,可惜這兩個片上記憶體很小,不能把很多程式段定義到這些片上記憶體運作。
同時,因為上面使用了32K的L2,則MEM下面的IRAM處,右鍵選擇屬性配置IRAM的len為32K,否則儲存BIOS配置檔案*.TCF時會出現錯誤,同樣設定DDR或配置設定新的記憶體段(片内和片外),段的位址和長度一定要一一對應,銜接好,不能越界。
然後我們對MEM進行設定,同樣右鍵選擇MEM-Memory Section Manager,
第一個參數一般為0x0004,第二個參數預設是0x400,太小,我們加大一點,0x4000、0x8000、0x10000都可以。“No Dynamic Memory heaps”,不選,這樣就允許我們在程式裡動态申請記憶體,剛開始是不出現DDR2的,你要先“确定”,再右鍵選擇DDR,入下圖,“create a heap in this memory”一定要選中,然後heap的大小定義為0x01000000,16M,這個大小自己定義。這裡設定完後,回到上圖,DDR2就出現在下拉條裡。這時候,上圖的BIOS data BIOS code這些設定都可以定義到DDR記憶體上運作都可以。還有BIOS裡的BUF、SYS - System Settings、Instrumentation、Scheduling、Synchronization、Input/Output
介紹到這裡,編譯自己建的工程是沒問題了,CCS仿真也可以運作程式,有關Instrumentation的設定、Scheduling、Synchronization、Input/Output這些在這裡就不用累贅了,要認真講完,完全可以寫一本書,其實書店很多DSP的書籍都有介紹,網上各大DSP的論壇也有人舉例如何添加多TSK、PRD、HWI、SWI、SEM、MBX等應用。
四、OUT檔案的處理
生成的OUT檔案,可以使用HEX64産生BIN檔案,然後通過ARM,位元組寫個DSP BOOT的程式,設定控制DSP BOOT的寄存器,就可以把DSP給運作起來,這是一種獨立運作DSP的方法,第二種就是下篇要介紹的TI DSP SERVER機制,如何把OUT檔案和Codec Engine結合起來。
五、聲明
寫了這幾篇開發攻略的文章,很多朋友看到本人的QQ後,都把本人的QQ加上,本人的QQ是用來和客戶洽談生意,并給購買本人産品的客戶提供技術支援。沒有這個條件的朋友最好通過部落格留言,大家一起讨論不是更好,因為本人不是老師,也不是職員,很多時間要為自己的生活奔波。如果大家對DM6446核心闆、DM6437核心闆,開發闆或者項目合作感興趣,可以聊聊。我們的目的就是輔助客戶快速設計自己的産品,便于搶占市場。
本文轉自 zjb_integrated 51CTO部落格,原文連結:http://blog.51cto.com/zjbintsystem/304631,如需轉載請自行聯系原作者