https://blog.csdn.net/wordwarwordwar/article/details/83653611

GEL文件是配合CCS集成环境使用的,起到配置CCS环境和初始化dsp环境的作用。

gel文件中主要包含PLL, DDR的初始化,具体你可以打开gel文件看看。

在CCS环境下调试时,在load程序之前可以选择运行gel文件,这样在你的应用程序中就不需要再次进行PLL及DDR的初始化。

在CCS环境下也可以不用gel文件,此时需要在程序运行起来后在应用程序中初始化PLL及DDR等,但是需要注意的是由于DDR未被初始化,所以此时的代码不能放在DDR。

在脱离CCS环境调试时,在加载程序前需要保证PLL及DDR初始化。

GEL文件中主要是对芯片的初始化。

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

1、GEL文件的改变

使用CCS Setup工具,可以为在系统配置中的每一个处理器指定一个启动GEL文件。当CCS启动时,GEL文件加载到PC机的内存中,如果定义了StartUp()函数则执行该函数。在CCS(V2.3或更早版本),主机和目标板的初始化工作都在Startup()函数中执行。但对于支持Connect/Disconnect的CCS,这样的GEL文件有可能没有正确执行,因为CCS启动时和目标处理器是断开的。当Startup()函数试图访问目标处理器时会出错。一个新的回调函数OnTargetConnect()来执行目标处理器的初始化工作。

2、GEL回调函数

(1)Startup()函数

如果指定的GEL文件中包含Startup()函数,当CCS启动时执行Startup()函数。支持Connect/Disconnect的CCS启动时,Startup()函数中不包括访问目标处理器的代码,目标处理器由回调函数OnTargetConnect()来初始化。

推荐:

建立基本的CCS内存映射关系(不需要访问目标处理器);任何不需要访问目标处理器的基本初始化。

不推荐:

Get_Reset()(该函数通过仿真器复位目标处理器);通过GEL_BreakPtAdd()设置断点;GEL_TextOUT()和GET_OpenWindow(),因为StartUp()执行时CCS的任何控制窗口还没有打开。

不支持Connect/Disconnect的CCS GEL文件中的StartUp()函数:

StartUp()

{

setup_memory_map();

GEL_Reset();

init_emif();

}

支持Connect/Disconnect的CCS GEL文件中的StartUp()函数:

StartUp()

{

setup_memory_map();

}

(2)OnTargetConnect()函数

推荐:

绝对最小的系统初始化处理,保证CCS在目标处理器上处于一种可信赖的状态。例如:禁止看门狗时钟、DSP复位结束。

每一次和目标处理器建立连接时都调用OnTargetConnect()函数。

OnTargetConnect()

{

// place critical target initialization steps here

GEL_Reset();

init_emif();

}

对某些平台,必须调用GEL_Reset()函数使得CCS处于一种“Good”状态,可以通过测试来确定是否需要调用GEL_Reset()函数。应该尽可能的降低GEL startup functions复杂度——包括减少GEL_Reset()的调用。

(3)OnPreFileLoaded()函数

在加载program/symbol(.out)文件之前该回调函数执行。在该函数中执行另外的目标处理器初始化操作以保证程序可以加载和调试是一个好的选择。

OnPreFileLoaded()

{

FlushCache();

IER = 0;

IFR = 0;

init_emif();

}

(4)OnReset() 函数

当目标处理器复位后该函数被调用。如果需要每次重新启动程序,设计了软复位,GEL_Restart()在此处调用。

OnReset(int nErrorCode)

{

init_emif();

}

(5)OnRestart() 函数

当程序复位时调用该函数。

OnRestart(int nErrorCode )

{

GEL_TextOut(“Turn off cache segmentn”);

*(int *)0x1848200 = 0;

*(int *)0x1848204 = 0;

*(int *)0x1848208 = 0;

*(int *)0x184820c = 0;

GEL_TextOut(“Disable EDMA eventn”); */

*(int *)0x01A0FFA8 = 0;

*(int *)0x01A0FFB4 = 0;

*(int *)0x01A0FFB8 = 0XFFFFFFFF;

*(int *)0x01A0FFE8 = 0;

*(int *)0x01A0FFF4 = 0;

*(int *)0x01A0FFF8 = 0xFFFFFFFF;

IER = 0;

IFR = 0;

}

3、存储器映射

CCS存储器映射告诉调试器目标处理器的哪些存储区域可以访问哪些不能访问。CCS存储器映射一般在StartUp()函数种执行。

(1)GEL_MapAdd()函数

该函数添加一个存储区域到存储区映射中。

(2)GEL_MapOn()和GEL_MapOff()函数

可以调用GEL_MapOn() or GEL_MapOff()来打开或关闭存储区映射。当存储区映射关闭时,CCSStudio假定可以访问所有的存储区空间。

(3)GEL_MapReset()函数

GEL_MapReset()函数清除所有的存储区映射。没有存储区映射时,缺省设置是所有的存储区空间都不能访问。

4、尽量避免使用GEL初始化

