This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

F28377s修改.asm的问题

各位专家好:

         我在我的工程文件中加入DSP28xxx_SectionCopy_nonBIOS.asm开始报错,打开DSP28xxx_SectionCopy_nonBIOS.asm开始定义了全局变量

       .global _cinit_loadstart, _cinit_runstart, _cinit_size
    .global _const_loadstart, _const_runstart, _const_size
    .global _econst_loadstart, _econst_runstart, _econst_size
    .global _pinit_loadstart, _pinit_runstart, _pinit_size
    .global _switch_loadstart, _switch_runstart, _switch_size
    .global _text_loadstart, _text_runstart, _text_size
    .bss    VarA,1

下面copysections函数中调用这些全局变量

MOVL XAR5,#_cinit_size                ; Store Section Size in XAR5
    ;SUBB XAR5,#1                        ; Subtract 1 in prep. for RPT instruction
   MOVL ACC,@XAR5                        ; Move Section Size to ACC
    MOVL XAR6,#_cinit_loadstart            ; Store Load Starting Address in XAR6
    MOVL XAR7,#_cinit_runstart            ; Store Run Address in XAR7
    LCR  copy

就开始报错
unresolved symbol _cinit_size, first referenced in ./DSP28xxx_SectionCopy_nonBIOS.obj    test             C/C++ Problem

请问这是什么原因


  • DSP28xxx_SectionCopy_nonBIOS.asm这个文件是你自己写的吗,还是哪里下载的?我印象里TI没有提供这个文件。

    它这里的意思是你定义了这个变量,但是没有给它指定对应的内存用于存放它,所以找不到。其实后面其它所有的也有一样的问题,只是报错只针对第一个而已。

    你应该在cmd文件里将这些变量映射到某一个section里才可以。

  • 你参考的可能并不适合28377

    memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);

    ramfuncs : LOAD = FLASHD,
    RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,
    LOAD_START(_RamfuncsLoadStart),
    LOAD_SIZE(_RamfuncsLoadSize),
    LOAD_END(_RamfuncsLoadEnd),
    RUN_START(_RamfuncsRunStart),
    RUN_SIZE(_RamfuncsRunSize),
    RUN_END(_RamfuncsRunEnd),
    PAGE = 0