打印

关于CMD文件和GEL文件的区别

[复制链接]
544|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Clovee|  楼主 | 2017-9-15 11:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于CMD文件和GEL文件的区别

一、cmd文件分析
1,系统定义:  
.cinit 存放C程序中的变量初值和常量;
.const 存放C程序中的字符常量、浮点常量和用const声明的常量;
.switch 存放C程序中switch语句的跳针表;
.text 存放C程序的代码;
.bss 为C程序中的全局和静态变量保留存储空间;
.far 为C程序中用far声明的全局和静态变量保留空间;
.stack 为C程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果;
.sysmem 用于C程序中malloc、calloc和realloc函数动态分配存储空间。
2,用户定义:
#pragma CODE_SECTION (symbol, "section name"); #pragma DATA_SECTION (symbol, "section name")

单个地址的时候可以使用 #define
如 #define my_data *(volatile unsigned int*)0x000C

在数组变量时 使用#pragma 宏

XXX.h/XXX.c
#pragma DATA_SECTION(my_data,".data_section")
unsigned char my_data[1024];
在xxx.cmd中建立.data_section并赋予地址就可以了。


3.cmd作用
cmd由3部分组成:
1)输入/输出定义:.obj文件:链接器要链接的目标文件;.lib文件:链接器要链接的库文件;.map文件:链接器生成的交叉索引文件;.out文件:链接器生成的可执行代码;链接器选项;
2)MEMORY命令:描述系统实际的硬件资源;
3)SECTIONS命令:描述“段”如何定位。
Link的cmd文件用于DSP代码的定位。由于DSP的编译器的编译结果是未定位的,DSP没有操作系统来定位执行代码,每个客户设计的DSP系统的配置也不尽相同,因此需要用户自己定义代码的安装位置。以C5000为例,基本格式为:
-o sample.out
-m sample.map
-stack 100
sample.obj meminit.obj
-l rts.lib
MEMORY {
   PAGE 0: VECT: origin = 0xff80, length 0x80
   PAGE 0: PROG: origin = 0x2000, length 0x400
   PAGE 1: DATA: origin = 0x800, length 0x400
}
SECTIONS {
   .vectors : {} >PROG PAGE 0
   .text : {} >PROG PAGE 0
   .data : {} >PROG PAGE 0
   .cinit : {} >PROG PAGE 0
   .bss : {} >DATA PAGE 1
}
二、gel文件

ccs的gel语言是一种交互式的命令,它是解释执行的,即不能被编译成可执行文件。它的作用在于扩展了ccsstudio的功能,可以用gel来调用一些菜单命令,对DSP的存储器进行配置等等。但是作者建议对于使用仿真器和DSP功能板的仿真环境用户来说,这种GEL语言文件是没必要加入到配置中的。gel语言的重要性在于针对计算机模拟环境的用户,使用gel可以为其准备一个虚拟的DSP仿真环境,但也不是非用不可的。

GEL文件的功能同emuinit.cmd的功能基本相同,用于初始化DSP。但它的功能比emuinit的功能有所增强,GEL在CCS下有一个菜单,可以根据DSP的对象不同,设置不同的初始化程序。以TMS320LF2407为例:
#define SCSR1 0x7018 ;定义scsr1寄存器
#define SCSR2 0X7019 ;定义scsr2寄存器
#define WDKEY 0x7025 ;定义wdkey寄存器
#define WDNTR 0x7029 ;定义wdntr寄存器
StartUp() ; 开始函数
{
GEL_MapReset(); ; 存储空间复位 GEL_MapAdd(0x0000,0,0x7fff,1,1); 定义程序空间从0000-7fff 可读写
GEL_MapAdd(0x8000,0,0x7000,1,1); 定义程序空间从8000-f000 可读写
GEL_MapAdd(0x0000,1,0x10000,1,1); 定义数据空间从0000-10000可读写
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寄存器赋值

相关帖子

沙发
gygp| | 2017-9-15 18:15 | 只看该作者
GEL文件的功能同emuinit.cmd 的功能基本相同

使用特权

评论回复
板凳
chenci2013| | 2017-9-15 18:15 | 只看该作者

cmd文件是分配存储空间用的

使用特权

评论回复
地板
biechedan| | 2017-9-15 18:16 | 只看该作者
完整的DSP程序至少包含三个部分:程序代码、中断向量表、链接命令文件(或称链接配置文件)(*.cmd)

使用特权

评论回复
5
wangdezhi| | 2017-9-15 18:17 | 只看该作者
GEL文件主要用来程序空间、数据空间、I/O空间等进行初始化

使用特权

评论回复
6
isseed| | 2017-9-15 18:17 | 只看该作者
GEL文件的功能同cmd的功能基本相同

使用特权

评论回复
7
isseed| | 2017-9-15 18:19 | 只看该作者
GEL是C语言的一个子集

使用特权

评论回复
8
suzhanhua| | 2017-9-15 18:20 | 只看该作者
GEL是CCS提供的一种解释语言

使用特权

评论回复
9
mituzu| | 2017-9-15 18:20 | 只看该作者
GEL本身具有的类C语法使其比宏操作更方便。

使用特权

评论回复
10
hellosdc| | 2017-9-15 18:21 | 只看该作者
功能不是都差不多的吧。

使用特权

评论回复
11
uiint| | 2017-9-15 18:22 | 只看该作者
初始化程序不是gel吗

使用特权

评论回复
12
hudi008| | 2017-9-15 18:22 | 只看该作者

使用特权

评论回复
13
gygp| | 2017-9-15 18:23 | 只看该作者
它的功能比emuinit的功能有所增强

使用特权

评论回复
14
chenci2013| | 2017-9-15 18:23 | 只看该作者
CCS2.2和CCS3.3不同,gel文件就有差异

使用特权

评论回复
15
biechedan| | 2017-9-15 18:23 | 只看该作者
GEL文件可以看成你所建项目的“秘书”,可以帮你打打杂,处理一些繁琐的事情。

使用特权

评论回复
16
wangdezhi| | 2017-9-15 18:23 | 只看该作者
GEL文件在CCS启动后常驻内存

使用特权

评论回复
17
isseed| | 2017-9-15 18:23 | 只看该作者
所有的变量必须在DSP程序中

使用特权

评论回复
18
suzhanhua| | 2017-9-15 18:23 | 只看该作者
用户可以使用GEL函数完成类似于宏操作的自动化批处理任务

使用特权

评论回复
19
mituzu| | 2017-9-15 18:23 | 只看该作者
GEL在CCS下有一个菜单,可以根据DSP的对象不同,设置不同的初始化程序。

使用特权

评论回复
20
hellosdc| | 2017-9-15 18:23 | 只看该作者
还是使用cmd比较多。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

708

主题

1032

帖子

2

粉丝