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.

[参考译文] CCS/MSP430F249:将次向量表和链接器文件从CC4迁移到CC6

Guru**** 2538930 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/574754/ccs-msp430f249-migrate-secondary-vector-table-and-linker-files-from-cc4-to-cc6

部件号:MSP430F249

工具/软件:Code Composer Studio

几年前,我遇到了CC4次向量表的应用说明。

通过添加"MAINTVEC       :Origin = 0xFFC0,length = 0x0040"到Memory规范。

".mainintvec :{}> MAININTVEC /* main program INT vector table */"和".brintvec :{}> BRINTVEC /* BRANCH INST program INT vector table */"已添加到书帖规范中。

在项目中添加了一个程序集语言程序;它定义了次向量和代理。

我一直使用的笔记本电脑正在慢慢地死去;我得到了一台运行Windows 64位并加载了CC6的替换电脑。  已将项目移至新的便携式计算机;已尝试原始CC4链接文件,并修改了CC6链接文件。 不能获取任何一个以填充引导程序表。  内存映射显示 MAININTVEC和 BRINTVEC使用的零字节。

我已阅读了适用的帖子,但未看到此确切问题;如果我错过了,表示歉意。

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

    您使用哪个版本的编译器?  现在,我假定您使用的编译器版本默认为新的ABI,称为EABI。  但是,它仍然可以使用build开关--abi=coffabi为旧的COFF ABI进行构建。  

    如果您为EABI生成(无论是出于目的还是偶然),链接程序将删除从未引用的部分。  这是中断向量部分的典型情况。  这些章节没有从其他地方明确提及。  它们是"入口点"部分。  要消除此行为,您必须应用#pragma Retain (在C代码中)或指令.Retain (在汇编代码中)。  MSP430 编译器手册组装工具手册中分别介绍了这些详细信息。

    如果这不能解决您的问题,请考虑以下另一种方法...

    请从Wiki文章 链接器命令文件入门中了解一些链接器命令文件的基础知识。  您将看到,在您的特定情况下,您必须确保系统中的某些对象文件(可能写入程序集)必须提供名为.mainintvec和.brintvec的输入部分。  也许这种情况没有发生。  使用链接程序选项--warn_sections,在发生此错误时发出诊断。

    谢谢,此致,

    -George