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.

[参考译文] TDA4VM:SDK8.6中 DDR 中的.bss 出现时、get_dev_data 中的数据中止

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1250976/tda4vm-data-abort-in-get_dev_data-when-bss-in-ddr-in-sdk8-6

器件型号:TDA4VM

您好、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存在这个问题。 您能帮助解答这一问题吗?

非常感谢!

凯文  

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

    我们将通过电子邮件对其进行调试。

    此致、

    布里耶什

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

    尊敬的 Kevin:

    如果这个 TT 有任何更新、请告诉我。  

    此致、

    布里耶什

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

    尊敬的 Brijesh:

    感谢您的支持!

    我们发现、如果客户项目添加了-rom_model 选项、这个问题是可以解决的。 这只是下面的-c 选项。

    下图显示了-rom_model 的功能、它在构建工程时非常重要。

    此致、

    凯文