可以考虑在GEL文件中使用GEL_MapAdd()建立存储区映射以准许CCS可以调试,但是不在GEL文件中执行外设设置例如:EMIF寄存器初始化、看门狗禁止。

因为GEL语法和C兼容,inif_emif()函数可以在.c文件中实现,和应用程序链接在一起。但是要注意以下几点:

使用“volatile”来保证变量不被优化。例如:

*(volatile int *)EMIFA_SDRAMTIM = 0x00000618;

在编译调试过程中避免在GEL文件中进行外设设置,当到达了最终程序时,需要一个智能加载软件从FLASH或主机加载程序对EMIF进行设置,然后通过(E)DMA或memcpy()拷贝程序/数据。

DSP_F28335入门(1)——新建工程之gel文件解释相关推荐

  1. DSP的GEL文件介绍

    gel文件中主要包含PLL, DDR的初始化,具体你可以打开gel文件看看. 在CCS环境下调试时,在load程序之前可以选择运行gel文件,这样在你的应用程序中就不需要再次进行PLL及DDR的初始化 ...

  2. 【DSP开发】gel文件编写

    以下转载自:http://blog.csdn.net/henhen2002/article/details/4573447 GEL--通用扩展语言,无类型语言,只有int类型,当CCS运行时首先执行这 ...

  3. gel文件的作用——摘自百度

    1 GEL文件基本作用 当CCSStudio启动时,GEL文件加载到PC机的内存中,如果定义了StartUp()函数则执行该函数.在CCSStudio(V2.3或更早的版 本中),主机和目标板的初始化 ...

  4. dsp的gel文件认识

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

  5. CCS中的.gel文件

    CCS的GEL语言是一种交互式的命令,它是解释执行的,即不能被编译成可执行文件.它的作用在于扩展了CCS Studio的功能,可以用gel来调用一些菜单命令,对DSP的存储器进行初始化配置等. 对于不 ...

  6. DSP的GEL文件详解

    转自:点击打开链接 GEL(Genenal Extension Language,通用扩展语言),可以配置CCS的工作环境和初始化CPU,一句话---初始化目标板. 1.初始化外部存储空间 在开始学习 ...

  7. DM642中gel文件

    关于CCS中gel文件的使用,可以参考TI的应用笔记SPRAA74A---Creating Device Initialization GEL File. gel文件在启动CCS的时候一般用来初始化器 ...

  8. Python编程从入门到实践 第十章:文件和异常 练习答案记录

    Python编程从入门到实践 第十章:文件和异常 练习答案记录 练习题导航 Python编程从入门到实践 第十章:文件和异常 练习答案记录 10.1 从文件中读取数据 10.1.1 读取整个文件 10 ...

  9. 【Gazebo入门教程】第三讲 SDF文件的静/动态编程建模

    [Gazebo入门教程]第三讲 SDF文件的静/动态编程建模 文章目录 [Gazebo入门教程]第三讲 SDF文件的静/动态编程建模 一.自定义模型并导入Gazebo 1. 基础操作准备 2. 建立模 ...

最新文章

  1. flask mysql项目模板渲染_[Flask] Flask问题集(后端模板渲染项目)
  2. Android消息处理机制
  3. C#中的多线程 - 同步基础
  4. .NET Core Community 第三个千星项目诞生:爬虫 DotnetSpider
  5. [bzoj2127]happiness
  6. bzoj1639[Usaco2007 Mar]Monthly Expense 月度开支*
  7. wsdl可以访问单但是调不通_Dubbo 一些你不一定知道但是很好用的功能
  8. ES6新特性_ES6迭代器技术---JavaScript_ECMAScript_ES6-ES11新特性工作笔记018
  9. Excel宏的自动运行设置
  10. 电子密封胶正常固化与非正常固化差别是什么?
  11. 计算机专业改动漫设计,《计算机动漫与游戏制作》专业课程体系改革方案.doc...
  12. jbpm的流程变量与任务变量的存取与更新
  13. 对外合作,你的作风就是公司的作风
  14. IIC详解之AT24C08
  15. NOIP 2016 年普及组初赛试题整理
  16. 高校学生档案管理系统(Angularjs+HTML+CSS+bootstrap)
  17. Vue - 中文汉字转拼音(工具函数封装)
  18. html页面访pdf样式,html网页布局模板.pdf
  19. JMC | 基于机器学习精确预测激酶抑制剂结合模式
  20. Qt 实现双滑块滑条 range slider

热门文章

  1. 俺是东北人,俺骄傲!
  2. Java虚拟机学习笔记(一)—Java虚拟机概述
  3. Lesson 16 Mary had a little lamb 内容鉴赏
  4. 我的第一个QT程序——QT开发环境的配置
  5. 有一个属于自己的网站是不是很酷呢,超详细的建站流程,我都给你总结好了
  6. xp下,输入法不能删除,也不能添加(所有添加和删除的按钮都为灰色)的解决方法
  7. 思杰改进图形以提升虚拟桌面性能
  8. 香港个人银行开户会问什么问题,怎么回答?
  9. 计算机网络(谢希仁-第八版)第五章习题全解
  10. 进程:multiprocessing