开发者社区> 文艺小青年> 正文

CCS2.2和CCS3.1在读写GEL文件上的区别之二

简介:
+关注继续查看

下面具体谈一下GEL文件的执行过程。使用CCSStudio Setup工具,可以为在系统配置中的每一个处理器指定一个启动GEL 件。当CCSStudio启动时,GEL 件加载到PC机的内存中,由CCS根据加载的GEL文件对目标板进行初始化。在CCS2.2,主机和目标板的初始化工作都在GEL文件的Startup()函数中执行,而CCS2.2必须在打开时就会连接目标板同时进行初始化。但是对于支持Connect/DisconnectCCSStudio例如CCS3.1,打开后目标板并没有被自动连接,这样的GEL文件中的初始化程序并没有正确执行,因为CCSStudio启动时和目标处理器是断开的。当Startup()函数试图访问目标处理器时会出错。因此在CCS3.1中需要回调函数来重新执行初始化。下面可以将SEEDDM642.gelEVMDM642.gel做一个对比。

首先是SEEDDM642.gel中的StartUp()

  1. StartUp()  
  2. {  
  3.     setup_memory_map();  
  4.     GEL_Reset();    
  5.     init_emif();  
  6. }  

EVMDM642.gel中的StartUp()

 

  1. StartUp()  
  2. {  
  3.     setup_memory_map();  
  4.   
  5.     /*------------------------------------------------------*/  
  6.     /* Uncomment the OnTargetConnect() call for CCS 2.X     */  
  7.     /* support.                                             */  
  8.     /*                                                      */  
  9.     /*                                                      */  
  10.     /*------------------------------------------------------*/  
  11.     //OnTargetConnect();  
  12. }  

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

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

  1. OnTargetConnect()  
  2. {  
  3.     /*------------------------------------------------------*/  
  4.     /* GEL_Reset() is used to deal with the worst case      */  
  5.     /* senario of unknown target state.  If for some reason */  
  6.     /* a reset is not desired upon target connection,       */  
  7.     /* GEL_Reset() may be removed and replaced with         */  
  8.     /* something "less brutal" like a cache initialization  */  
  9.     /* function.                                            */  
  10.     /*------------------------------------------------------*/  
  11.     //GEL_Reset();  
  12.   
  13.     init_emif();  
  14.   
  15.     GEL_TextOut("GEL StartUp Complete./n");  
  16. }  

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

    同样可以看一下gel文件中的其他函数:

  1. /*--------------------------------------------------------------*/  
  2. /* OnReset()                                                    */  
  3. /* This function is called by CCS when you do Debug->Resest.    */  
  4. /* The goal is to put the C6x into a known good state with      */  
  5. /* respect to cache, edma and interrupts.                       */  
  6. /*--------------------------------------------------------------*/  
  7. OnReset( int nErrorCode )  
  8. {  
  9.     init_emif();  
  10. }  
  11.   
  12. /*--------------------------------------------------------------*/  
  13. /* OnPreFileLoaded()                                            */  
  14. /* This function is called automatically when the 'Load Program'*/  
  15. /* Menu item is selected.                                       */  
  16. /*--------------------------------------------------------------*/  
  17. OnPreFileLoaded()  
  18. {  
  19.     /*------------------------------------------------------*/  
  20.     /* GEL_Reset() is used to deal with the worst case      */  
  21.     /* senario of unknown target state.  If for some reason */  
  22.     /* a reset is not desired upon target connection,       */  
  23.     /* GEL_Reset() may be removed and replaced with         */  
  24.     /* something "less brutal" like a cache initialization  */  
  25.     /* function.                                            */  
  26.     /*------------------------------------------------------*/  
  27.     //GEL_Reset();  
  28.   
  29.     flush_cache();  
  30.     IER = 0;  
  31.     IFR = 0;  
  32.     init_emif();  
  33. }  
  34.   
  35. /*--------------------------------------------------------------*/  
  36. /* OnRestart()                                                  */  
  37. /* This function is called by CCS when you do Debug->Restart.   */  
  38. /* The goal is to put the C6x into a known good state with      */  
  39. /* respect to cache, edma and interrupts.                       */  
  40. /* Failure to do this can cause problems when you restart and   */  
  41. /* run your application code multiple times.  This is different */  
  42. /* then OnPreFileLoaded() which will do a GEL_Reset() to get the*/  
  43. /* C6x into a known good state.                                 */  
  44. /*--------------------------------------------------------------*/  
  45. OnRestart( int nErrorCode )  
  46. {  
  47.     /*------------------------------------------------------*/  
  48.     /* Turn off L2 for all EMIFA CE spaces.  App should     */  
  49.     /* manage these for coherancy in the application.       */  
  50.     /* GEL_TextOut("Turn off cache segment/n");             */  
  51.     /*------------------------------------------------------*/  
  52.     *(int*)0x01848200 = 0;          // MAR0  
  53.     *(int*)0x01848204 = 0;          // MAR1  
  54.     *(int*)0x01848208 = 0;          // MAR2  
  55.     *(int*)0x0184820c = 0;          // MAR3  
  56.   
  57.     /*------------------------------------------------------*/  
  58.     /* Disable EDMA events and interrupts and clear any     */  
  59.     /* pending events.                                      */  
  60.     /* GEL_TextOut("Disable EDMA event/n");                 */  
  61.     /*------------------------------------------------------*/  
  62.     *(int*)0x01A0FFA8 = 0;          // CIERH  
  63.     *(int*)0x01A0FFB4 = 0;          // EERH  
  64.     *(int*)0x01A0FFB8 = 0XFFFFFFFF; // ECRH  
  65.   
  66.     *(int*)0x01A0FFE8 = 0;          // CIERL  
  67.     *(int*)0x01A0FFF4 = 0;          // EERL  
  68.     *(int*)0x01A0FFF8 = 0xFFFFFFFF; // ECRL  
  69.   
  70.     /* Disable other interrupts */  
  71.     IER = 0;  
  72.     IFR = 0;  
  73. }  

本文转自emouse博客园博客,原文链接:http://www.cnblogs.com/emouse/archive/2010/03/21/2198234.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
easyUi 框架中的JS文件传递参数的区别
1.情景一 //JS文件 ajax的请求url : parent.baseUrl+"user/customer/findOne/" + id, //后台JAVA代码接收参数 @RequestMapping(value = "findOne/{id}") @ResponseBody ...
641 0
嵌入式 互斥锁和读写锁区别
  /*  * 线程同步——互斥量  * 创建两个线程,使用互斥量使任一时刻只有一个线程对全局变量进行 操作  * Lzy 2011-6-19  */ #include  #include  #include  pthread_mutex_t mutex;   ...
810 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
19733 0
webpack和webpack-simple区别(如何引入css文件)
博主最近研究vue+webpack的时候想引入css文件死活引入不出来,在webpack-simple那里却能引得出来,十分的纳闷,然后细心的调试了一下,原来这webpack和webpack-simple两个东西引入css文件有点区别。
732 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
18003 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
24808 0
3576
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载