ccs3.3中建立-編譯-調(diào)試工程及常見(jiàn)錯(cuò)誤講解.doc_第1頁(yè)
ccs3.3中建立-編譯-調(diào)試工程及常見(jiàn)錯(cuò)誤講解.doc_第2頁(yè)
ccs3.3中建立-編譯-調(diào)試工程及常見(jiàn)錯(cuò)誤講解.doc_第3頁(yè)
ccs3.3中建立-編譯-調(diào)試工程及常見(jiàn)錯(cuò)誤講解.doc_第4頁(yè)
ccs3.3中建立-編譯-調(diào)試工程及常見(jiàn)錯(cuò)誤講解.doc_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Part1:ccs3.3中新建一個(gè)DM6437的示例工程1、連接好板子,將板子上仿真器的usb口插到電腦上,啟動(dòng)ccs后,ccs會(huì)去獲取板子信息并在打開(kāi)的文件目錄中自動(dòng)生成一個(gè)文件,如圖所示:筆者使用的是6437的板子2、用file-new選擇建立一個(gè)dsp/bios文件在打開(kāi)的對(duì)話框中選擇你使用的板子的型號(hào),如下圖:3、 這個(gè)時(shí)候ccs為我們建立了一個(gè)bios文件,以圖表顯示,里面按照所選板子的類型添加相應(yīng)的硬件和其他模塊。保存這個(gè)文件到工程目錄下先,文件類型為tcf。4、 保存這個(gè)文件的同時(shí),ccs按照bios中的配置在當(dāng)前目錄下自動(dòng)生成了一個(gè)cmd文件。此時(shí)將tcf文件和這個(gè)cmd文件同時(shí)添加到工程中,使用5、 然后需要修改一個(gè)編譯選項(xiàng),點(diǎn)擊下圖所示選項(xiàng)進(jìn)去:6、 打開(kāi)后在編譯選項(xiàng)對(duì)話框總會(huì)看到一個(gè)命令行,其中最后一句是-mv6400,因?yàn)橛玫氖?467的板子,所以這個(gè)選項(xiàng)要修改成 -mv64+;否則編譯會(huì)報(bào)錯(cuò):編譯選項(xiàng)不正確;但并非所有類型的板子都要改,這個(gè)只針對(duì)型號(hào)為64+的板子。7、 file-new-source file建立一個(gè)c源文件,保存并加入到工程中。以下是示例程序:#include #include #include Int main(Int argc, String argv)/main函數(shù)的類型必須這樣寫(xiě) unsigned int i; unsigned int sum=0; for(i = 0; i warning: entry point symbol _c_int00 undefinedundefined first referenced symbol in file- -_printf E:WorkContentprojectExampleTestDebugtest.obj error: symbol referencing errors - ./Debug/Test.out not built2)如果想要printf正確輸出信息,cmd文件中必須指定heap的大小,即cmd文件這樣寫(xiě):-c-stack 0x00001000 /* Stack Size */-heap 0x00001000 /* Heap Size */前面這三項(xiàng)必不可少M(fèi)EMORY L2RAM: o = 0x10800000 l = 0x00020000 DDR2: o = 0x80000000 l = 0x10000000SECTIONS .bss L2RAM .cinit L2RAM .cio L2RAM .const L2RAM .data L2RAM .far L2RAM .stack L2RAM .switch L2RAM .sysmem L2RAM .text L2RAM .ddr2 DDR2另外,我在使用dsp/bios自動(dòng)生成的cmd文件進(jìn)行編譯的時(shí)候,不會(huì)報(bào)錯(cuò)誤或警告,但是printf就是不能輸出任何東西,后來(lái)解決了,具體解決方法見(jiàn)后面的:“ccs編譯中常見(jiàn)的編譯錯(cuò)誤及解決方法”的第4部分8、 compile-rebuild all;無(wú)錯(cuò)誤提示。此時(shí)項(xiàng)目就建立并編譯好了。下面就要把程序加載到板子上運(yùn)行了。9、 首先要先連接板子,點(diǎn)擊debug-connect10、 如果連接成功,會(huì)看到下面的效果:未連接時(shí):連接成功后:連接成功的同時(shí),ccs會(huì)打開(kāi)一二Disassembly窗口,如下圖:11、 加載程序吧,程序編譯后,會(huì)在當(dāng)前目錄的Debug目錄下生成一個(gè)*.out的文件,此例中的文件是“6467EXAM.out”;通過(guò)file-load Program加載這個(gè)文件加載后,Disassembly窗口中會(huì)有所變化,如下圖:12、 Debug-Run去吧提示:1 Ccs的項(xiàng)目不支持創(chuàng)建在中文目錄下。2 項(xiàng)目移動(dòng)到其他文件夾下面時(shí),需要修改*.pjt中的Project SettingsProjectDir=E:WorkContentprojectExample6467EXAM 到新的目錄。很簡(jiǎn)單的一個(gè)例子。希望能幫助入門(mén)的朋友。Part2:ccs中工程的創(chuàng)建-改變工程目錄時(shí)注意的細(xì)節(jié)以6437為例:1、在安裝目錄下,打開(kāi)如下路徑下的示例工程:video_loopbackC:CCStudio_v3.3boardsevmdm6437_v2testsvideo_loopbackOk,如果板子沒(méi)問(wèn)題,肯定能編譯成功的。2、有時(shí)候我們需要搬移自己的工程到別的目錄或別的機(jī)器上去,此處,將這個(gè)工程拷貝到F盤(pán)中去,再重新打開(kāi),編譯,你會(huì)發(fā)現(xiàn)此時(shí)提示以下錯(cuò)誤:main.c, line 12: fatal error: could not open source file evmdm6437.htvp5146.h, line 12: fatal error: could not open source file evmdm6437_i2c.hvideo_loopback_test.c, line 12: fatal error: could not open source file evmdm6437_dip.h找不到對(duì)應(yīng)的頭文件了?并且你在工程中也打不開(kāi)這幾個(gè)文件,打開(kāi)時(shí)會(huì)提示:3、看來(lái)ccs在找這些個(gè)頭文件時(shí),沒(méi)有從工程中獲取正確的路徑信息,打開(kāi)項(xiàng)目文件,此處是:video_loopback.pjt,會(huì)發(fā)下以下幾行:Compiler Settings: DebugOptions=-g -q -fr.Debug -i.include -d_DEBUG -mv6400+Compiler Settings: ReleaseOptions=-q -o3 -fr.Release -i.include -mv6400+看意思是說(shuō),包含的頭文件的路徑是在.include目錄下面;如果這個(gè)項(xiàng)目在原來(lái)默認(rèn)的目錄下,那么是正確的。因?yàn)榈拇_能看到所謂的include文件夾,他們就是在ti默認(rèn)安裝目錄下面的。但是由于我們改變了項(xiàng)目的路徑,那么這些個(gè)目錄肯定是不對(duì)的,所以ccs無(wú)法找到這些個(gè)文件了。4、那是不是修改過(guò)來(lái)就好了。答案是肯定的也是否定的,如果我們找到這個(gè)include目錄,并寫(xiě)到pjt文件中,如下所示:Compiler Settings: ReleaseOptions=-q -o3 -fr.Release -iC:CCStudio_v3.3boardsevmdm6437_v2include -mv6400+那么肯定是可以的。但是如果我們拷貝到別的機(jī)器上,而別的機(jī)器上的開(kāi)發(fā)板驅(qū)動(dòng)或ccs的安裝路徑和我們不一樣的話呢?難道重新再找一遍再寫(xiě)一遍?5、 可能你已經(jīng)想到了,使用相對(duì)路徑,那么我們先看看ccs都在我們環(huán)境里面注冊(cè)了那些環(huán)境變量:5.1、打開(kāi)cmd,切換到c盤(pán)。然后輸入以下命令:seta.txtSet命令是查看系統(tǒng)中注冊(cè)的環(huán)境變量的。操作符是用來(lái)重定向用的,可以將查詢到的結(jié)構(gòu)重定向到一個(gè)txt文件中。所以上面的命令是那么寫(xiě)的。5.2打開(kāi)a.txt.會(huì)看到一堆的環(huán)境變量。其中有這么幾個(gè)是ccs相關(guān)的:BIOSDVSDK_INSTALL_DIR=C:dvsdk_1_01_00_15BIOSUTILS_INSTALL_DIR=C:dvsdk_1_01_00_15biosutils_1_00_02BIOS_INSTALL_DIR=C:/CCStudio_v3.3/bios_5_31_07BSL_EVMDM6437_INSTALLDIR=C:CCStudio_v3.3boardsevmdm6437_v25.3第四個(gè)就是我們想要的目錄了。那么現(xiàn)在修改pjt文件中的那兩行內(nèi)容為:Compiler Settings: DebugOptions=-g -q -fr.Debug -i%BSL_EVMDM6437_INSTALLDIR%/include -d_DEBUG -mv6400+Compiler Settings: ReleaseOptions=-q -o3 -fr.Release -i%BSL_EVMDM6437_INSTALLDIR%/include -mv6400+5.4編譯,連接成功。并且再也不怕移來(lái)移去了。5.5注意:有時(shí)候可能還有一個(gè)地方需要該:Project SettingsProjectDir=E:WorkContentprojectExamplevideo_loopback指向項(xiàng)目文件的絕對(duì)路徑。而項(xiàng)目文件中的相對(duì)路徑都是基于該路徑。Part3:ccs編譯中常見(jiàn)的編譯錯(cuò)誤及解決方法1 fastcopy 提示找不到ialg.h等頭文件,打開(kāi)cmd文件后看到目錄包含命令有: -i%XDAIS_INSTALL_DIR%/packages但是系統(tǒng)中沒(méi)有XDAIS_INSTALL_DIR這個(gè)環(huán)境變量,于是找到xdais的安裝目錄:C:dvsdk_1_01_00_15xdais_5_21然后添加系統(tǒng)環(huán)境變量:變量名:XDAIS_INSTALL_DIR變量值:C:dvsdk_1_01_00_15xdais_5_21注銷或重啟或者kill掉explorer后在運(yùn)行即可2 ccs提示:could not open source file ti/sdo/fc/acpy3/acpy3.h。和問(wèn)題2相似,在cmd文件中找到另一條包含目錄命令:-i%FC_INSTALL_DIR%/packages同樣在系統(tǒng)環(huán)境變量里面沒(méi)有這個(gè)東西。因?yàn)閍cpy3是屬于framework component 的東西,所以找到fc的安裝目錄C:dvsdk_1_01_00_15framework_components_1_20_03添加系統(tǒng)環(huán)境變量:變量名:FC_INSTALL_DIR變量值:C:dvsdk_1_01_00_15framework_components_1_20_033、 在程序中查到其用到了FCPY_IFCPY這個(gè)變量:IFCPY_Fxns * fxns = (IFCPY_Fxns *)&FCPY_IFCPY;但是只在整個(gè)工程的.c 或.h文件中找到如下FCPY_IFCPY的定義:extern far IFCPY_Fxns FCPY_IFCPY; 在當(dāng)前文件前面這樣定義的按上面的定義,這個(gè)FCPY_IFCPY肯定在其它文件中有定義的,但是并沒(méi)有找到。最后在命令連接文件.cmd文件中找到如下一行語(yǔ)句:_FCPY_IFCPY = _FCPY_TI_IFCPY;而且找到 FCPY_TI_IFCPY 定義如下:IFCPY_Fxns FCPY_TI_IFCPY = /* module_vendor_interface */ IALGFXNS, /* IALG functions */ FCPY_TI_control, /* Control function */ FCPY_TI_doCopy /* The fcpy fxn */;因此推斷,cmd文件中的這個(gè)命令將FCPY_IFCPY FCPY_TI_IFCPY兩個(gè)東西等同起來(lái)了,前面的下劃線應(yīng)該是格式需要。有熟悉這個(gè)的朋友給解釋下。4、 使用dsp/bios時(shí),printf函數(shù)默認(rèn)不起作用。 這是因?yàn)閎ios中沒(méi)有動(dòng)態(tài)分配heap的原因,默認(rèn)情況下mem對(duì)heap的分配如下圖所示:1)很明顯看到這里選擇的是:no dynamic memory heaps但是取消選中后,會(huì)發(fā)現(xiàn)下拉框中并沒(méi)有任何選項(xiàng)讓選擇把heap放在哪里。如下圖所示:并且會(huì)之前彈出一個(gè)對(duì)話框:大概意思是讓你去重新配置一塊獨(dú)立的內(nèi)存塊。2) 另外還有一個(gè)地方需要注意,就是ddr2的設(shè)置。打開(kāi)ddr屬性,會(huì)發(fā)現(xiàn):創(chuàng)建heap選項(xiàng)居然是灰色的.那我去哪里創(chuàng)建heap呢?3) 下面是正確的步驟:3.1)首先打開(kāi)MEM的屬性對(duì)話框,將no dynamic memory heaps 復(fù)選框取消,并按 應(yīng)用按鈕后,點(diǎn)擊確定按鈕。如下圖所示:3.2)這時(shí)再去打開(kāi)ddr2的屬性對(duì)話框:你會(huì)發(fā)現(xiàn),這個(gè)時(shí)候“create a heap in this memory”項(xiàng)可以用了,點(diǎn)選此復(fù)選框。然后輸入適當(dāng)?shù)拇笮。Ⅻc(diǎn)擊應(yīng)用 后再點(diǎn)確定 按鈕退出。如下圖所示:3.3)此時(shí),我們已經(jīng)為heap分配了一段數(shù)據(jù)空間了,但是還得回到mem屬性對(duì)話框中:此時(shí)就發(fā)現(xiàn),原本只有一項(xiàng)MEM_NULL的下拉列表中多了一項(xiàng)DDR2;選中DDR2,segment for dsp/bios objects 和 segment for malloc()/free()都選中ddr2.然后點(diǎn)應(yīng)用、確定按鈕后退出。再去試試程序。Printf函數(shù)可以用了。5、 內(nèi)存分配:MEM_alloc:如何指定分配對(duì)象的位置?比如分配到ddr中或sram中當(dāng)時(shí)的Dm6467內(nèi)存分配:然后定義變量:fcpyInput = (int *)MEM_alloc(1, sizeof(int)*INPUTSIZE, 8);fcpyOutput = (int *)MEM_alloc(0, sizeof(int)*INPUTSIZE, 8);調(diào)試的時(shí)候結(jié)果是這樣的:經(jīng)查資料得知,mem_alloc中第一個(gè)參數(shù),指定的是內(nèi)存分配的位置;其值與系統(tǒng)內(nèi)存heap的定義相關(guān),其具體使用如下: 1)如下圖所示,在ddr中建立一個(gè)heap,并指定heap_identifier_label)為“_EXTERNALHEAP”,這個(gè)名字可以自己隨便起。2) 然后在程序中,按照heap label定義一個(gè)變量,變量名必須和heaplabel下劃線后面的名字一樣,并且類型是external的,如: extern int EXTERNALHEAP;3) 編譯的時(shí)候,編譯器會(huì)自動(dòng)將這個(gè)整形變量和heap label聯(lián)系起來(lái)。如果不寫(xiě)“extern”關(guān)鍵字,不僅編譯器不能將其和heap label聯(lián)系起來(lái),而且連接的時(shí)候會(huì)提示“EXTERNALHEAP”被雙重定義了。因此程序中不能定義和heap label 名字相同的變量。如果有,就必須是extern類型的,編譯器會(huì)自動(dòng)將其指向你創(chuàng)建出來(lái)的那段heap。4) 最后mem_alloc就可以這樣寫(xiě)了:fcpyInput = (int *)MEM_alloc(EXTERNALHEAP, sizeof(int)*INPUTSIZE, 8);6、 程序編譯連接通過(guò),但是在執(zhí)行的時(shí)候提示CIO BUFFER類似的錯(cuò)誤:我在這里是因?yàn)樵赽ios為iram分配空間地址時(shí)由于來(lái)回修改,結(jié)果導(dǎo)致出現(xiàn)的錯(cuò)誤。后來(lái)重新按照標(biāo)準(zhǔn)修改bios的tcf文件后,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論