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.

[参考译文] TMS320F28377S:何时初始化全局变量?

Guru**** 2443910 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1007742/tms320f28377s-when-to-initialize-the-global-variables

器件型号:TMS320F28377S

您好专家、

我有一位客户为 F2837XS 执行引导加载。

应用程序在运行时收到升级指令、放置特殊变量的标志、然后跳转到引导区域、在引导跳转到应用程序区域后、引导加载程序的最后一位讲师似乎如下所示:

ExitBoot (0x80000);

我猜它将转到 codestart、然后转到运行 c_int00;它确实在测试中运行到 c_int00。

然后、我们可以看到全局变量将重新初始化、然后可以清除该标志、然后运行正常的应用程序代码。 这是我的假设

但是、他们发现 全局变量标志未重新初始化。 导致升级标志持续存在、然后启动、应用程序来回跳转。 这就是发生的事情。

我在以下应用手册 中找到了 c_int00函数:https://www.ti.com/lit/ug/spru514w/spru514w.pdf

c_int00函数执行以下任务来初始化环境:
1.为系统堆栈定义一个名为.stack 的段,并设置初始堆栈指针
2.通过将数据从初始化表复制到为分配的存储来初始化全局变量
ebss 或.bss 段中的变量。 如果在加载时初始化变量(--ram_model
选项)、加载程序在程序运行之前执行此步骤(不是由引导例程执行)。
有关更多信息、请参阅第7.10.3节
3.执行在全局构造函数表中找到的全局构造函数。 如需更多信息、请参阅
第7.10.3.4节.
4.调用 main()函数以运行 C/C++程序

BR

Emma

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

    Emma、如果应用程序实际上正在初始化所有变量、则在程序开始时对其进行初始化。  应用程序实际上是否正在更新?   

    谢谢、

    Krishna

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

    尊敬的 Emma:  

    我没有听说过这个问题。  了解此问题已解决、关闭此主题。  如果您仍需要支持、请重新打开或提交新的。   

    谢谢、  

    Krishna