menuitem "Set_zone6" /*添加一级菜单Set_zone6*/
hotmenu Set_zone6() /*在Set_zone6下添加二级菜单Set_zone6*/
{
*(long *)0x0B34 = 0x00014c1f; /*XINTCNF2 config*/
*0x0B38 = 0x803e; /*XBANK config*/
*(long *)0x0B2C = 0x0043f1224; /*XTIMING6 config*/
b:dialog关键词
3.1 GEL_MapAdd()函数
该函数添加一个存储区域到存储区映射中。3.2 GEL_MapOn()和GEL_MapOff()函数
可以调用GEL_MapOn() or GEL_MapOff()来打开或关闭存储区映射。当存储区映射关闭时,CCSStudio假定可以访问所有的存储区空间。
3.3 GEL_MapReset()函数
GEL_MapReset()函数清除所有的存储区映射。没有存储区映射时,缺省设置是所有的存储区空间都不能访问。
#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寄存器赋值
}
参考http://processors.wiki.ti.com/index.php/GEL
一、cmd文件分析
1)系统定义:
.cinit
.const
.switch
.text
.bss
.far
.stack
.sysmem
2)用户定义:
#pragma CODE_SECTION (symbol, "section name");
#pragma DATA_SECTION (symbol, "section name");
单个地址的时候可以使用
如
在数组变量时使用#pragma
如
#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 {
}
SECTIONS {
}