zoukankan      html  css  js  c++  java
  • VC5509的通用GEL代码

    GEL是通用扩展语言(General Extension Language)的英文缩写,GEL是一个大小写敏感但缺少类型检测的解释性语言,只有int类型,在语法上可看作是C语言的一个子集。GEL主要用来扩展CCS的功能,方便用户调试程序,但不是必需的。当我们希望上电后立刻开启或实现某些功能,那么可以在项目中装载GEL文件(由TI提供或用户自行编写)来实现这个目的。此外,项目添加TI公司提供的GEL文件后往往会在CCS的GEL菜单中出现相关的子菜单,用户可以使用它,主要用于程序的调试控制。GEL文件可以看成你所建项目的“秘书”,可以帮你打打杂,处理一些繁琐的事情。

    下面是一段VC5509的通用GEL文件代码:

      1 StartUp()
      2 {  
      3  GEL_MapOn();
      4  GEL_MapReset();
      5  GEL_MapAdd(0x0000C0,0,0x00FF40,1,1); 
      6  GEL_MapAdd(0x010000,0,0x030000,1,1); 
      7  GEL_MapAdd(0x040000,0,0x3C0000,1,1); 
      8  GEL_MapAdd(0x400000,0,0x400000,1,1); 
      9  GEL_MapAdd(0x800000,0,0x400000,1,1); 
     10  
     11  GEL_MapAdd(0xC00000,0,0x400000,1,1); 
     12  
     13  GEL_MapAdd(0xFF0000,0,0x010000,1,0); 
     14 
     15  GEL_MapAdd(0x000000,1,0x000050,1,1); 
     16  GEL_MapAdd(0x000060,1,0x007FA0,1,1); 
     17  GEL_MapAdd(0x008000,1,0x018000,1,1); 
     18  GEL_MapAdd(0x020000,1,0x1E0000,1,1); 
     19  GEL_MapAdd(0x200000,1,0x200000,1,1); 
     20  GEL_MapAdd(0x400000,1,0x200000,1,1); 
     21  
     22  GEL_MapAdd(0x600000,1,0x200000,1,1); 
     23  
     24  
     25  GEL_MapAdd(0x0001,2,0x0002,1,1); 
     26  GEL_MapAdd(0x0400,2,0x0300,1,1); 
     27  GEL_MapAdd(0x07FE,2,0x0002,1,1); 
     28  GEL_MapAdd(0x0800,2,0x0014,1,1); 
     29  GEL_MapAdd(0x0C00,2,0x000C,1,1); 
     30  GEL_MapAdd(0x0C20,2,0x000C,1,1); 
     31  GEL_MapAdd(0x0C40,2,0x000C,1,1); 
     32  GEL_MapAdd(0x0C60,2,0x000C,1,1); 
     33  GEL_MapAdd(0x0C80,2,0x000C,1,1); 
     34  GEL_MapAdd(0x0CA0,2,0x000C,1,1); 
     35  GEL_MapAdd(0x0E00,2,0x0001,1,1); 
     36  GEL_MapAdd(0x0E03,2,0x0001,1,1); 
     37  GEL_MapAdd(0x1000,2,0x0004,1,1); 
     38  GEL_MapAdd(0x1800,2,0x000D,1,1); 
     39  GEL_MapAdd(0x1C00,2,0x0001,1,1); 
     40  GEL_MapAdd(0x1E00,2,0x0001,1,1); 
     41  GEL_MapAdd(0x2400,2,0x0004,1,1); 
     42  GEL_MapAdd(0x2800,2,0x001F,1,1); 
     43  GEL_MapAdd(0x2C00,2,0x001F,1,1); 
     44  GEL_MapAdd(0x3000,2,0x001F,1,1); 
     45  GEL_MapAdd(0x3400,2,0x0002,1,1); 
     46  GEL_MapAdd(0x3800,2,0x0005,1,1); 
     47  GEL_MapAdd(0x3C00,2,0x000D,1,1); 
     48  GEL_MapAdd(0x4000,2,0x0004,1,1); 
     49  GEL_MapAdd(0x4400,2,0x0006,1,1); 
     50  GEL_MapAdd(0x4800,2,0x001B,1,1); 
     51  GEL_MapAdd(0x4C00,2,0x001B,1,1); 
     52  GEL_MapAdd(0x5800,2,0x1000,1,1); 
     53  GEL_MapAdd(0x6800,2,0x0004,1,1); 
     54  GEL_MapAdd(0x6C00,2,0x0001,1,1); 
     55  GEL_MapAdd(0x7000,2,0x0002,1,1); 
     56  GEL_MapAdd(0x7400,2,0x0001,1,1); 
     57  GEL_TextOut("Gel StartUp Complete.
    ");
     58 }
     59 OnTargetConnect()
     60 {
     61  C5509_Init();
     62 }
     63 menuitem "C5509_Configuration";
     64 hotmenu CPU_Reset()
     65 {
     66  GEL_Reset();
     67  GEL_TextOut("CPU Reset Complete.
    ");
     68 }
     69 
     70 hotmenu C5509_Init()
     71 {
     72  GEL_Reset();
     73  TMCR_Reset();
     74  GEL_TextOut("C5509 Memory Map Initialization Complete.
    ");
     75 }
     76 
     77 hotmenu C5509_USB_Enable()
     78 {
     79  GEL_MemoryFill(0x7000,2,1,0x0004);
     80  GEL_TextOut("C5509 USB Module enabled.
    ");
     81 }
     82 menuitem "C5509 EBSR Config";
     83 hotmenu Data_EMIF_En()
     84 {
     85  GEL_MemoryFill(0x6C00,2,1,0x0200);
     86  GEL_TextOut("C5509 Ext. Bus set to Data EMIF.
    ");
     87 }
     88 hotmenu Full_EMIF_En()
     89 {
     90  GEL_MemoryFill(0x6C00,2,1,0x0201);
     91  GEL_TextOut("C5509 Ext. Bus set to Full EMIF.
    ");
     92 }
     93 hotmenu NonMuxed_EHPI_En()
     94 {
     95  GEL_MemoryFill(0x6C00,2,1,0x0202);
     96  GEL_TextOut("C5509 Ext. Bus set to Non Muxed EHPI.
    ");
     97 }
     98 hotmenu MuxEHPI_En()
     99 {
    100  GEL_MemoryFill(0x6C00,2,1,0x0203);
    101  GEL_TextOut("C5509 Ext. Bus set to Muxed EHPI.
    ");
    102 }
    103 menuitem "C5509 EMIF CE0 Config";
    104 hotmenu CE0_Async16_En()
    105 {
    106  GEL_MemoryFill(0x0803,2,1,0x1FFF);
    107  GEL_TextOut("C5509 CE0 set to 16-bit Async mode.
    ");
    108 }
    109 menuitem "C5509 EMIF CE1 Config";
    110 hotmenu CE1_Async16_En()
    111 {
    112  GEL_MemoryFill(0x0806,2,1,0x1FFF);
    113  GEL_TextOut("C5509 CE1 set to 16-bit Async mode.
    ");
    114 }
    115 menuitem "C5509 EMIF CE2 Config";
    116 hotmenu CE2_Async16_En()
    117 {
    118  GEL_MemoryFill(0x0809,2,1,0x1FFF);
    119  GEL_TextOut("C5509 CE2 set to 16-bit Async mode.
    ");
    120 }
    121 menuitem "C5509 EMIF CE3 Config";
    122 hotmenu CE3_Async16_En()
    123 {
    124  GEL_MemoryFill(0x080C,2,1,0x1FFF);
    125  GEL_TextOut("C5509 CE3 set to 16-bit Async mode.
    ");
    126 }
    127 
    128 TMCR_Reset()
    129 {
    130  #define TMCR_MGS3 0x07FE
    131  #define TMCR_MM  0x07FF
    132  *(short *)TMCR_MGS3@IO = 0x0510;
    133  *(short *)TMCR_MM@IO    = 0x0000;
    134 }

    可以看到:GEL文件主要用来对VC5509的程序空间、数据空间、I/O空间等进行初始化,同时配置CCS开发环境,建立子菜单供用户在调试程序时选择使用。CCS启动时,Startup()函数被执行。支持Connect/Disconnect的CCS启动时,Startup()函数中不包括访问目标处理器的代码,目标处理器由回调函数OnTargetConnect()来初始化。

    注意:GEL文件在CCS启动后常驻内存,在仿真器和目标系统上电的时候起到初始DSP的作用。在上电后再改变GEL文件将不会对DSP产生影响。

  • 相关阅读:
    Python基础(6)--条件、循环
    sql中limit和汇总函数的集合使用
    mysql查看表结构
    Axure RP Extension for Chrome
    安装android studio报错Failed to install Intel HAXM.
    java8 环境变量设置
    C、C++文件操作大全
    sqlite3 sqlite3_prepare、sqlite3_step使用
    C/C++获取当前系统时间
    C++ 字符串转化成浮点型
  • 原文地址:https://www.cnblogs.com/Camilo/p/3336935.html
Copyright © 2011-2022 走看看