DSP的Gel作用
DSP的Gel作用
1 GEL文件基本作用
当CCSStudio启动时,GEL文件加载到PC机的内存中,如果定义了StartUp()函数则执行该函数在CCSStudio(V2.3或更早的版本中),主机和目标板的初始化工作都在Startup()函数中执行但是对于支持Connect/Disconnect的CCSStudio(V2.4或之后的版本,尤其3.1版本),这样的GEL文件有可能没有正确的执行,因为CCSStudio启动时和目标处理器是断开的这个时候,当Startup()函数试图访问目标处理器时会出错
因此,V2.4或之后的版本,尤其3.1版本CCS启动时候,一个新的回调函数OnTargetConnect()来执行目标处理器的初始化工作
2 GEL回调函数
2.1 Startup()函数
如果指定的GEL文件中包含Startup()函数,当 CCSStudio启动时执行Startup()函数支持Connect/Disconnect的CCSStudio的启动时,Startup()函数中 不包括访问目标处理器的代码,目标处理器由回调函数OnTargetConnect()来初始化
推荐:
l 建立基本的CCSStudio内存映射关系(不需要访问目标处理器)
l 任何不需要访问目标处理器的基本初始化
不推荐:
l Get_Reset()(该函数通过仿真器复位目标处理器)
l 通过GEL_BreakPtAdd()设置断点
l 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 here
GEL_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 segment\n");
*(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 event\n"); */
*(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文件中实现,和应用程序链接在一起但是要注意以下几点:
使用volatile来保证变量不被优化例如:
*(volatile int *)EMIFA_SDRAMTIM = 0x00000618; /* SDRAM timing (refresh) */ 在编译调试过程中避免在GEL文件中进行外设设置,当到达了最终程序时,需要一个智能加载软件从FLASH或主机加载程序对EMIF进行设置,然后通过 (E)DMA或memcpy()拷贝程序/数据
DSP的Gel作用的更多相关文章
- DSP中.gel文件的作用
GEL是CCS提供的一种解释语言,使用该语言写出的GEL,函数具有两在功能,一是配置CCS工作环境,二是直接访问目标处理器DSP(包括DSP软/硬仿真器).用户可以使用GEL函数完成类似于宏操作的自动 ...
- php http头设置相关信息
HTTP 状态码 状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response. HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别 1XX 提示信 ...
- request 和response
当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了We ...
- HTTP详解2-请求、响应、缓存
1. HTTP请求格式 做过Socket编程的人都知道,当我们设计一个通信协议时,“消息头/消息体”的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方怎么干.HTTP协议传输的消息 ...
- Http协议之Request和Response
GET / HTTP/1.1表示向服务器用GET方式请求首页,使用HTTP/1.1协议 Cache-Control作用: 用来指定Response-Request遵循的缓存机制.各个指令含义如下Cac ...
- HTTP协议(转自:小坦克博客)
原文地址:http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html HTTP协议详解 当今web程序的开发技术真是百家争鸣,ASP ...
- HTTP详解(2)
HTTP详解(2)-请求.响应.缓存 分类: 网络知识2013-03-17 16:45 1969人阅读 评论(0) 收藏 举报 目录(?)[+] 1. HTTP请求格式 做过Socket编程的 ...
- (转)HTTP协议(2)
转自:http://kb.cnblogs.com/page/130970/ 作者 :小坦克 当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无 ...
- HTTP协议1之协议详解--转
当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了We ...
随机推荐
- RMS去除在线认证
在微软 OS 平台创建打开 RMS 文档如何避免时延 相信我们在企业内部的环境中已经部署了微软最新的OS平台,Windows 7和Windows 2008 R2,在这些OS平台上使用IRM功能时,您有 ...
- Forward+ Rendering Framework
近几天啃各种新技术时又一个蛋疼的副产品...额,算是把AMD的Forward+ Sample抄了一遍吧. 其实个人感觉这个AMD大肆宣传的Forward+跟Intel很早之前提的Tiled-Based ...
- java根据html生成摘要
转自:http://java.freesion.com/article/48772295755/ 开发一个系统,需要用到这个,根据html生成你指定多少位的摘要 package com.chendao ...
- Linux学习日记-使用EF6 Code First(四)
一.在linux上使用EF 开发环境 VS2013+mono 3.10.0 +EF 6.1.0 先检测一下EF是不是6的 如果不是 请参阅 Linux学习日记-EF6的安装升级(三) 由于我的数据库 ...
- Lesson 24 It could be worse
Text I entered the hotel manager's office and sat down. I had just lost £50 and I felt very upset. ' ...
- useful commands for Kubernetes beginners
Get pod ip and their coordinating NODE $ kubectl get pods -o wide If you want to get detailed inform ...
- Electron 不完全快速手册
Electron能干嘛 Vscode 基于Electron开发的,他是用来开发桌面软件的,可以轻易的跨平台 他的前身是atomshell,图标很丑,不用在意,一点也不像vscode也不用在意. L ...
- C# BS消息推送 SignalR介绍(一)
1. 前言 本文是根据网上前人的总结得出的. 环境: SignalR2.x,VS2015,Win10 介绍 1)SignalR能用来持久客户端与服务端的连接,让我们便于开发一些实时的应用,例如聊天室在 ...
- 【Win 10应用开发】延迟共享
延迟共享是啥呢,这么说吧,就是在应用程序打开共享面板选择共享目标时,不会设置要共享的数据,而是等到共享目标请求数据时,才会发送数据,而且,延迟操作可以在后台进行. 这样说似乎过于抽象,最好的诠释方法, ...
- Apply Newton Method to Find Extrema in OPEN CASCADE
Apply Newton Method to Find Extrema in OPEN CASCADE eryar@163.com Abstract. In calculus, Newton’s me ...