不知你看过DSP的那几个重要的软件手册没有,因为DSP的程序在它的编译环境下编译后,会生成段,按照段的方式安排代码,TI的CCS下生成的是后缀名为out的COFF格式,你要了解这个格式,然后看看链接命令,你就知道代码怎样映射到存储空间了
可以现在内部运行,然后用一段小程序把代码拷贝到外部去,再跳转到外部运行。
之所以不能直接在sdram中执行程序是因为sdram必须先进行初始化 *** 作。
如果你的程序很小,可直接放在片内ram中,然后用读写指令拷到初始化完成的sdram中即可。
如果你的程序很大,可建一个二进制的文件存放第二级的代码,把第一级的引导代码在ram中运行之后,先初始化sdram,再去读取那个二进制文件,并把数据写到sdram中,完成后跳转到sdram中运行。
MT48LC2M32的时钟是由DSP给的,给多给少都可以,在硬件允许的范围内,一般是越快越好。你可自行查阅DSP与sdram的时钟频率的上限,以确定给多少。
1 添加F28335GEL, 文件路径:C:\CCStudio_v33\cc\gel\F28335gel;
2 添加C:\CCStudio_v33\MyProjects\WDPT_STEP(DSP)10\Source\DSP2833x_CodeStartBranchasm文件,此文件负责上电后程序执行顺序跳转的;
3 修改工程的build option,将LINKER中的Autoinit参数改成:Run-Time Autoinitial;
4 添加DSP281x_Headers_nonBIOScmd文件,用于将DSP28头文件中的外设结构与存储器地址对应起来;
5 向工程中添加C:\CCStudio_v33\MyProjects\WDPT_STEP(DSP)10\F28335cmd文件,它是用于flash烧写的CMD文件,用于替换原有的用于RAM中调试的28335_RAM_lnkcmd文件。
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的名称或者符号名称太长的时候就把这些名称字符串储存到字符串表中。
以上就是关于:DSP程序运行时如何得到程序占用的程序空间大小和数据空间全部的内容,包括::DSP程序运行时如何得到程序占用的程序空间大小和数据空间、请教DSP6713如何使程序在外部SDRAM上运行、如何编写dsp的程序 28335等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)