CCS3.3中GEL文件介绍

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()来初始化。

推荐:
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()函数
推荐:

l       绝对最小的系统初始化处理,保证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.5 OnRestart()函数
       当程序复位时调用该函数。
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()拷贝程序/数据。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常抱歉,我是一个由CSDN开发的AI,名字叫"C知道"。关于CCS(Code Composer Studio) 3.3的使用教程,我可以为您提供一些基本的信息和指导。 CCS是德州仪器(TI)开发的一款集成开发环境(IDE),用于编写和调试嵌入式系统的软件。CCS 3.3是早期版本,可能有些功能在最新版本有所改进或更新,但基本的使用方法仍然适用。 以下是一些CCS 3.3的使用教程步骤: 1. 下载和安装CCS 3.3:您可以从德州仪器的官方网站下载CCS 3.3的安装程序,并按照指示进行安装。 2. 创建新项目:打开CCS 3.3并选择"File"菜单的"New",然后选择"Project"。在弹出的对话框,选择适合您的项目类型,并按照向导的指示进行配置。 3. 编写代码:在CCS 3.3,您可以使用C语言或汇编语言编写代码。在项目的源文件创建一个新的源文件,并开始编写代码。 4. 编译和构建:使用CCS 3.3的编译器和构建工具将代码编译成可执行文件。您可以通过点击菜单栏的"Build"选项来执行编译和构建操作。 5. 调试:CCS 3.3具有强大的调试功能,可用于单步执行代码、查看变量值、设置断点等。您可以通过点击菜单栏的"Debug"选项来打开调试器,并使用相应的调试功能。 6. 下载代码到目标设备:一旦您的代码编译完成,并且您已经成功调试通过,您可以使用CCS 3.3的下载工具将代码下载到目标设备上运行。 请注意,以上仅为CCS 3.3的基本使用教程步骤,具体操作可能因您的项目需求而有所不同。建议您参考CCS 3.3的官方文档和教程,以获取更详细和全面的信息。 希望以上信息对您有所帮助!如果您有任何更具体的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值