CCS2.2和CCS3.1在读写GEL文件上的区别(转)

2019-07-25 14:04发布

我用的是一块从学长那儿拿过来的DSP开发板,从板子上看不出来是哪家做的,芯片型号是TMS320DM642,从芯片的型号就可以看出这块板子主要是围绕图像处理,仿真器是SEED XD510的,我从合众达的官方网站上找到了CCS2.2、3.1、3.3三个版本的驱动,并搞到了合众达另外一套试验箱图像处理方面的源程序,于是自己想在板子上跑一下。刚开始用的是CCS2.2的版本,虽然比较老,但是和win7竟然也兼容的很好,跑了一些那套程序竟然也基本兼容,看来两套板子在硬件上没什么太大的差别。后来电脑重装系统后我换了CCS3.1,在去跑那套程序发现部分程序就运行不正常了,好了下面换回正题,说一下我遇到的问题:跑灰度图像的处理没什么问题,一切正常,一旦跑彩 {MOD}图像出来的图像就全花了,于是我又装了一个2.2的版本试试,发现是正常的,原程序也是2.2的版本编译的,难道2.2和3.1兼容性有问题?

先说说2.2和3.1在使用上的区别,最明显的是CCS2.2必须在目标板连接后才能打开,打开软件之后CPU的状态就是HALT,而CCS3.1在软件打开之后的状态时UNKNOWN,需要手动去debug-connect,也就是说CCS3.1需要手动连接目标版,支持离线的编译,其他方面的区别不是特别大(当然这是对于我这个小菜鸟而言)。

    另外就是在芯片配置上面,CCS2.2在配置的最后会出现选择GEL文件,而CCS3.1选择完端口之后直接就完了,刚开始我就忽略了这个问题,GEL文件用的是默认的EVMDM642.gel,导致部分程序运行不正常。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
elecintop
2019-07-25 18:27
首先是SEEDDM642.gel中的StartUp()


view plaincopy to clipboardprint?
StartUp()   
{   
    setup_memory_map();   
    GEL_Reset();     
    init_emif();   
}  
StartUp()
{
    setup_memory_map();
    GEL_Reset();  
    init_emif();
}




EVMDM642.gel中的StartUp()



view plaincopy to clipboardprint?
StartUp()   
{   
    setup_memory_map();   
  
    /*------------------------------------------------------*/  
    /* Uncomment the OnTargetConnect() call for CCS 2.X     */  
    /* support.                                             */  
    /*                                                      */  
    /*                                                      */  
    /*------------------------------------------------------*/  
    //OnTargetConnect();   
}  
StartUp()
{
    setup_memory_map();

    /*------------------------------------------------------*/
    /* Uncomment the OnTargetConnect() call for CCS 2.X     */
    /* support.                                             */
    /*                                                      */
    /*                                                      */
    /*------------------------------------------------------*/
    //OnTargetConnect();
}


从这个函数的对比就可以看到前一个在StartUp()中就已经完成了GEL和emif的初始化工作,而在后一个中就没有,这一点和前面说的软件打开时目标板的连接方式刚好一致。

因此在CCS3.1的gel文件中就多了这样一段函数:

view plaincopy to clipboardprint?
OnTargetConnect()   
{   
    /*------------------------------------------------------*/  
    /* GEL_Reset() is used to deal with the worst case      */  
    /* senario of unknown target state.  If for some reason */  
    /* a reset is not desired upon target connection,       */  
    /* GEL_Reset() may be removed and replaced with         */  
    /* something "less brutal" like a cache initialization  */  
    /* function.                                            */  
    /*------------------------------------------------------*/  
    //GEL_Reset();   
  
    init_emif();   
  
    GEL_TextOut("GEL StartUp Complete. ");   
}  
OnTargetConnect()
{
    /*------------------------------------------------------*/
    /* GEL_Reset() is used to deal with the worst case      */
    /* senario of unknown target state.  If for some reason */
    /* a reset is not desired upon target connection,       */
    /* GEL_Reset() may be removed and replaced with         */
    /* something "less brutal" like a cache initialization  */
    /* function.                                            */
    /*------------------------------------------------------*/
    //GEL_Reset();

    init_emif();

    GEL_TextOut("GEL StartUp Complete. ");
}


即在目标板连接的时候进行初始化操作,由此就可以理解为什么前面弹出的警告了,将SEEDDM642.gel对应的部分修改后在运行警告消失,即在软件打开时不对芯片初始化,改在芯片连接时进行。

一周热门 更多>