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.

[参考译文] TMS570LC4357:引导问题

Guru**** 2427060 points
Other Parts Discussed in Thread: HALCOGEN, TPS3703

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/879442/tms570lc4357-boot-problems

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGENTPS3703

早上好、TI Sugarland、

我有一位客户在 LC4357上做一些有趣的事情。  他们使用 Rust 而非 C 编写了自己的应用、并使用 Lauterbach 工具进行调试/闪存编程。  他们遇到的问题是、他们的应用程序在正常上电序列期间无法引导。  然而、如果它们在电路板通电后循环 PORRST、它们的应用启动就很顺利。

为了消除电路板级问题的可能性、我在 CCS 中编写了一个闪烁应用程序、该应用程序使用 CPU 来切换 IO。  这是使用 XDS110进行编程的、引导时没有问题、因此我认为没有电路板问题。

我知道这不是太多信息、但我对他们的软件没有太多了解。  您是否对要检查的事项有任何指导?  根据我对该器件的了解、我一直在引导他们研究 MPU 和 ECC。  我还向他们提供了  
http://www.ti.com/lit/an/spna106d/spna106d.pdf

我们需要尽快启动、以便将其发送给潜在客户。  非常感谢您提供的任何指导。   

最棒的

Trey

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

    您好 Trey、

    spna106用于 Cortex-R4。 请以 LC4357的 example_safetylib.c 为例。 此文件位于 HALCOGen 示例文件夹中:

    C:\ti\Hercules \HALCoGen\v04.07.01\examples\TMS570LC43x

    2.器件是否获得数据中止或指令中止? 如果是、请找到中止状态和中止地址:

      CCS -> Registers Window -> CP15 register -> Data fault status register 和 data fault address register。

    出现问题时 ESM 状态寄存器的值是多少?

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

    我们有两组我们正在试验的代码

    一个是此帖子中提供的代码、另一个是我们基于该功能编写的代码  

    连接或不连接 JTAG  

    在我们的代码中、我们可以在第二次手动复位时正常工作、但通常不会在上电复位时工作

    nPORRST 由看门狗监控器(一对 TPS3703)在正确的3.3、1.2电平下生成、然后保持低电平10或100ms

    在 nRST 上、我们有一个2.5K/10nF 电容

    在本例中为 manualReset->TPS3703.MR->nPORRST

    在所提供的代码中、无论是上电还是手动复位、我们通常都能正常工作(即进入 main)、但有时我们也会观察到

    有时、当通过 JTAG 连接且 PC 为0x10时、处理器会在较早的时候接收到数据中止、但其他时候会继续到主系统

    在数据中止的情况下、当处于该状态并使用 CCS 时、我仍在尝试获取 CP15寄存器

    转到 CCS->Registers Window->CP15有时会显示未定义的寄存器列表、或者在其他情况下、我们不会打开该寄存器树。

    在数据中止的情况下、行为与此描述类似

    https://e2e.ti.com/support/microcontrollers/hercules/f/312/t/680951?Data-abort-right-after-NPORST-enabling

     我没有查看1.2/3.3/nPORRST 时序、它显示复位最初为低电平、并在所有电压上升后释放

    我们有修订版 B 部分

    我还查看了提供给部件的 OSC 时钟、在电压达到最终电平时、它似乎是上升的

    那么、有几个问题->

    (1)在我们的电路板上、nRST 由 nRST 上的2.5K/10nF 电容生成、在您的开发板上为10K/1uF、在 launchpad 上与我们的类似

    在通电时释放 nRST 是否重要? 它应该在 nPORRST 之前、之后或者什么?

    (2)是否有关于早期数据中止案例的想法?

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

    我的评论如下:

    1) 1)在我们的板上、nRST 由 nRST 上的2.5K/10nF 电容器生成、在您的开发板上为10K/1uF、在 launchpad 上与我们类似

    在通电时释放 nRST 是否重要? 它应该在 nPORRST 之前、之后或者什么?

    >>>nRST 在 nPORRST 被激活时以及 nPORRST 被释放一段时间后(数据表中指定的时间)由器件驱动为低电平有效。 此后、需要将其上拉、以便 nRST 端子上的电平保持在 ViHmin 以上(也在数据表中指定)。

    (2)是否有关于早期数据中止案例的想法?

    >>当访问 CPU RAM 而未先对其进行初始化(如入栈等)时、会发生这种情况。 确保 CPU RAM 在初始化 CPU 寄存器后的第一步被初始化。

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

    我们在刮擦头部后发现了问题-事实正是如此

    我们有一个代码结构来写入寄存器、但在为该写入创建值时、我们访问了未初始化的存储器空间

    IE PRE BSS 复制/常量复制尚未运行

    将该内存初始化移动到先前的可解决该问题

    通常、在这种情况下、会看到为写入而构建的错误值、但在这种 CPU 情况下、存储器读取会生成 ECC 故障

    我将详细介绍一下堆栈访问还是恒定访问-我不会期望堆栈、因为写入首先发生。

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

    堆栈写入也可能导致这种情况。 对小于64位的 RAM 的任何写入都会导致64位读取-修改-写入操作(默认情况下)。 这样做是为了保持每64位数据的正确8位 ECC。 当 RAM 未初始化时、该读取-修改-写入操作会导致一个双位 ECC 错误。