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.

[参考译文] TMS320C6657:CCS 中的 IBL 调试失败

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/789782/tms320c6657-ibl-debugging-in-ccs-failed

器件型号:TMS320C6657

您好!

我们有自己的定制板、该板包含 C6657 DSP。 电路板上不存在 FPGA 或 I2C 保护。
我构建了 iblInit 和 iblMain (在进行了一些修改之后)、以便使用 CCS 逐步执行 IBL 调试。
我们使用的是 CCS9、IBL 是 mcsdk_2_01_02_06的一部分。

1) 1)加载 iblInit_665x.out (或 iblInit_665x_le.out)后、代码成功到达 main。 然后、我在 GEL 文件中运行脚本、以便初始化 IBL 和 iblStatus 结构、似乎这两个结构都已正确初始化。


2) 2)当我逐步运行代码并转到 configureGPIO、然后再执行一个步骤时、HW_SPI_xfer 函数会达到运行状态。
configureGPIO 函数应仅配置与 UART 和 SPI 相关的 GPIO 引脚并返回到代码。
编译的代码与 CCS 调试器中显示的代码之间似乎不匹配。
问题出在哪呢?

以下 是一些图像、用于清除问题。


 

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

    1.这个问题看起来很奇怪,如果在 configureGPIO()之后设置了一个断点,调试器会在该点停止吗?

    2.尝试此步骤,
    a.连接 DSP Core0
    b.使用 GEL 文件初始化
    c.加载并运行 IBL 映像。

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

    2.这是我在做的事。
    运行 confgiureGPIO()函数会导致调试器运行一些重新编写 SPI 转码器的代码。 它不应该在那里。
    除此之外、开始时的代码(执行 iblStatus 初始化的4行-第一个映像中的第456-459行)、逐步运行时(单步执行)不会作为4个单独的步骤运行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Eyal、

    只是想了解设置和要求、

    是否有理由在您的案例中调试 IBL 源代码? 您的终端应用的引导模式是什么?

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

    我们的定制硼仅有 SPI NOR 闪存连接到 C6657的 SPI CS0。 我们没有任何 I2C PROM。 我想使用 IBL 机制(使用 iblInit 和 iblMain),所有这些机制都位于* SPI NOR *中。 我不能这么做。
    我已读取 EVM (C6657评估板)中 SPI NOR 闪存的数据、并发现该闪存仅包含 THR ELF 文件。
    但是、当我查看 iblInit 应用(在 MCSDK 下)时、我发现它在闪存上查找 iblMain。

    1) 1)首先解决了在 CCS 中调试 iblInit 的问题、问题是在运行 makefile 时
    在 C:\ti\mcsdk_2_01_02_06\tools\boot_loader\IBL\src\make 下、它应使用选项"Debug=yes"运行。

    2) 2)关于我的总体问题、是否可以仅使用 NOR 闪存运行 IBL 机制?
    a) iblInit 的修改版本将从闪存加载。
    b)它运行、根据内部配置的 iblStructure 来配置 PLL 和 DDR。
    C)它从闪存加载 iblMain 的修改版本并运行它。
    d) iblMain 的修改版本将加载我的 ELF 应用程序并运行它。

    3) 3)您能否解释 iblInit 末尾的最后几行

    ===========================

    /*将控制权传递给引导表处理器*/
    iblBootBtbl (bFxnTbl、entry);

    if (btblWrapEcode!= 0){
    iblStatus.iblFail = IBL_FAIL_CODE_BTBL_FAIL;
    适用于(;);


    /*跳转到出口点,它将是完整 IBL 的入口点*/
    exit =(void (*)) entry;
    (*exit)();

    ===========================

    它是从 NOR 加载 iblMain,然后使用(*exit)()运行它吗?

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

    Eyal、

    C665x PG 1.0器件不存在 PLL 锁定问题、因此也不需要在定制板上实现 IBL。

    我们在下面的链接中提供了不带 IBL (直接引导)的 C6657 SPI 引导示例。

    谢谢你。