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/TMS320F28375D:CCS 内部的 TMS320F28375D 初始化

Guru**** 2426600 points
Other Parts Discussed in Thread: TMS320F28375D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/753424/ccs-tms320f28375d-tms320f28375d-initialization-inside-of-ccs

器件型号:TMS320F28375D

工具/软件:Code Composer Studio

大家好、团队、

“我有一位客户对 CCS 内部的 TMS320F28375D 初始化有疑问。”

我的问题

我有不同的全局变量声明为通过 EMIF 总线连接到 Delfino TMS320F28375D 的外部存储器(我使用的是编译器版本 TI v18.1.3.LTS)。 EMIF 总线初始化在引导中的 globval 变量初始化之后发生。 这是我的问题、因为当我需要使用这些全局变量(在外部存储器中定义并在定义中使用特定值初始化)时、它们没有初始化值、因为 EMIF 总线初始化在全局变量初始化之后发生。

 

我的解决方案

在 TI 编译器文档中、我发现我可以通过使用_system_pre_init ()函数的自定义动词(存在于 pre_init.c TI 文件中)来解决我的问题。 实际上、通过将 EMIF 总线初始化函数放置在该函数中、该总线初始化将在引导中进行全局变量初始化之前发生。

 

我遇到的问题

我通过将 pre_init.c 文件链接到工程将这个定制的_system_pre_init()函数连接到工程,我在其中插入了 InitEmif()函数并编译工程。 通过这种方式,运行时库将调用我的自定义_system_pre_init()函数(这是我在论坛中读取的内容)。 它实际上在引导期间被调用,但请将附件的图片作为参考,当执行第125行的指令时,调用_system_pre_init()。 但是、当 PC 开始执行该指令时、第58行是调试器运行的该指令的最后位置。 从不调用 InitEmif(),因为_system_pre_init()在运行第58行后退出。 我不明白为什么永不调用 InitEmif()并且_system_pre_init()立即存在。

 

是否有一些说明_system_pre_init()函数用法的文档或示例?

 

非常感谢您的帮助

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

    这看起来好像不是在使用 PRE_init.c 的自定义副本 我不确定如何优先使用您的文件、我将调查并在明天(12月7日)返回给您。

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

    虽然我不明白为什么、但您使用的是编译器 RTS 库中提供的_system_pre_init 函数、而不是自定义函数。  为了解决这一问题、我需要查看链接器的调用。  无论您是想继续、都由您决定。  我建议继续进行类似以下的修复:

    • 实现名为_system_pre_init 的函数。  第一个帖子中显示的代码正确。  源文件的名称无关紧要。  实际上、只是为了娱乐、把它命名为其他东西。  比如说 my_init.c
    • 像任何其他源文件一样、将 my_init.c 添加到 CCS 项目中
    • 编译器 RTS 库通常是链接器看到的最后一个文件。  在"Console"视图中、检查链接器调用以确保情况确实如此。  链接器调用应以 类似于-l libc.a.的内容结束  

    谢谢、此致、

    乔治