




免费预览已结束,剩余5页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、GEL简介GEL(General Extension Language,通用扩展语言)是类似与C的一种解释性语言,它可以创建GEL函数,以扩展CCS的用途。按照GEL的语法创建GEL函数加载到CCS即可。GEL支持以下类型的语句:函数定义函数参数调用GEL函数返回语句if-else语句while语句GEL注释预处理语句2.如何将GEL函数加载到CCS的GEL菜单a :hotmenu关键词/joseph addmenuitem Set_zone6 /*添加一级菜单Set_zone6*/hotmenu Set_zone6() /*在Set_zone6下添加二级菜单Set_zone6*/ *(long *)0x0B34 = 0x00014c1f; /*XINTCNF2 config*/*0x0B38 = 0x803e; /*XBANK config*/ *(long *)0x0B2C = 0x0043f1224; /*XTIMING6 config*/b : dialog关键词主要是创建一个需要输入参数的对话框dialog funcName(参数1 “参数说明”,参数2 “参数说明”,.)语句.c : silder 关键词主要是创建一个可以改变参数的滑动条3.在CCS启动时自动加载GEL函数将自己的函数加入到Startup()或者把自己的函数命名为Startup()4.GEL函数简介1).GEL_Go(adress)CCS菜单中的debug-Go Main就是调用的这个函数2).GEL_MapAdd( address , page , length , readable , writeable)address:存储器起始地址page:存储器类型0表示程序存储器,1表示数据存储器length:定义的存储器长度readable:定义存储器是否可读,1可读,0不可读writeable:定义存储器是否可写,1可写,0不可写3).GEL_WatchAdd(expression,lable)将表达式添加到Watch窗口,参数lable可选gel文件的应用GEL-通用扩展语言,无类型语言,只有int类型,当CCS运行时首先执行这个GEL函数当我们自己需要设定某功能上电后立即开启,那么可以在这个函数里面实现。以2407的看门狗为例子,因为上电后2407的看门狗是自动开启的,但我们在调试程序的时候都是把看门狗关闭的,所以想在调试程序的时候可以把关看门狗的任务放在GEL中。以下就是这个小程序#define WDCR 0X7029#define WDKEY 0X7025Startup() WDCR=0X68;Startup()函数在GEL文件加载时会自动运行,这样就可以实现上电关闭看门狗功能了GEL(General Extension Language 通用扩展语言)是一种解释语言,类似与C语言,这个文件中的函数是按照先后顺序执行的。GEL函数可以用来配置CCS开发环境,也可以用来初始化目标CPU。当启动CCS时,扫描启动的GEL文件并加载文件中包含的GEL函数,如果文件中包含Startup()函数,则包含的所有函数都运行GEL存储空间映射函数可以用来描述处理器的存储空间映射。Startup() /* startup 内的所有函数都要执行 */GEL_MapOn();GEL_MapAdd(0,0,0xf000,1,1);GEL_MapAdd(0,1,0xf000,1,1);1 GEL文件的改变 使用CCSStudio Setup工具,可以为在系统配置中的每一个处理器指定一个启动GEL文件。当CCSStudio启动时,GEL文件加载到PC机的内存中,如果定义了StartUp()函数则执行该函数。在CCSStudio(V2.3或更早的版本中),主机和目标板的初始化工作都在Startup()函数中执行。但是对于支持Connect/Disconnect的CCSStudio,这样的GEL文件有可能没有正确的执行,因为CCSStudio启动时和目标处理器是断开的。当Startup()函数试图访问目标处理器时会出错。一个新的回调函数OnTargetConnect()来执行目标处理器的初始化工作。2 GEL回调函数2.1 Startup()函数 如果指定的GEL文件中包含Startup()函数,当CCSStudio启动时执行Startup()函数。支持Connect/Disconnect的CCSStudio的启动时,Startup()函数中不包括访问目标处理器的代码,目标处理器由回调函数OnTargetConnect()来初始化。推荐:建立基本的CCSStudio内存映射关系(不需要访问目标处理器)任何不需要访问目标处理器的基本初始化不推荐:Get_Reset()(该函数通过仿真器复位目标处理器)通过GEL_BreakPtAdd()设置断点GEL_TextOUT()和GET_OpenWindow(),因为StartUp()执行时CCSStudio的任何控制窗口还没有打开不支持Connect/Disconnect的CCSStudio GEL文件中的StartUp()函数:/* The StartUp() function is called each time CCS is started. */* Customize this function to perform desired initialization. */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()函数:/* The StartUp() function is called each time CCS is started. */* Customize this function to perform desired initialization */* that will not access the target. */StartUp()setup_memory_map();2.2 OnTargetConnect()函数推荐:绝对最小的系统初始化处理,保证CCSStudio在目标处理器上处于一种可信赖的状态。例如:禁止看门狗时钟、DSP复位结束每一次和目标处理器建立连接时都调用OnTargetConnect()函数。/* OnTargetConnect() is called every time a target is connected.*/* Its execution finishes before anything else occurs. Customize*/* this function to perform essential target initialization. */OnTargetConnect()/ place critical target initialization steps hereGEL_Reset();init_emif();对某些平台,必须调用GEL_Reset()函数使得CCSStudio处于一种“Good”状态,可以通过测试来确定是否需要调用GEL_Reset()函数。应该尽可能的降低GEL startup functions复杂度-包括减少GEL_Reset()的调用。2.3 OnPreFileLoaded()函数 在加载program/symbol(.out)文件之前该回调函数执行。在该函数中执行另外的目标处理器初始化操作以保证程序可以加载和调试是一个好的选择。/* This function is called automatically when the Load Program*/* Menu item is selected. */OnPreFileLoaded()FlushCache();IER = 0;IFR = 0;init_emif();2.4 OnReset()函数 当目标处理器复位后该函数被调用。如果你需要每次重新启动程序设计了软复位,GEL_Restart()在此处调用。/* This function is called automatically after a SW Reset has been executed. OnReset(int nErrorCode)init_emif();2.5OnRestart()函数 当程序复位时调用该函数。This function is called by CCS when you do Debug-Restart. The goal is to put the C6x into a known good state with respect to cache, edma and interrupts. Failure to do this can cause problems when you restart and run code multiple times. OnRestart(int nErrorCode )Turn off L2 for all EMIFA CE spaces. App should manage these for coherency GEL_TextOut(Turn off cache segmentn);*(int *)0x1848200 = 0; /* MAR0 */*(int *)0x1848204 = 0; /* MAR1 */*(int *)0x1848208 = 0; /* MAR2 */*(int *)0x184820c = 0; /* MAR3 */* Disable EDMA events and interrupts and clear any pending events. */GEL_TextOut(Disable EDMA eventn); */*(int *)0x01A0FFA8 = 0; /* CIERH */*(int *)0x01A0FFB4 = 0; /* EERH */*(int *)0x01A0FFB8 = 0XFFFFFFFF; /* ECRH */*(int *)0x01A0FFE8 = 0; /* CIERL */*(int *)0x01A0FFF4 = 0; /* EERL */*(int *)0x01A0FFF8 = 0xFFFFFFFF; /* ECRL */* Disable other interrupts */IER = 0;IFR = 0;3 存储器映射 CCSStudio存储器映射告诉调试器目标处理器的那些存储区域可以访问那些不能访问。CCSStudio存储器映射一般在StartUp()函数种执行。3.1 GEL_MapAdd()函数该函数添加一个存储区域到存储区映射中。3.2 GEL_MapOn()和GEL_MapOff()函数 可以调用GEL_MapOn() or GEL_MapOff()来打开或关闭存储区映射。当存储区映射关闭时,CCSStudio假定可以访问所有的存储区空间。3.3 GEL_MapReset()函数 GEL_MapReset()函数清除所有的存储区映射。没有存储区映射时,缺省设置是所有的存储区空间都不能访问。4 尽量避免使用GEL初始化 可以考虑在GEL文件中使用GEL_MapAdd()建立存储区映射以准许CCSStudio可以调试,但是不在GEL文件中执行外设设置例如:EMIF寄存器初始化、看门狗禁止。 因为GEL语法和C兼容,inif_emif()函数可以在.c文件中实现,和应用程序链接在一起。但是要注意以下几点:l 使用“volatile”来保证变量不被优化。例如:*(volatile int *)EMIFA_SDRAMTIM = 0x00000618; /* SDRAM timing (refresh) */ 在编译调试过程中避免在GEL文件中进行外设设置,当到达了最终程序时,需要一个智能加载软件从FLASH或主机加载程序对EMIF进行设置,然后通过(E)DMA或memcpy()拷贝程序/数据。 *.gel是你的秘书,可以帮你打杂Gel文件用来处理一些繁琐的事情,例如我总是用Gel来自动初始化DSP系统,代码如下:StartUp() int i; /setup_memory_map(); for( i=0; i1000; i+) i=i; GEL_Reset(); for( i=0; i1000; i+) i=i; init_emif(); for( i=0; i1000; i+) i=i; GEL_ProjectLoad( D:tiMyProjectsEagleEyeV100EagleEye.pjt); for( i=0; i10000; i+) i=i; GEL_Load( D:tiMyProjectsEagleEyeV100debugEagleEye.out); for( i=0; i10000; i+) i=i; GEL_Go( main); 只要打开CCS,它就会自动依次执行:系统软件复位、配置EMIF的各种寄存器、打开项目文件、装载项目文件,并且自动执行到MAIN(),停在那里等着你继续操作。如果不用Gel,你就麻烦了。GEL 文件的功能同emuinit.cmd 的功能基本相同,用于初始化DSP。但它的功能比emuinit的功能有所增强,GEL 在CCS 下有一个菜单,可以根据DSP 的对象不同,设置不同的初始化程序。以TMS320LF2407 为例:#define SCSR1 0x7018 ;定义scsr1 寄存器#define SCSR2 0X7019 ;定义scsr2 寄存器 #defineWDKEY 0x7025 ;定义wdkey 寄存器#defineWDNTR 0x7029 ;定义wdntr 寄存器StartUp() ; 开始函数GEL_MapReset(); ; 存储空间复位GEL_MapAdd(0x0000,0,0x7fff,1,1); 定义程序空间从00007fff 可读写GEL_MapAdd(0x8000,0,0x7000,1,1); 定义程序空间从8000f000 可读写GEL_MapAdd(0x0000,1,0x10000,1,1); 定义数据空间从000010000 可读写GEL_MapAdd(0xffff,2,1,1,1); 定义i/o 空间0xffff 可读写GEL_MapOn(); 存储空间打开GEL_MemoryFill(0xffff,2,1,0x40); 在i/o 空间添入数值40h*(int *)SCSR1=0x0200; 给scsr1 寄存器赋值*(int *)SCSR2=0x000C; 给scsr2 寄存器赋值,在这里可以进行mp/mc 方式的转换*(int *)WDNTR=0x006f; 给wdntr 寄存器赋值*(int *)WDKEY=0x055; 给wdkey 寄存器赋值*(int *)WDKEY=0x0AA; 给wdkey 寄存器赋值GEL文件只是在仿真器和目标系统上电的时候起到初始化dsp的作用在上电后再改变GEL文件将不会对DSP产生影响除非断电后再上电贴上DSP5416的GEL文件/* set PMST to: MP = OVLY = 1; DROM off, CLKOUT on */#define PMST_VAL 0x0ffe0u /* set wait-state control reg for: 2 w/s or more on i/o; one for ext memory */#define SWWSR_VAL 0x2009u/* set external-banks switch control for: no bank switching; BH set */#define BSCR_VAL 0x02u/* Set Default Reset Initialization Value */#define ZEROS 0x0000u这一部分是对寄存器初始化/* Set Peripheral Control Register Addresses for DEV_RESET */#define DMPREC 0x0054u#define DMSA 0x0055u#define DMSDI 0x0056u#define DMA_CH0_DMFSC_SUB_ADDR 0x0003u#define DMA_CH1_DMFSC_SUB_ADDR 0x0008u#define DMA_CH2_DMFSC_SUB_ADDR 0x000Du#define DMA_CH3_DMFSC_SUB_ADDR 0x0012u#define DMA_CH4_DMFSC_SUB_ADDR 0x0017u#define DMA_CH5_DMFSC_SUB_ADDR 0x001cu#define MCBSP0_SPSA 0x0038u#define MCBSP0_SPSD 0x0039u#define MCBSP1_SPSA 0x0048u#define MCBSP1_SPSD 0x0049u#define MCBSP2_SPSA 0x0034u#define MCBSP2_SPSD 0x0035u#define MCBSP_SPCR1_SUB_ADDR 0x0000u#define MCBSP_SPCR2_SUB_ADDR 0x0001u#define MCBSP_SRGR1_SUB_ADDR 0x0006u#define MCBSP_SRGR2_SUB_ADDR 0x0007u#define MCBSP_MCR1_SUB_ADDR 0x0008u#define MCBSP_MCR2_SUB_ADDR 0x0009u#define SRGR1_INIT 0x0001u#define PRD0 0x0025u#define TCR0 0x0026u#define PRD1 0x0031u#define TCR1 0x0032u#define TIMER_STOP 0x0010u#define TIMER_RESET 0x0020u#define PRD_DEFAULT 0xFFFFu #define GPIOCR 0x0010uStartUp()C5416_Init(); GEL_TextOut(Gel StartUp complete.n);menuitem C5416_Configuration;hotmenu CPU_Reset()GEL_Reset();PMST = PMST_VAL;/* dont change the wait states, let the application code handle it */* note: at power up all wait states will be the maximum (7) */* SWWSR = SWWSR_VAL; */BSCR = BSCR_VAL;GEL_TextOut(CPU Reset Complete.n);/* All memory maps are based on the PMST value of 0xFFE8 */hotmenu C5416_Init()GEL_Reset();PMST = PMST_VAL;/* dont change the wait states, let the application code handle it */* note: at power up
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼教新理念新策略
- 工厂安全培训收获与体会课件
- 工厂安全培训总结报告课件
- 复合防火涂料耐久性机理-洞察及研究
- 手指画辣椒课件
- 手指操炒鸡蛋课件
- 化肥厂安全设备维护办法
- 学生食品安全课程培训课件
- 文化差异广告策略-洞察及研究
- 手卫生和消毒灭菌课件
- 教师岗位聘任申请书模板合集
- 2025重庆市公安局江北区分局辅警招聘60人考试参考题库及答案解析
- 巴中市恩阳区2025年专项招聘卫生专业技术人员的(50人)考试参考题库及答案解析
- 车规级芯片设计-洞察及研究
- 道路运输业安全培训课件
- 一年级新生家长会校长讲话:习惯奠基成长路家校同行护萌娃
- 2025【粮食购销合同范本】粮食购销合同
- 德邦防御性驾驶培训课件
- GJB3206B-2022技术状态管理
- 市政道路工程竣工验收报告
- 12、口腔科诊疗指南及技术操作规范
评论
0/150
提交评论