首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于在DSP中的CMD空间分配

关于在DSP中的CMD空间分配

在DSP的CMD文件中,分配的空间大小计算:如RAMH : origin=0x3f900 ,length=0x000400
他对应的函数意义是,初始地址为0x3f900 ,大小为0x000400=4*16*16=1K
如果长度为0x001000=1*16*16*16=4K
在CMD文件中,PAGE0代表程序空间,PAGE1代表数据空间
在开发DSP时,平时都是在调试程序,是把程序下载到RAM中,而当开发完成后,需要烧写到flash中,但是当程序烧写到flash中后,运行速度要慢,大概降到原来的RAM中的70%~80%。如果对时间敏感的可以复制到RAM中运行,程序如下:
    SECTIONS{
       RamFuncs            :   LOAD = FLASHC, PAGE = 0                /* Should be Flash */
                              RUN = RAML1,      PAGE = 0                /* Must be CSM secured RAM */
                              LOAD_START(_RamFuncs_loadstart),
                              LOAD_END(_RamFuncs_loadend),
                             RUN_START(_RamFuncs_runstart)
            }
复制代码
// RAM,在头文件DSP28335_GlobalPrototypes.h中定义变量
    extern Uint16 RamFuncs_loadstart;
    extern Uint16 RamFuncs_loadend;
    extern Uint16 RamFuncs_runstart;

还需要调用将flash内容复制到ram中的函数memcpy(),这个函数在rts2800_ml.lib库中,把memcpy()放在main()函数的系统初始化函数后面就可以了
  memcpy(&RamFuncs_runstart,&RamFuncs_loadstart,&RamFuncs_loadend - &RamFuncs_loadstart);
继承事业,薪火相传
返回列表