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

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

 StartUp()
{
GEL_MapOn();
GEL_MapReset();
GEL_MapAdd(0x0000C0,,0x00FF40,,);
GEL_MapAdd(0x010000,,0x030000,,);
GEL_MapAdd(0x040000,,0x3C0000,,);
GEL_MapAdd(0x400000,,0x400000,,);
GEL_MapAdd(0x800000,,0x400000,,); GEL_MapAdd(0xC00000,,0x400000,,); GEL_MapAdd(0xFF0000,,0x010000,,); GEL_MapAdd(0x000000,,0x000050,,);
GEL_MapAdd(0x000060,,0x007FA0,,);
GEL_MapAdd(0x008000,,0x018000,,);
GEL_MapAdd(0x020000,,0x1E0000,,);
GEL_MapAdd(0x200000,,0x200000,,);
GEL_MapAdd(0x400000,,0x200000,,); GEL_MapAdd(0x600000,,0x200000,,); GEL_MapAdd(0x0001,,0x0002,,);
GEL_MapAdd(0x0400,,0x0300,,);
GEL_MapAdd(0x07FE,,0x0002,,);
GEL_MapAdd(0x0800,,0x0014,,);
GEL_MapAdd(0x0C00,,0x000C,,);
GEL_MapAdd(0x0C20,,0x000C,,);
GEL_MapAdd(0x0C40,,0x000C,,);
GEL_MapAdd(0x0C60,,0x000C,,);
GEL_MapAdd(0x0C80,,0x000C,,);
GEL_MapAdd(0x0CA0,,0x000C,,);
GEL_MapAdd(0x0E00,,0x0001,,);
GEL_MapAdd(0x0E03,,0x0001,,);
GEL_MapAdd(0x1000,,0x0004,,);
GEL_MapAdd(0x1800,,0x000D,,);
GEL_MapAdd(0x1C00,,0x0001,,);
GEL_MapAdd(0x1E00,,0x0001,,);
GEL_MapAdd(0x2400,,0x0004,,);
GEL_MapAdd(0x2800,,0x001F,,);
GEL_MapAdd(0x2C00,,0x001F,,);
GEL_MapAdd(0x3000,,0x001F,,);
GEL_MapAdd(0x3400,,0x0002,,);
GEL_MapAdd(0x3800,,0x0005,,);
GEL_MapAdd(0x3C00,,0x000D,,);
GEL_MapAdd(0x4000,,0x0004,,);
GEL_MapAdd(0x4400,,0x0006,,);
GEL_MapAdd(0x4800,,0x001B,,);
GEL_MapAdd(0x4C00,,0x001B,,);
GEL_MapAdd(0x5800,,0x1000,,);
GEL_MapAdd(0x6800,,0x0004,,);
GEL_MapAdd(0x6C00,,0x0001,,);
GEL_MapAdd(0x7000,,0x0002,,);
GEL_MapAdd(0x7400,,0x0001,,);
GEL_TextOut("Gel StartUp Complete.\n");
}
OnTargetConnect()
{
C5509_Init();
}
menuitem "C5509_Configuration";
hotmenu CPU_Reset()
{
GEL_Reset();
GEL_TextOut("CPU Reset Complete.\n");
} hotmenu C5509_Init()
{
GEL_Reset();
TMCR_Reset();
GEL_TextOut("C5509 Memory Map Initialization Complete.\n");
} hotmenu C5509_USB_Enable()
{
GEL_MemoryFill(0x7000,,,0x0004);
GEL_TextOut("C5509 USB Module enabled.\n");
}
menuitem "C5509 EBSR Config";
hotmenu Data_EMIF_En()
{
GEL_MemoryFill(0x6C00,,,0x0200);
GEL_TextOut("C5509 Ext. Bus set to Data EMIF.\n");
}
hotmenu Full_EMIF_En()
{
GEL_MemoryFill(0x6C00,,,0x0201);
GEL_TextOut("C5509 Ext. Bus set to Full EMIF.\n");
}
hotmenu NonMuxed_EHPI_En()
{
GEL_MemoryFill(0x6C00,,,0x0202);
GEL_TextOut("C5509 Ext. Bus set to Non Muxed EHPI.\n");
}
hotmenu MuxEHPI_En()
{
GEL_MemoryFill(0x6C00,,,0x0203);
GEL_TextOut("C5509 Ext. Bus set to Muxed EHPI.\n");
}
menuitem "C5509 EMIF CE0 Config";
hotmenu CE0_Async16_En()
{
GEL_MemoryFill(0x0803,,,0x1FFF);
GEL_TextOut("C5509 CE0 set to 16-bit Async mode.\n");
}
menuitem "C5509 EMIF CE1 Config";
hotmenu CE1_Async16_En()
{
GEL_MemoryFill(0x0806,,,0x1FFF);
GEL_TextOut("C5509 CE1 set to 16-bit Async mode.\n");
}
menuitem "C5509 EMIF CE2 Config";
hotmenu CE2_Async16_En()
{
GEL_MemoryFill(0x0809,,,0x1FFF);
GEL_TextOut("C5509 CE2 set to 16-bit Async mode.\n");
}
menuitem "C5509 EMIF CE3 Config";
hotmenu CE3_Async16_En()
{
GEL_MemoryFill(0x080C,,,0x1FFF);
GEL_TextOut("C5509 CE3 set to 16-bit Async mode.\n");
} TMCR_Reset()
{
#define TMCR_MGS3 0x07FE
#define TMCR_MM 0x07FF
*(short *)TMCR_MGS3@IO = 0x0510;
*(short *)TMCR_MM@IO = 0x0000;
}

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

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

