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.

[参考译文] RTOS/TMS320C6657:在 C6657 EVM 上刷写外部 SPI-NOR

Guru**** 2589280 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/639263/rtos-tms320c6657-flashing-external-spi-nor-on-c6657-evm

器件型号:TMS320C6657

工具/软件:TI-RTOS

尊敬的社区:

我在 C6657 EVM 上有一个奇怪的行为。

我通过 NOR 编写器将.bin.File 加载到外部 SPI-NOR、一切正常。

然后、我将此 NOR 编写器的部分集成到我的应用中、并通过以太网加载新的二进制文件。

我检查了传输的二进制文件(Byteswap ok、length ok、Data ok)。

然后、将 Bin-File 正常编程并验证至外部 SPI-NOR。

在 POR 之后,我通过 UART 看到用于调试的常规信息,但同样,该故障 Task_Create()失败。 (如果我使用 NOR 编写器独立版本、则不会发生这种情况)。

是否有任何提示需要查找?

我要事先感谢大家提出的任何建议。

此致 Martin  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已将您的疑问转发给软件专家。 他们的反馈应发布在此处。

    BR
    Tsvetolin Shulev
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢茨韦托林。
    更多信息:
    我们使用 NOR 编写器实用程序对 SPI-NOR 进行了编程、并通过我们的应用程序再次检查了.bin 文件的内容。 内容相同。 因此、必须有其他东西。
    BR
    Martin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Martin、

    根据您的描述、即使您在从以太网获取闪存编程后引导、器件也会引导应用程序、但任务创建失败、这是否正确? 您是否在应用程序写入闪存后执行完全上电复位以引导器件。 有时、如果存在未正确初始化的堆或变量、则可能会产生不同的结果。 您可以使用仿真器和 CCS 加载符号、并查看它们是否与器件上加载的代码正确关联。

    在应用程序由 RBL 引导后、在任务创建 API 之前、您可以放置一个自旋锁、以便您可以连接并查看导致故障的原因。

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

    非常感谢您的回答 Rahul、

    问:根据您的描述、即使在通过从以太网获取闪存编程后引导、器件也会引导应用程序、但任务创建失败、这是否正确?

    答:是的、正确

    问: 是否在应用程序写入闪存后执行完全上电复位以引导器件。

    答:是的、我们进行了 POR

    问:在应用程序由 RBL 引导后、在任务创建 API 之前、您可以放置一个自旋锁、以便连接并查看导致故障的原因

    答:我将在这里发布结果。

    其他信息:系统很少在 IBL 上停止:从 NOR 引导

    我也使用进行了编译

    memset (&p_init_flags、1、sizeof (platform_init_flags)); 

     系统始终在 IBL 上停止:从 NOR 引导。

    Rahul 请在哪里可以找到错误块的信息、我相信通过这个错误块我可以获得更多信息。

    非常感谢

    BR

    Martin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我有其他信息:
    如果我使用非引导设置调试应用程序,并为 PlatformInit()设置了标志 PLL,则
    对 XMC_setup()的进一步调用会导致无位置。 我无法单步执行 CSL_XMC_setXMPAXH()。

    如果我不设置 PLL 标志、我能够单步执行所有代码(CSL_XMC_setXMPAXH ()+CSL_XMC_setXMPAXXL ()。
    是否缺少任何信息?
    许多 thx
    BR
    Martin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好  

    好的、我发现 bin 文件未正确传输到 DSP。

    我使用字节数组来存储传输的数据并连接数据串手册。

    接收缓冲区的字节位置不是0x3D、而是0x00 @。 并且始终处于该位置。

    我进行了以下测试:

    -取了另一个 bin 文件、我得到了正确的数据

    -已检查是否在 bin 文件的其他位置传输了0x3D、确定

    -写入 RAM-DataCheck 的测试正常

    -在 Wireshark 的情况下观察到传输的数据正常

    receiveBuffer 解密如下:

    在 app.cfg 中、我有: 
    Program.sectMap[".far:rcvbuf"]="MSMCSRAM";

    在 C 文件中、我有:

    #pragma DATA_SECTION (rcvbuf、".far:rcvbuf"); #pragma DATA_ALIGN (buf、64); 静态 char rcvbuf[1440];

    我还尝试了不对齐和不静态的方法。

    超速缓存是否有任何问题?

    非常感谢您的回答

    此致  

    Martin

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

    相同的行为:

    #pragma DATA_SECTION (rcvbuf、".far:rcvbuf");
    #pragma DATA_ALIGN (rcvbuf、64);
    静态 char rcvbuf[1440]; 

    这仅在以下 ByteCombination 中发生:

    0x0F3D  

    既不与0x0E3d 搭配、也不与0x0F2D 搭配

    BR Martin