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.

[参考译文] 编译器:__c_init00源代码

Guru**** 2595805 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/623974/compiler-__c_init00-source-code

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

您好,

我是否有机会访问CCS启动代码__c_init00? 代码b/w重置向量和main()。

#tms320c671

#tm4c123gh6pm

此致,

Kowalski

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

    在CCS安装目录(或安装CGT版本的任何位置)中,您应该找到一个目录"tools/compiler/CxxxX_<compiler_version>/lib",其中包含C/C++库源文件rtssrc.zip (可能已解压到子目录"src")。

    文件"boot.c"应包含"_c_int00()"的源代码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    较早版本的编译器在zip文件中提供RTS源代码。  最新版本提供了一个普通的源文件目录。  以下是一个典型位置:

    C:8.1 \ti\ccsv7\tools\compiler\ti-CGT-C6000_Cps.2\lib\src. 

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它不包含__c_init0的任何源代码。
    只有目录中所有文件中的宏:
    #define c_init0 __c_init00
    但是,__c_init00....哪里找不到。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    文件boot.c有一个以这些行开头的函数...

    /************************************************************************* /*
    C_INT00()- C环境入口点 *
    ///.................. /
    外部void __interrupt c_int00() 

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    完全同意George的说法,但正如我在定义此函数之前提到的,我们在同一文件中有一个宏,即:
    #define c_init00 __c_init00

    现在有两件事:
    1.无论何时使用c_init00,都将替换为__c_init00。那么这个__c_init00定义在哪里?
    2.宏名称如何被用作函数名称,是否会在链接器处发生符号冲突? 例如,上面的宏定义了c_init00 ==__c_init00,在同一个文件中,我们有一个使用符号的函数定义:c_int00(){...}!!!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1.无论何时使用c_init00,都将替换为__c_init00。那么,__c_init00定义在哪里?

    因为...

    #define c_int00 _c_int00 

    ...此函数定义...

    /************************************************************************* /*
    C_INT00()- C环境入口点 *
    ///.................. /
    外部void __interrupt c_int00() 

    ...扩展至...

    /************************************************************************* /*
    C_INT00()- C环境入口点 *
    ///.................. /
    外部void __interrupt _c_int00()
    

    变化是微妙的。  注意函数名称前面的'_'。

    Kowalski 说:
    宏名称如何用作函数名称,是否不会在链接器处发生符号冲突?[/QUOT]

    不能。 当您使用选项--ram_model或--rom_model进行链接时,链接程序会遵守链接C和C++代码的某些约定。  在这些约定中,程序入口点的符号是_c_int00。

    谢谢,此致,

    -George