CCS的GEL語言是一種互動命令,它是解釋執行的,即不能被編譯成可執行檔。它的作用在於擴充了CCS Studio的功能,可以用gel來調用一些功能表命令,對DSP的儲存空間進行初始化配置等。 對於不同型號的DSP,我們應選擇相對應的GEL檔案。
當CCS Studio啟動時,GEL檔案載入到PC機的記憶體中,如果定義了StartUp()函數則執行該函數在CCS Studio(V2.3或更低的版本中),主機和目標板的初始化工作都在Startup()函數中執行。但是對於支援Connect /Disconnect的CCS Studio(V2.4或之後的版本,比如3.1版本,3.3版本),GEL檔案可能並沒有正確的執行。因為CCS Studio啟動時和目標處理器之間的串連是斷開的,當Startup()函數試圖訪問目標處理器時會出錯。因此,V2.4或之後的版本,當CCS啟動
時,用一個新的回呼函數OnTargetConnect()來執行目標處理器的初始化工作。
對於支援connect/disconnect的CCS環境,Startup()函數中盡量避免Get_Reset()、GEL_BreakPtAdd()、GEL_TextOUT()和GET_OpenWindow(),因為StartUp()執行時CCSStudio的任何控制視窗還沒有開啟。
我們對兩種不同的gel檔案進行對比,讓大家更容易理解。
不支援Connect/Disconnect的CCSStudio GEL檔案中的StartUp()函數:
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()函數:
StartUp()
{
setup_memory_map();
}
OnTargetConnect()函數在每一次和目標處理器建立串連時都被調用。進行絕對最小的系統初始化處理,保證CCSStudio在目標處 理器上處於一種可信賴的狀態例如:禁止看門狗時鐘、DSP複位結束。 對於某些平台,調用GEL_Reset()函數可使CCSStudio處於一種Good狀態,可以通過測試來確定是否需要調用。
我們可看出後一種僅建立了儲存映射。其他初始化dsp的工作交給了OnTargetConnect()函數去完成。下面我們以6437為例,gel的源碼如下:
StartUp( )
{ Setup_Memory_Map( );}
OnTargetConnect( )
{ Setup_Cache( ); Setup_Pin_Mux( ); // Setup Pin Mux Setup_Psc_All_On( ); // Setup Power Domains Setup_PLL0_594_MHz_OscIn( ); // Setup Pll1 [DSP @ 594 MHz][Core 1.20V] Setup_PLL1_DDR_135_MHz_OscIn(); Setup_Aemif_8Bit_Bus( ); // Setup Async-EMIF [8-bit bus] }
注意:GEL檔案在CCS啟動後常駐記憶體,在模擬器和目標系統上電的時候起到初始DSP的作用。在上電後再改變GEL檔案將不會對DSP產生影響。點擊開啟連結