




已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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ì)去獲取板子信息并在打開的文件目錄中自動(dòng)生成一個(gè)文件,如圖所示:筆者使用的是6437的板子2、用file-new選擇建立一個(gè)dsp/bios文件在打開的對(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、 打開后在編譯選項(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ù)的類型必須這樣寫 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文件這樣寫:-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就是不能輸出任何東西,后來解決了,具體解決方法見后面的:“ccs編譯中常見的編譯錯(cuò)誤及解決方法”的第4部分8、 compile-rebuild all;無錯(cuò)誤提示。此時(shí)項(xiàng)目就建立并編譯好了。下面就要把程序加載到板子上運(yùn)行了。9、 首先要先連接板子,點(diǎn)擊debug-connect10、 如果連接成功,會(huì)看到下面的效果:未連接時(shí):連接成功后:連接成功的同時(shí),ccs會(huì)打開一二Disassembly窗口,如下圖:11、 加載程序吧,程序編譯后,會(huì)在當(dāng)前目錄的Debug目錄下生成一個(gè)*.out的文件,此例中的文件是“6467EXAM.out”;通過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è)例子。希望能幫助入門的朋友。Part2:ccs中工程的創(chuàng)建-改變工程目錄時(shí)注意的細(xì)節(jié)以6437為例:1、在安裝目錄下,打開如下路徑下的示例工程:video_loopbackC:CCStudio_v3.3boardsevmdm6437_v2testsvideo_loopbackOk,如果板子沒問題,肯定能編譯成功的。2、有時(shí)候我們需要搬移自己的工程到別的目錄或別的機(jī)器上去,此處,將這個(gè)工程拷貝到F盤中去,再重新打開,編譯,你會(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)的頭文件了?并且你在工程中也打不開這幾個(gè)文件,打開時(shí)會(huì)提示:3、看來ccs在找這些個(gè)頭文件時(shí),沒有從工程中獲取正確的路徑信息,打開項(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+看意思是說,包含的頭文件的路徑是在.include目錄下面;如果這個(gè)項(xiàng)目在原來默認(rèn)的目錄下,那么是正確的。因?yàn)榈拇_能看到所謂的include文件夾,他們就是在ti默認(rèn)安裝目錄下面的。但是由于我們改變了項(xiàng)目的路徑,那么這些個(gè)目錄肯定是不對(duì)的,所以ccs無法找到這些個(gè)文件了。4、那是不是修改過來就好了。答案是肯定的也是否定的,如果我們找到這個(gè)include目錄,并寫到pjt文件中,如下所示:Compiler Settings: ReleaseOptions=-q -o3 -fr.Release -iC:CCStudio_v3.3boardsevmdm6437_v2include -mv6400+那么肯定是可以的。但是如果我們拷貝到別的機(jī)器上,而別的機(jī)器上的開發(fā)板驅(qū)動(dòng)或ccs的安裝路徑和我們不一樣的話呢?難道重新再找一遍再寫一遍?5、 可能你已經(jīng)想到了,使用相對(duì)路徑,那么我們先看看ccs都在我們環(huán)境里面注冊(cè)了那些環(huán)境變量:5.1、打開cmd,切換到c盤。然后輸入以下命令:seta.txtSet命令是查看系統(tǒng)中注冊(cè)的環(huán)境變量的。操作符是用來重定向用的,可以將查詢到的結(jié)構(gòu)重定向到一個(gè)txt文件中。所以上面的命令是那么寫的。5.2打開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編譯,連接成功。并且再也不怕移來移去了。5.5注意:有時(shí)候可能還有一個(gè)地方需要該:Project SettingsProjectDir=E:WorkContentprojectExamplevideo_loopback指向項(xiàng)目文件的絕對(duì)路徑。而項(xiàng)目文件中的相對(duì)路徑都是基于該路徑。Part3:ccs編譯中常見的編譯錯(cuò)誤及解決方法1 fastcopy 提示找不到ialg.h等頭文件,打開cmd文件后看到目錄包含命令有: -i%XDAIS_INSTALL_DIR%/packages但是系統(tǒng)中沒有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。和問題2相似,在cmd文件中找到另一條包含目錄命令:-i%FC_INSTALL_DIR%/packages同樣在系統(tǒng)環(huán)境變量里面沒有這個(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肯定在其它文件中有定義的,但是并沒有找到。最后在命令連接文件.cmd文件中找到如下一行語句:_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è)東西等同起來了,前面的下劃線應(yīng)該是格式需要。有熟悉這個(gè)的朋友給解釋下。4、 使用dsp/bios時(shí),printf函數(shù)默認(rèn)不起作用。 這是因?yàn)閎ios中沒有動(dòng)態(tài)分配heap的原因,默認(rèn)情況下mem對(duì)heap的分配如下圖所示:1)很明顯看到這里選擇的是:no dynamic memory heaps但是取消選中后,會(huì)發(fā)現(xiàn)下拉框中并沒有任何選項(xiàng)讓選擇把heap放在哪里。如下圖所示:并且會(huì)之前彈出一個(gè)對(duì)話框:大概意思是讓你去重新配置一塊獨(dú)立的內(nèi)存塊。2) 另外還有一個(gè)地方需要注意,就是ddr2的設(shè)置。打開ddr屬性,會(huì)發(fā)現(xiàn):創(chuàng)建heap選項(xiàng)居然是灰色的.那我去哪里創(chuàng)建heap呢?3) 下面是正確的步驟:3.1)首先打開MEM的屬性對(duì)話框,將no dynamic memory heaps 復(fù)選框取消,并按 應(yīng)用按鈕后,點(diǎn)擊確定按鈕。如下圖所示:3.2)這時(shí)再去打開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)系起來。如果不寫“extern”關(guān)鍵字,不僅編譯器不能將其和heap label聯(lián)系起來,而且連接的時(shí)候會(huì)提示“EXTERNALHEAP”被雙重定義了。因此程序中不能定義和heap label 名字相同的變量。如果有,就必須是extern類型的,編譯器會(huì)自動(dòng)將其指向你創(chuàng)建出來的那段heap。4) 最后mem_alloc就可以這樣寫了:fcpyInput = (int *)MEM_alloc(EXTERNALHEAP, sizeof(int)*INPUTSIZE, 8);6、 程序編譯連接通過,但是在執(zhí)行的時(shí)候提示CIO BUFFER類似的錯(cuò)誤:我在這里是因?yàn)樵赽ios為iram分配空間地址時(shí)由于來回修改,結(jié)果導(dǎo)致出現(xiàn)的錯(cuò)誤。后來重新按照標(biāo)準(zhǔn)修改bios的tcf文件后,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- BI-1181181-MZ-生命科學(xué)試劑-MCE
- 寧夏大學(xué)新華學(xué)院《即興口語傳播一》2023-2024學(xué)年第一學(xué)期期末試卷
- 武漢生物工程學(xué)院《田徑運(yùn)動(dòng)會(huì)編排操作》2023-2024學(xué)年第一學(xué)期期末試卷
- 西京學(xué)院《全科醫(yī)療中的醫(yī)患關(guān)系與溝通技巧》2023-2024學(xué)年第一學(xué)期期末試卷
- 青島遠(yuǎn)洋船員職業(yè)學(xué)院《漫畫墨線繪制》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024-2025學(xué)年江蘇省揚(yáng)大附中東部分學(xué)校九年級(jí)化學(xué)第一學(xué)期期末監(jiān)測(cè)模擬試題含解析
- 公路貨運(yùn)行業(yè)數(shù)字化轉(zhuǎn)型2025年與物流政策法規(guī)研究報(bào)告
- 公路貨運(yùn)行業(yè)數(shù)字化轉(zhuǎn)型與綠色物流發(fā)展報(bào)告
- 雁形板在節(jié)能建筑中的應(yīng)用及安裝技巧
- 美容整形手術(shù)室的感染控制體系
- PEP人教版小學(xué)英語五年級(jí)下冊(cè)單詞默寫表
- 肌肉刑警的改造計(jì)劃
- 電力現(xiàn)貨交易流程
- 音樂劇排練課程設(shè)計(jì)
- 保險(xiǎn)公司理賠服務(wù)手冊(cè)
- 醫(yī)院病案質(zhì)控管理學(xué)習(xí)匯報(bào)
- GB/T 28569-2024電動(dòng)汽車交流充電樁電能計(jì)量
- 靜脈炎的預(yù)防和處理
- 醫(yī)療機(jī)構(gòu)麻醉藥品、第一類精神藥品管理
- 海上風(fēng)電場(chǎng)海上安全保障
- 儲(chǔ)能系統(tǒng)培訓(xùn)課程
評(píng)論
0/150
提交評(píng)論