您好、TI 专家!
客户以前使用过 SDK8.2、没有问题。
当客户迁移至 SDK8.6时,将意外发生数据中止问题。 请参阅以下信息。
SDK 版本:SDK8.6
板类型:GP 板、 PROC112A1
引导方法:SBL、 默认 mmcsd 引导
固件:仅使用默认 MCU1_0
测试:仅运行1个测试、 sciserver_testapp_main.c
更改了: UART 端口-> wkup_uart
在6000 上电/断电测试期间、以下第299行(MCU1_0 SCI init)中将有2000次数据中止、device_id (dev)的值在数据中止时超出最大值。
数据中止路径为: Sciclient_init () pm_init ()->clk_register_clock ()->clk_data_p->drv->get_state ()->get_dev_data ()
下面显示了客户的项目运行结果、有时成功、有时由于上述数据中止而归档。
我们已经针对这个问题进行了大量的调试、我们发现.bss 区域实际上就是导致这个问题的原因。
客户在 SDK8.2和 SDK8.6中使用 linker_r5f_freertos_common.inc 作为其项目的链接器文件、此链接器文件将.bss 放在 DDR 区域。 这在 SDK8.2中有效、但在 SDK8.6中、客户将解决上述问题。
当我们在如下所示的 sciserver_testapp 中更改为使用 linkerfile 时、问题可以得到解决。
根据 sciserver_testapp 链接器文件、如果除.bss (仍处于 OCMC 中)外的所有段都放入如下所示的 DDR 中、则仍然没有问题。
我们非常困惑、为什么 DDR 中的.bss 区域会导致这个问题、以及为什么 SDK8.2是正常的、但 SDK8.6存在这个问题。 您能帮助解答这一问题吗?
非常感谢!
凯文