GEL語言的使用.doc_第1頁
GEL語言的使用.doc_第2頁
GEL語言的使用.doc_第3頁
GEL語言的使用.doc_第4頁
GEL語言的使用.doc_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、GEL簡介GEL(General Extension Language,通用擴(kuò)展語言)是類似與C的一種解釋性語言,它可以創(chuàng)建GEL函數(shù),以擴(kuò)展CCS的用途。按照GEL的語法創(chuàng)建GEL函數(shù)加載到CCS即可。GEL支持以下類型的語句:函數(shù)定義函數(shù)參數(shù)調(diào)用GEL函數(shù)返回語句if-else語句while語句GEL注釋預(yù)處理語句2.如何將GEL函數(shù)加載到CCS的GEL菜單a :hotmenu關(guān)鍵詞/joseph addmenuitem Set_zone6 /*添加一級菜單Set_zone6*/hotmenu Set_zone6() /*在Set_zone6下添加二級菜單Set_zone6*/ *(long *)0x0B34 = 0x00014c1f; /*XINTCNF2 config*/*0x0B38 = 0x803e; /*XBANK config*/ *(long *)0x0B2C = 0x0043f1224; /*XTIMING6 config*/b : dialog關(guān)鍵詞主要是創(chuàng)建一個需要輸入?yún)?shù)的對話框dialog funcName(參數(shù)1 “參數(shù)說明”,參數(shù)2 “參數(shù)說明”,.)語句.c : silder 關(guān)鍵詞主要是創(chuàng)建一個可以改變參數(shù)的滑動條3.在CCS啟動時自動加載GEL函數(shù)將自己的函數(shù)加入到Startup()或者把自己的函數(shù)命名為Startup()4.GEL函數(shù)簡介1).GEL_Go(adress)CCS菜單中的debug-Go Main就是調(diào)用的這個函數(shù)2).GEL_MapAdd( address , page , length , readable , writeable)address:存儲器起始地址page:存儲器類型0表示程序存儲器,1表示數(shù)據(jù)存儲器length:定義的存儲器長度readable:定義存儲器是否可讀,1可讀,0不可讀writeable:定義存儲器是否可寫,1可寫,0不可寫3).GEL_WatchAdd(expression,lable)將表達(dá)式添加到Watch窗口,參數(shù)lable可選gel文件的應(yīng)用GEL-通用擴(kuò)展語言,無類型語言,只有int類型,當(dāng)CCS運(yùn)行時首先執(zhí)行這個GEL函數(shù)當(dāng)我們自己需要設(shè)定某功能上電后立即開啟,那么可以在這個函數(shù)里面實現(xiàn)。以2407的看門狗為例子,因為上電后2407的看門狗是自動開啟的,但我們在調(diào)試程序的時候都是把看門狗關(guān)閉的,所以想在調(diào)試程序的時候可以把關(guān)看門狗的任務(wù)放在GEL中。以下就是這個小程序#define WDCR 0X7029#define WDKEY 0X7025Startup() WDCR=0X68;Startup()函數(shù)在GEL文件加載時會自動運(yùn)行,這樣就可以實現(xiàn)上電關(guān)閉看門狗功能了GEL(General Extension Language 通用擴(kuò)展語言)是一種解釋語言,類似與C語言,這個文件中的函數(shù)是按照先后順序執(zhí)行的。GEL函數(shù)可以用來配置CCS開發(fā)環(huán)境,也可以用來初始化目標(biāo)CPU。當(dāng)啟動CCS時,掃描啟動的GEL文件并加載文件中包含的GEL函數(shù),如果文件中包含Startup()函數(shù),則包含的所有函數(shù)都運(yùn)行GEL存儲空間映射函數(shù)可以用來描述處理器的存儲空間映射。Startup() /* startup 內(nèi)的所有函數(shù)都要執(zhí)行 */GEL_MapOn();GEL_MapAdd(0,0,0xf000,1,1);GEL_MapAdd(0,1,0xf000,1,1);1 GEL文件的改變 使用CCSStudio Setup工具,可以為在系統(tǒng)配置中的每一個處理器指定一個啟動GEL文件。當(dāng)CCSStudio啟動時,GEL文件加載到PC機(jī)的內(nèi)存中,如果定義了StartUp()函數(shù)則執(zhí)行該函數(shù)。在CCSStudio(V2.3或更早的版本中),主機(jī)和目標(biāo)板的初始化工作都在Startup()函數(shù)中執(zhí)行。但是對于支持Connect/Disconnect的CCSStudio,這樣的GEL文件有可能沒有正確的執(zhí)行,因為CCSStudio啟動時和目標(biāo)處理器是斷開的。當(dāng)Startup()函數(shù)試圖訪問目標(biāo)處理器時會出錯。一個新的回調(diào)函數(shù)OnTargetConnect()來執(zhí)行目標(biāo)處理器的初始化工作。2 GEL回調(diào)函數(shù)2.1 Startup()函數(shù) 如果指定的GEL文件中包含Startup()函數(shù),當(dāng)CCSStudio啟動時執(zhí)行Startup()函數(shù)。支持Connect/Disconnect的CCSStudio的啟動時,Startup()函數(shù)中不包括訪問目標(biāo)處理器的代碼,目標(biāo)處理器由回調(diào)函數(shù)OnTargetConnect()來初始化。推薦:建立基本的CCSStudio內(nèi)存映射關(guān)系(不需要訪問目標(biāo)處理器)任何不需要訪問目標(biāo)處理器的基本初始化不推薦:Get_Reset()(該函數(shù)通過仿真器復(fù)位目標(biāo)處理器)通過GEL_BreakPtAdd()設(shè)置斷點(diǎn)GEL_TextOUT()和GET_OpenWindow(),因為StartUp()執(zhí)行時CCSStudio的任何控制窗口還沒有打開不支持Connect/Disconnect的CCSStudio GEL文件中的StartUp()函數(shù):/* The StartUp() function is called each time CCS is started. */* Customize this function to perform desired initialization. */StartUp()setup_memory_map();GEL_Reset(); /* Do not call in StartUp() with CCStudio v2.4 or higher */init_emif(); /* Do not call in StartUp() with CCStudio v2.4 or higher */支持Connect/Disconnect的CCSStudio GEL文件中的StartUp()函數(shù):/* The StartUp() function is called each time CCS is started. */* Customize this function to perform desired initialization */* that will not access the target. */StartUp()setup_memory_map();2.2 OnTargetConnect()函數(shù)推薦:絕對最小的系統(tǒng)初始化處理,保證CCSStudio在目標(biāo)處理器上處于一種可信賴的狀態(tài)。例如:禁止看門狗時鐘、DSP復(fù)位結(jié)束每一次和目標(biāo)處理器建立連接時都調(diào)用OnTargetConnect()函數(shù)。/* OnTargetConnect() is called every time a target is connected.*/* Its execution finishes before anything else occurs. Customize*/* this function to perform essential target initialization. */OnTargetConnect()/ place critical target initialization steps hereGEL_Reset();init_emif();對某些平臺,必須調(diào)用GEL_Reset()函數(shù)使得CCSStudio處于一種“Good”狀態(tài),可以通過測試來確定是否需要調(diào)用GEL_Reset()函數(shù)。應(yīng)該盡可能的降低GEL startup functions復(fù)雜度-包括減少GEL_Reset()的調(diào)用。2.3 OnPreFileLoaded()函數(shù) 在加載program/symbol(.out)文件之前該回調(diào)函數(shù)執(zhí)行。在該函數(shù)中執(zhí)行另外的目標(biāo)處理器初始化操作以保證程序可以加載和調(diào)試是一個好的選擇。/* This function is called automatically when the Load Program*/* Menu item is selected. */OnPreFileLoaded()FlushCache();IER = 0;IFR = 0;init_emif();2.4 OnReset()函數(shù) 當(dāng)目標(biāo)處理器復(fù)位后該函數(shù)被調(diào)用。如果你需要每次重新啟動程序設(shè)計了軟復(fù)位,GEL_Restart()在此處調(diào)用。/* This function is called automatically after a SW Reset has been executed. OnReset(int nErrorCode)init_emif();2.5OnRestart()函數(shù) 當(dāng)程序復(fù)位時調(diào)用該函數(shù)。This function is called by CCS when you do Debug-Restart. The goal is to put the C6x into a known good state with respect to cache, edma and interrupts. Failure to do this can cause problems when you restart and run code multiple times. OnRestart(int nErrorCode )Turn off L2 for all EMIFA CE spaces. App should manage these for coherency GEL_TextOut(Turn off cache segmentn);*(int *)0x1848200 = 0; /* MAR0 */*(int *)0x1848204 = 0; /* MAR1 */*(int *)0x1848208 = 0; /* MAR2 */*(int *)0x184820c = 0; /* MAR3 */* Disable EDMA events and interrupts and clear any pending events. */GEL_TextOut(Disable EDMA eventn); */*(int *)0x01A0FFA8 = 0; /* CIERH */*(int *)0x01A0FFB4 = 0; /* EERH */*(int *)0x01A0FFB8 = 0XFFFFFFFF; /* ECRH */*(int *)0x01A0FFE8 = 0; /* CIERL */*(int *)0x01A0FFF4 = 0; /* EERL */*(int *)0x01A0FFF8 = 0xFFFFFFFF; /* ECRL */* Disable other interrupts */IER = 0;IFR = 0;3 存儲器映射 CCSStudio存儲器映射告訴調(diào)試器目標(biāo)處理器的那些存儲區(qū)域可以訪問那些不能訪問。CCSStudio存儲器映射一般在StartUp()函數(shù)種執(zhí)行。3.1 GEL_MapAdd()函數(shù)該函數(shù)添加一個存儲區(qū)域到存儲區(qū)映射中。3.2 GEL_MapOn()和GEL_MapOff()函數(shù) 可以調(diào)用GEL_MapOn() or GEL_MapOff()來打開或關(guān)閉存儲區(qū)映射。當(dāng)存儲區(qū)映射關(guān)閉時,CCSStudio假定可以訪問所有的存儲區(qū)空間。3.3 GEL_MapReset()函數(shù) GEL_MapReset()函數(shù)清除所有的存儲區(qū)映射。沒有存儲區(qū)映射時,缺省設(shè)置是所有的存儲區(qū)空間都不能訪問。4 盡量避免使用GEL初始化 可以考慮在GEL文件中使用GEL_MapAdd()建立存儲區(qū)映射以準(zhǔn)許CCSStudio可以調(diào)試,但是不在GEL文件中執(zhí)行外設(shè)設(shè)置例如:EMIF寄存器初始化、看門狗禁止。 因為GEL語法和C兼容,inif_emif()函數(shù)可以在.c文件中實現(xiàn),和應(yīng)用程序鏈接在一起。但是要注意以下幾點(diǎn):l 使用“volatile”來保證變量不被優(yōu)化。例如:*(volatile int *)EMIFA_SDRAMTIM = 0x00000618; /* SDRAM timing (refresh) */ 在編譯調(diào)試過程中避免在GEL文件中進(jìn)行外設(shè)設(shè)置,當(dāng)?shù)竭_(dá)了最終程序時,需要一個智能加載軟件從FLASH或主機(jī)加載程序?qū)MIF進(jìn)行設(shè)置,然后通過(E)DMA或memcpy()拷貝程序/數(shù)據(jù)。 *.gel是你的秘書,可以幫你打雜Gel文件用來處理一些繁瑣的事情,例如我總是用Gel來自動初始化DSP系統(tǒng),代碼如下:StartUp() int i; /setup_memory_map(); for( i=0; i1000; i+) i=i; GEL_Reset(); for( i=0; i1000; i+) i=i; init_emif(); for( i=0; i1000; i+) i=i; GEL_ProjectLoad( D:tiMyProjectsEagleEyeV100EagleEye.pjt); for( i=0; i10000; i+) i=i; GEL_Load( D:tiMyProjectsEagleEyeV100debugEagleEye.out); for( i=0; i10000; i+) i=i; GEL_Go( main); 只要打開CCS,它就會自動依次執(zhí)行:系統(tǒng)軟件復(fù)位、配置EMIF的各種寄存器、打開項目文件、裝載項目文件,并且自動執(zhí)行到MAIN(),停在那里等著你繼續(xù)操作。如果不用Gel,你就麻煩了。GEL 文件的功能同emuinit.cmd 的功能基本相同,用于初始化DSP。但它的功能比emuinit的功能有所增強(qiáng),GEL 在CCS 下有一個菜單,可以根據(jù)DSP 的對象不同,設(shè)置不同的初始化程序。以TMS320LF2407 為例:#define SCSR1 0x7018 ;定義scsr1 寄存器#define SCSR2 0X7019 ;定義scsr2 寄存器 #defineWDKEY 0x7025 ;定義wdkey 寄存器#defineWDNTR 0x7029 ;定義wdntr 寄存器StartUp() ; 開始函數(shù)GEL_MapReset(); ; 存儲空間復(fù)位GEL_MapAdd(0x0000,0,0x7fff,1,1); 定義程序空間從00007fff 可讀寫GEL_MapAdd(0x8000,0,0x7000,1,1); 定義程序空間從8000f000 可讀寫GEL_MapAdd(0x0000,1,0x10000,1,1); 定義數(shù)據(jù)空間從000010000 可讀寫GEL_MapAdd(0xffff,2,1,1,1); 定義i/o 空間0xffff 可讀寫GEL_MapOn(); 存儲空間打開GEL_MemoryFill(0xffff,2,1,0x40); 在i/o 空間添入數(shù)值40h*(int *)SCSR1=0x0200; 給scsr1 寄存器賦值*(int *)SCSR2=0x000C; 給scsr2 寄存器賦值,在這里可以進(jìn)行mp/mc 方式的轉(zhuǎn)換*(int *)WDNTR=0x006f; 給wdntr 寄存器賦值*(int *)WDKEY=0x055; 給wdkey 寄存器賦值*(int *)WDKEY=0x0AA; 給wdkey 寄存器賦值GEL文件只是在仿真器和目標(biāo)系統(tǒng)上電的時候起到初始化dsp的作用在上電后再改變GEL文件將不會對DSP產(chǎn)生影響除非斷電后再上電貼上DSP5416的GEL文件/* set PMST to: MP = OVLY = 1; DROM off, CLKOUT on */#define PMST_VAL 0x0ffe0u /* set wait-state control reg for: 2 w/s or more on i/o; one for ext memory */#define SWWSR_VAL 0x2009u/* set external-banks switch control for: no bank switching; BH set */#define BSCR_VAL 0x02u/* Set Default Reset Initialization Value */#define ZEROS 0x0000u這一部分是對寄存器初始化/* Set Peripheral Control Register Addresses for DEV_RESET */#define DMPREC 0x0054u#define DMSA 0x0055u#define DMSDI 0x0056u#define DMA_CH0_DMFSC_SUB_ADDR 0x0003u#define DMA_CH1_DMFSC_SUB_ADDR 0x0008u#define DMA_CH2_DMFSC_SUB_ADDR 0x000Du#define DMA_CH3_DMFSC_SUB_ADDR 0x0012u#define DMA_CH4_DMFSC_SUB_ADDR 0x0017u#define DMA_CH5_DMFSC_SUB_ADDR 0x001cu#define MCBSP0_SPSA 0x0038u#define MCBSP0_SPSD 0x0039u#define MCBSP1_SPSA 0x0048u#define MCBSP1_SPSD 0x0049u#define MCBSP2_SPSA 0x0034u#define MCBSP2_SPSD 0x0035u#define MCBSP_SPCR1_SUB_ADDR 0x0000u#define MCBSP_SPCR2_SUB_ADDR 0x0001u#define MCBSP_SRGR1_SUB_ADDR 0x0006u#define MCBSP_SRGR2_SUB_ADDR 0x0007u#define MCBSP_MCR1_SUB_ADDR 0x0008u#define MCBSP_MCR2_SUB_ADDR 0x0009u#define SRGR1_INIT 0x0001u#define PRD0 0x0025u#define TCR0 0x0026u#define PRD1 0x0031u#define TCR1 0x0032u#define TIMER_STOP 0x0010u#define TIMER_RESET 0x0020u#define PRD_DEFAULT 0xFFFFu #define GPIOCR 0x0010uStartUp()C5416_Init(); GEL_TextOut(Gel StartUp complete.n);menuitem C5416_Configuration;hotmenu CPU_Reset()GEL_Reset();PMST = PMST_VAL;/* dont change the wait states, let the application code handle it */* note: at power up all wait states will be the maximum (7) */* SWWSR = SWWSR_VAL; */BSCR = BSCR_VAL;GEL_TextOut(CPU Reset Complete.n);/* All memory maps are based on the PMST value of 0xFFE8 */hotmenu C5416_Init()GEL_Reset();PMST = PMST_VAL;/* dont change the wait states, let the application code handle it */* note: at power up

溫馨提示

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

評論

0/150

提交評論