您好专家、
我有一位客户为 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