1、程序中对基要求比较高的函数,如中断;
2、程序需要对FLASH进行 *** 作,这时就要把程序先复制到RAM中运行然后才能对FLASH *** 作。
RamfuncsLoadStart、RamfuncsLoadEnd、RamfuncsRunStart这三个变量是在CMD文件中创建的,创建方式如下:
LOAD_START(RamfuncsLoadStart),
LOAD_END(RamfuncsLoadEnd),
RUN_START(RamfuncsRunStart),
分别表示了装载函数的首地址,装载函数的结束地址和装载函数的运行地址;
执行完MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart)后,便将FLASH中相关的程序者猛槐COPY到了RAM中,之后的程序运行时,只要调用FLASH中RamfuncsLoadStart地址开始的相关函数,系统都会自动地指向RAM中相应的函数入口地址运行首友。知卜
求采纳为满意回答。
main(){
int i
unsigned int * px
unsigned int * py
unsigned int * pz
px=(unsigned int *)0x80000
py=(unsigned int *)0x80100
//-----请按实验要求将程序补充完整-----/枣禅纯/
while(1)
{
for(i=0i<16i++)
{
scanf("%d",(px+i))
*(py+i)=0
}
printf("\n")
pz=px
px=py
py=pz
for(i=0i<16i++)
printf("%d",(py+i))
printf("凳咐\n"袭并)
}
// 在此加软件断点
}
TI的编译器,连接器等散毁厅工具产生的目标文件格式为Common Object File Format(简称COFF)。COFF格式是AT&T开发的,在UNIX系统中所采用的目标文件格式。TI的编译器产生的obj文件以及连接之后产生的out文件都是COFF格式的。用CCS载入out文件到DSP的内存的时候,CCS会分析这个out文件,将其中储存的代码段和初始数据等段中的数据复制到DSP的内存中,并且设置程序指针到Entry Point(入口地址)。Hex5x, Hex6x等转换工具通过分析out文件,将其输出为一个boot table,方便各种自举(自启动)程序的编写。例如我们经常把这样的boot table写入flash, 制作成能从flash自举余谈的应用程序。COFF最开始是文件头和附加文件头,附加文件头中保存有Entry Point的地址。其冲隐后就是Section Header表,其中有各个section的物理地址、长度以及初始化数据的在文件中的偏移地址等信息。所有的section header结束之后就是数据区了。也就是需要复制到DSP 内存中去的数据。其后还有连接用的relocation信息,如果out文件的话不需要这些信息,relocation之后是符号表,例如C语言的全局变量,函数等符号都在这个表中储存。最后是字符串表,section的名称或者符号名称太长的时候就把这些名称字符串储存到字符串表中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)