请帮我改下错

wb1985432   2007-7-18 09:02 楼主
我的主程序如下
#include <stdio.h>
#include \"tms320lf2407.h\"
interrupt void nothing()        //哑中断子程序
{
     return;
}

void main()
{


    /* write a string to stdout */
  puts(\"hello world!\\n\";


}
错误信息如下
>> cannot allocate .sysmem in B1_DARAM (page 1)
>> errors in input - ./Debug/test.out not built
请帮我看下如何改正,是什么错误

回复评论 (5)

cdm 文件中对 B1_DARAM  的定义可能有点不合适.
点赞  2007-7-18 09:23
引用:
 写道:
cdm 文件中对 B1_DARAM  的定义可能有点不合适.
MEMORY
{
PAGE 0 :
          VECTORS  : origin = 0000h , length = 0040h     /* 复位与中断向量 */
                    FLASH1   : origin = 1000h , length = 3000h         /* 片内FLASH SECTOR1 */
          FLASH2   : origin = 4000h , length = 3000h     /* 片内FLASH SECTOR2 */
          FLASH3   : origin = 7000h , length = 1000h     /* 片内FLASH SECTOR3 */
PAGE 1 :  
          B2_DARAM : origin = 0060h , length = 0020h         /* 片内DARAM B2 块 */
          B0_DARAM : origin = 0200h , length = 0100h         /* 片内DARAM B0 块 */
          B1_DARAM : origin = 0300h , length = 0100h         /* 片内DARAM B1 块 */
          STACK    : origin = 0800h , length = 0800h         /* 堆栈空间 */
          EXTRAM   : origin = 8000h , length = 8000h     /* 扩展RAM */
}

/*-------------------------------------------------------------------------*/

SECTIONS
{
    .vecs    : { } > VECTORS   PAGE 0        /* 中断向量表 */
    .text    : { } > FLASH1    PAGE 0        /* 程序代码 */
    .cinit   : { } > FLASH2    PAGE 0   /* 初始化变量和常数表 */
    .pinit   : { } > FLASH2    PAGE 0   /* 初始化变量和常数表 */
    .switch  : { } > FLASH3    PAGE 0   /* SWITCH语句空间 */

    .const   : { } > B0_DARAM  PAGE 1   /* 常数 */
    .econst  : { } > B0_DARAM  PAGE 1   /* 大存储器模式常数 */
    .bss     : { } > EXTRAM    PAGE 1        /* 全局和静态变量“.cinit” */
    .ebss    : { } > EXTRAM    PAGE 1   /* 全局和静态变量“.cinit”大存储器模式 */
    .stack   : { } > STACK     PAGE 1        /* 堆栈 */
    .sysmem  : { } > B1_DARAM  PAGE 1   /* 动态内存申请 */
    .esysmem : { } > B1_DARAM  PAGE 1   /* 宏函数动态内存申请 */
}
/***********************************************************************/ B1_DARAM : origin = 0300h , length = 0100h         /* 片内DARAM B1 块 */
这是在.cmd中的定义,我觉得挺合适的啊,错在哪?请大侠帮忙小菜分析一下
点赞  2007-7-19 01:31
B1

_DARAM 只有 100H, 而 sysmem 段大概比较大,放不下。改成:

.sysmem  : { } > EXT_RAM  PAGE 1   /* 动态内存申请 */


我想应该可以通过了。
点赞  2007-7-19 01:58
改两行吧:
   .sysmem  : { } > EXTRAM  PAGE 1   /* 动态内存申请 */
   .esysmem : { } > EXTRAM  PAGE 1   /* 宏函数动态内存申请 */
点赞  2007-7-19 02:01
引用:
写道:
B1

_DARAM 只有 100H, 而 sysmem 段大概比较大,放不下。改成:

.sysmem  : { } > EXT_RAM  PAGE 1   /* 动态内存申请 */


我想应该可以通过了。
虽然是初学者,但是我为自己这么弱的问题而惭愧,你有哪些好书或者好的电子读物给我推荐么?我目前手里有《TMS320LF240xDSP,C语言开发应用》《DSP集成开发环境CCS开发指南》和2407的datasheet.给我推荐一些好书或者经验吧。多谢了
点赞  2007-7-19 02:16
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复