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.

[参考译文] 编译器/AM1808:用户定义的扇区未在CCS V6中编译

Guru**** 2242430 points
Other Parts Discussed in Thread: AM1808
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/596198/compiler-am1808-user-defined-sector-is-not-compiled-in-ccs-v6

部件号:AM1808

工具/软件:TI C/C++编译器

大家好,

   我曾经使用传统COFF作为我的程序的输出格式。 但是 在程序升级到CCSV6之后,输出格式必须为elf,因为新的编译器不再支持COFF。  

   我曾经将向量表放在AM1808的本地ram(0xFFFF0000)上, 这是通过汇编代码中的".sect"命令实现的,如下所示:

.sect ".intvecs"
Int_VECS:                ; 例外                    地址
    LDR PC,__c_int00        ;重置中断                (0xFFFF0000)
    单词0                ;未定义的指令中断   (0xFFFF0004)
    LDR PC,__SWI_handler   ;软件中断                (0xFFFF0008)
    单词0                ;预取中止中断         (0xFFFF000C)
    单词0                ;数据中止中断             (0xFFFF0010)
    单词0                ;保留用于将来扩展      (0xFFFF0014)
    LDR PC,__IRQ_handler   ;IRQ中断                   (0xFFFF0018)
    ;LDR PC,[PC,#-0xA1C]    ; HPIVR2 IRQs
    LDR PC,__FIQ) handler   ;FIQ中断                   (0xFFFF001C)

在.cmd文件中,.intvecs扇区被分配给ARM的本地ram:

内存


   ARMRAM:     O = 0000 l = 0x0.2万

  .

}

章节

   intvecs   >   ARMRAM

  二,委员会的报告

}

然后,在编译后,可以在地图文件中找到扇区.intvect:

intvecs  0   ff0万000030</s>0.003万        
                 ff0万000030       ARM9_intvecs.obj0.003万 ARM9_intvecs.obj (.intvecs)

但是,如果输出格式更改为elf,则在地图文件中找不到.intvect扇区,并且在最终二进制文件中遗漏了整个矢量表。

如何将汇编代码的扇区以elf格式放入预定义地址?

黄先生。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在EABI下,将删除程序其余部分中未显式引用的部分。  您可以使用 .Retain指令来挫败此行为。  有关详细信息 ,请参阅标题为"条件链接功能"的较大Wiki文章的小节。  本文是为C6000编译器工具编写的。  在功能方面,TI ARM工具中也是一样的。

    谢谢,此致,

    -George