VC5509的通用GEL代码的更多相关文章

  1. div+css通用兼容性代码整理

    一.Div+css通用兼容性代码 你可以在css开头加入 *html{padding:0px} <style> *html{padding:0px} /* Clear Fix */ .cl ...

  2. easyui弹出层在最顶层显示跳出iframe框架通用javascript代码

    有时候我们用easyui在后台框架中弹框的时候,总是显示在框架页面里面而不是整个系统框架的上面,看着有些不太乐意. dialog = function (opts) { var query = par ...

  3. 网站安全通用防护代码(C#版本源码提供)

    每一个开发者都会意识到,网站发布之前,需要进行安全检查. 那么如何拦截攻击者注入恶意代码?如何防御诸如跨站脚本攻击(XSS).SQL注入攻击等恶意攻击行为? 针对目前常见的一些安全问题,结合目前一些常 ...

  4. JavaScript之通用addLoadEvent代码源码

    在执行javascript代码时 很多情况下 我们是希望代码在网页加载完毕后立刻进行的 大家可能会立刻想到使用window.onload时间处理函数,然后通过 window.onload=functi ...

  5. java清除所有微博短链接 Java问题通用解决代码

    java实现微博短链接清除,利用正则,目前只支持微博短链接格式为"http://域名/字母或数字8位以内"的链接格式,现在基本通用 如果链接有多个,返回结果中会有多出的空格,请注意 ...

  6. C#导入导出数据到Excel的通用类代码

    Excel文件导入导出,需引用Microsoft Excel 11.0 Object Library ///////////////////////////////////////////////// ...

  7. java中按字节获得字符串长度的两种方法 Java问题通用解决代码

    jdk本身就自带获取字符串字节长度的api了,但字符串如果包含特殊符号或全半角符号或标点符号获取到的结果会有偏差,最好的证据就是新浪微博的字数统计了 // jdk自带的获取字节长度 //注意getBy ...

  8. java 实现新浪微博内容计数器 Java问题通用解决代码

    http://www.mr3g.net/?p=220 参考sina的js版本而来,费弄最多的时间就是java对ansii码的判断了,js直接就是isascii()函数就可以实现了,java还要想办法 ...

  9. java替换文本中所有的正则符号 Java问题通用解决代码

    开发时遇到一个需求,需要对一段文本中的所有正则符号进行转义,不然使用split分割方法分割文本的话无效,想到用替换来做,全部替换正则符号为转义后的符号   贴java实现代码:   1.测试版     ...

随机推荐

  1. 【深入比较ThreadLocal模式与synchronized关键字】

    [深入比较ThreadLocal模式与synchronized关键字]ThreadLocal模式与synchronized关键字都是用于处理多线程并发访问变量的问题.只是两者处理问题的角度和思路不同. ...

  2. MySQL5.7重置root密码

    版本更新 缘故,好多网上的教程都不适用了,甚至连官网的文档也不是能够顺利操作的. 如果 MySQL 正在运行,首先杀之: killall -TERM mysqld. 运行mysqld_safe --s ...

  3. delphi 类型转化

    1.typecasting类型强制转化 var B : Boolean; Begin B := Boolean(1); End; 对于对象和接口,采用as操作符进行转化,但要先进行兼容性判断. 2.P ...

  4. SymPy库常用函数

    简介 SymPy是一个符号计算的Python库.它的目标是成为一个全功能的计算机代数系统,同时保持代码简 洁.易于理解和扩展.它完全由Python写成,不依赖于外部库.SymPy支持符号计算.高精度计 ...

  5. 相比于汇编语言的准确性c语言延时精确度如何提升

    只要合理的运用,C还是可以达到意想不到的效果.很多朋友抱怨C效率比汇编差了很多,其实如果对Keil C的编译原理有一个较深入的理解,是可以通过恰当的语法运用,让生成的C代码达到最优化.即使这看起来不大 ...

  6. python 小技巧(import模块、查询类继承关系、安装包)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在这里列举一些我使用Python时积累的小技巧.这些技巧是我在使用Python过程 ...

  7. javascript中方法调用与方括号[]

    看jquery时遇到一行: $(this)["removeClass"]("selected"); 这一行等同于下面的一行: $(this).removeCla ...

  8. ping通IP,telnet 3306不通

    一个同事装的MySQL数据库,无法连接.​​1.查看权限​​2.查看防火墙​​检查用户权限,防火墙都没问题,就是无法连接,能ping通,但是telnet 3306 端口无法成功.​​检查了下数据库配置 ...

  9. Android中BaseAdapter的基本用法和加载自定义布局!

    public class MainActivity extends Activity { ListView listView = null; @Override protected void onCr ...

  10. OpenStack:安装Keystone

    >安装Keystone1. 安装# apt-get install keystone2. 创建dbcreate database keystone;grant all privileges on ...