zoukankan      html  css  js  c++  java
  • CCS GEL文件分析(转)

    转自:http://zhujlhome.blog.163.com/blog/static/20562109220125110460667/

    GEL表示的是Genenal Extension Language通用扩展语言,可以配置CCS的工作环境和初始化CPU,总之就是初始化目标板。

           在开始学习DSP时,有时会遇到这样的错误:Data verification failed at address 0x8XXXXXXX,仔细观察会发现,出错的地址出现在外部存储器空间,此时程序还没有运行,所以CPU的寄存器都还没有配置,外部存储器寄存器EMIF当然也没有配置,所以在装载中,编译器找不到这个地址,那么怎么让编译器在程序没有运行的时候知道此地址呢?那就是在装在前,通过先让DSP去执行一些基本的配置。GEL文件完成了此功能。

    CCS的GEL语言是一种交互式的命令,它是解释执行的,即不能被编译成可执行文件。它的作用在于扩展了CCS Studio的功能,可以用gel来调用一些菜单命令,对DSP的存储器进行初始化配置等。 对于不同型号的DSP,我们应选择相对应的GEL文件。

    GEL文件只是在仿真器和目标系统上电的时候起到初始化dsp的作用,在上电后再改变GEL文件将不会对dsp产生影响,除非断电后再上电。GEL是CCS仿真用的,不用到DSP上。

            有两种情况,CCS Studio(V2.3或更低的版本中),以及支持Connect /Disconnect的CCS Studio(V2.4或之后的版本,比如3.1版本,3.3版本)。对于前者,当CCS Studio启动时,GEL文件加载到PC机的内存中,主机和目标板的初始化工作都在Startup()函数中执行。对于后者,GEL文件可能并没有正确的执行,因为CCS Studio启动时和目标处理器之间的连接是断开的,当Startup()函数试图访问目标处理器时会出错。因此,V2.4或之后的版本,当CCS启动时,用一个新的回调函数OnTargetConnect()来执行目标处理器的初始化工作。

    对于支持Connect/Disconnect的CCS Studio:CCS Studio启动时,如果指定的GEL文件中包含Startup()函数,通过它建立基本CCSStudio内存映射关系,进行不需要访问目标处理器的基本初始化操作。Startup()函数中不用包括访问目标处理器的代码,目标处理器由回调函数OnTargetConnect()来初始化。

    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详细介绍及Get_Reset()、GEL_BreakPtAdd()、GEL_TextOUT()、GET_OpenWindow()等函数详细描述请参考CCStudio v3.3工具Help-->Contents文档中的Automating Task with General Extension Language (GEL)部分。


    对于近期的项目中用到CCS3.3 DM357 做为开发平台

    GEL中主要分析

    OnTargetConnect( )

    {

        setup_pin_mux( );               // Setup Pin Mux

      turn_on_dsp( );                 // Turn on DSP

        setup_psc_all_on( );            // Setup PSC

     

    //   setup_pll_1( 0, 16 );           // Setup Pll1 ( Clk @ 459 MHz )

     //   setup_pll_1(0,16);

      setup_pll_1(0,19);//clk@540MHz

      //setup_pll_1( 0, 21 );           // Setup Pll1 ( Clk @ 594 MHz )

     

      //setup_pll_2( 0, 27, 13, 2 );    // Setup Pll2 ( DDR @ 126 MHz )

        setup_pll_2( 0, 19, 9, 1 );     // Setup Pll2 ( DDR @ 135 MHz )

     

        setup_ddr2( );                  // Setup DDR2

     

        setup_general_16bit_emif( );    // Setup AEMIF

     

        GEL_TextOut( "\nStartup Complete\n\n" );

    }

    按照这个顺序来分析GEL的结构就相当的容易了!!


  • 相关阅读:
    如何利用UltraEdit语法着色来编辑shell脚本
    css 运动背景
    页面加载进度条
    jScrollPane滚动条
    页面加载进度条改进版
    js页面新消息提示
    一道题
    jquery插件 展示信息
    冒泡排序和快速排序
    字体背景
  • 原文地址:https://www.cnblogs.com/youngforever/p/3104723.html
Copyright © 2011-2022 走看看