GEL文件与CMD文件
来源:百度文库 编辑:神马文学网 时间:2024/05/05 06:25:16
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); 定义程序空间从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 寄存器赋值}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;/* don't 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;/* don't 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; C5416_Periph_Reset(); GEL_XMDef(0,0x1eu,1,0x8000u,0x7f);
GEL_XMOn();
GEL_MapOn();
GEL_MapReset(); GEL_MapAdd(0x80u,0,0x7F80u,1,1); /* DARAM */
GEL_MapAdd(0x08000u,0,0x8000u,1,1); /* External */
GEL_MapAdd(0x18000u,0,0x8000u,1,1); /* DARAM */
GEL_MapAdd(0x18000u,0,0x8000u,1,1); /* SARAM */
GEL_MapAdd(0x28000u,0,0x8000u,1,1); /* SARAM */ GEL_MapAdd(0x0u,1,0x60u,1,1); /* MMRs */
GEL_MapAdd(0x60u,1,0x7FA0u,1,1); /* DARAM */
GEL_MapAdd(0x08000u,1,0x8000u,1,1); /* DARAM */ GEL_TextOut("C5416_Init Complete.\n"); }
/* ****************************** */C5416_Periph_Reset()
{
IFR = 0xFFFFu;
IFR = 0x0000u; DMA_Reset();
MCBSP0_Reset();
MCBSP1_Reset();
MCBSP2_Reset();
TIMER0_Reset();
GPIO_Reset();
}DMA_Reset()MCBSP0_Reset()MCBSP1_Reset()MCBSP2_Reset()TIMER0_Reset()GPIO_Reset()在上面的各个初始化函数中,多半是把0值付给寄存器。当然这些初始化值如果用户不使用的话必须在主程序中做修改。所以加载了GEL文件以后,并不一定所有的寄存器都是复位值,主程序中没有赋值的寄存器并不一定就是它的上电复位值,因为加上了仿真器,加载了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寄存器赋值
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/henhen2002/archive/2009/08/20/4466097.aspx
的功能有所增强,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); 定义程序空间从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 寄存器赋值}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;/* don't 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;/* don't 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; C5416_Periph_Reset(); GEL_XMDef(0,0x1eu,1,0x8000u,0x7f);
GEL_XMOn();
GEL_MapOn();
GEL_MapReset(); GEL_MapAdd(0x80u,0,0x7F80u,1,1); /* DARAM */
GEL_MapAdd(0x08000u,0,0x8000u,1,1); /* External */
GEL_MapAdd(0x18000u,0,0x8000u,1,1); /* DARAM */
GEL_MapAdd(0x18000u,0,0x8000u,1,1); /* SARAM */
GEL_MapAdd(0x28000u,0,0x8000u,1,1); /* SARAM */ GEL_MapAdd(0x0u,1,0x60u,1,1); /* MMRs */
GEL_MapAdd(0x60u,1,0x7FA0u,1,1); /* DARAM */
GEL_MapAdd(0x08000u,1,0x8000u,1,1); /* DARAM */ GEL_TextOut("C5416_Init Complete.\n"); }
/* ****************************** */C5416_Periph_Reset()
{
IFR = 0xFFFFu;
IFR = 0x0000u; DMA_Reset();
MCBSP0_Reset();
MCBSP1_Reset();
MCBSP2_Reset();
TIMER0_Reset();
GPIO_Reset();
}DMA_Reset()MCBSP0_Reset()MCBSP1_Reset()MCBSP2_Reset()TIMER0_Reset()GPIO_Reset()在上面的各个初始化函数中,多半是把0值付给寄存器。当然这些初始化值如果用户不使用的话必须在主程序中做修改。所以加载了GEL文件以后,并不一定所有的寄存器都是复位值,主程序中没有赋值的寄存器并不一定就是它的上电复位值,因为加上了仿真器,加载了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寄存器赋值
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/henhen2002/archive/2009/08/20/4466097.aspx
GEL文件与CMD文件
CMD文件的编写
怎么用cmd命令捆绑文件
如何用CMD命令彻底隐藏文件和文件夹?
CMD文件的原理 dsp cmd dsp cmd文件 - 中国传惠 Transmart 的专栏 http://www.gongxd.tk - CSDN博客
文件备份与同步
文件打包与压缩
PDF文件制作方法与指南
“一号文件”与三农问题
文件共享与记录锁定
Word文件与PDF文件的转换方法
Makefile文件的格式与用法
使用Vista加密文件与文件夹
巧妙使用Vista加密文件与文件夹
各种文件后缀名与打开方式大全
各种文件后缀名与打开方式大全
PDF文件制作方法与指南1
Adobe-PDF文件制作方法与指南
PDF文件制作方法与指南2
PDF文件制作方法与指南21
动态链接库文件与dll是什么意思?
各种文件后缀名与打开方式大全
各种文件后缀名与打开方式大全
各种文件后缀名与打开方式大全