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.

[参考译文] MSPM0G3519:无法使用新源的 MCU 进入任何 ISR '但固件在 LaunchPad 上正常工作、没有故障

Guru**** 2425360 points
Other Parts Discussed in Thread: MSPM0G3519, UNIFLASH, SEGGER

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1537177/mspm0g3519-unable-to-enter-into-any-isr-with-newly-sourced-mcu-s-but-firmware-works-without-fault-on-launchpad

器件型号:MSPM0G3519
主题中讨论的其他器件: UNIFLASHSEGGER

工具/软件:

尊敬的支持:

我们在新硬件上遇到的奇怪行为是中断控制器不会产生任何中断。 我的意思是、我们永远不会进入 ISR。  但相同的代码可在 MSPM0G3519 LaunchPad 上正常工作。 我测试的中断是 ADC、TIMER 和 SYS-Tick。
为了隔离问题并简化代码库、我回到了 TI 的 Code Composer、并使用 SDK 生成了一些基本示例、即
  • ADC_TO_UART
  • SYSCTL_MCLK_syspll
  • SysTick 周期计时器
然后、我在 LaunchPad 上成功测试了每个示例、然后再将其加载到我们的新硬件。 在我们硬件上运行的每个示例都无法进入 ISR。
然后、我们决定将 LaunchPad MCU 转移到新硬件、看看我们的设计或新购买的 MCU 是否存在问题。 在示例应用程序和我们自己的应用程序正常工作的情况下、传输成功、并在触发后进入相关的 ISR。
我们遇到的问题是、我们是否需要了解新采购的 MCU 有什么特别之处?
MCU 上的标识如下
  • LaunchPad MCU 具有以下识别信息:
    M0G3519S
    X46AVGCW
  • 使用以下 MCU 标识建立自己的硬件时所看到的情况
    MOG3519S
    X51C78JW
您可以提供的任何信息都将大有帮助。
此致、
Jes
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以尝试将 MCU 焊接到 Launchpad、尝试获取 ISR 测试结果吗?

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

    我们以相同的结果完成此操作、固件不会进入 ISR。

    以下是有关问题 MCU 工厂区域的一些信息。

    TraceID 0x4E6A8
    ManufacturerCode 0x17
    器件型号为 0xBBA9
    版本 0x0
    TemperatureVoltage 0x31C
    UserID 器件 0x1508
    UserID 型号 0x16

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

    您可以尝试在问题 M0 上运行这个演示代码吗? 在 SDK 中:

    C:\ti\mspm0_sdk_2_05_00_05\examples\nortos\LP_MSPM0G3519\driverlib\timx_timer_mode_periodic_sleep

    或者我在这里上传的同一个文件:

    e2e.ti.com/.../timx_5F00_timer_5F00_mode_5F00_periodic_5F00_sleep_5F00_LP_5F00_MSPM0G3519_5F00_nortos_5F00_ticlang.zip

    它将进入计时器中断状态。

    MCU 仅在批次中不同。

    此外、由于您的测试基于 MSPM0 SDK、因此如果有任何修改、请告诉我。

    此外、请告诉我 LaunchPad 上的测试和您自己的 PCB 之间是否存在 CCS/SDK 环境差异。

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

    我通过 LaunchPad 将硬件 (ID 0006) 连接到 CCS Studio、该 LaunchPad 上有 XDS110 探针、并执行原始的简单 SysTick 示例。 这样才能进入 ISR。 然后我回到了我们的开发环境并执行了相同的简单 SysTick 示例、它也起了作用。

    然后、我尝试 在硬件 (ID 0006) 上执行测试线束项目 、其中简单的 SysTick 示例刚刚起作用、但无法加载。 Test Harness 应用程序的二进制大小为 55 KB。 IDE 加载约 40KB、然后挂起。

    但在我们硬件的一个单独单元 (ID 0008) 上、我们从 LaunchPad 制作了 MCU 交换、我们能够在同一环境中下载并执行测试线束应用。 我们的开发环境是 Rowley Cross Studio ARM 5.2.0、带有 GNU 编译器 14.2.1。 我们使用了交叉连接作为调试器探头。

    这确实建议 CCS 配置 MCU 的特殊存储器部分以供下载和执行固件。 我 在目录 C:\ti\ccs2010\ccs\ccs_base\emulation\gel 中找到了一个*。gel 文件、它看起来会设置这些特殊区域、但我无法找到文件中导致此问题的设置的位置。

    是否有办法读取存储器的所有部分、甚至读取特殊区域?

    使用 CCS Studio 20.2.0

    MSPM0 SDK 2_5_1_0

    SYS_CONFIG 1.24.0

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我通过 LaunchPad 将我们的硬件 (ID 0006) 连接到 CCS Studio、该 LaunchPad 上有一个 XDS110 探针、并执行原始的简单 SysTick 示例。 这样才能进入 ISR。 然后我回到了我们的开发环境并执行了相同的简单 SysTick 示例、它也起了作用。

    中断问题似乎已解决、这可能是由硬件引起的。

    然后我尝试 在我们的硬件 (ID 0006) 上执行我们的测试线束项目 、其中简单的 SysTick 示例刚刚起作用、但加载失败。 Test Harness 应用程序的二进制大小为 55 KB。 IDE 将加载约 40KB、然后挂起。

    尝试低速 SWD。

    尝试使用较短的 SWD 电缆。

    检查 ID 0006 SWD 信号波形、尝试确认 SWD 上是否有很多噪声。

    在下一个编程之前、请尝试运行恢复出厂设置以恢复器件。

    我们的开发环境是带有 GNU 编译器 14.2.1 的 Rowley Cross Studio ARM 5.2.0。 我们使用交叉连接作为调试器探头。

    我对这些工具链没有任何经验。

    是否有办法可以读取内存的所有部分、甚至是特殊区域?

    您可以尝试使用 TI.com 中的 Uniflash 使用 XDS110 将所有存储器下载到 txt 文件。

    此致、

    Helic

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

    您好、Helic、

    对于我们来说、这不是一个解决方案、特别是在目前我们需要对硬件进行两次编程才能使其正常工作的生产环境中。

    经过进一步调查、为了使我们的测试线束在新提供 MCU 的情况下正常工作、或执行恢复出厂设置、并解决加载固件和在 LaunchPad 或硬件上运行中断的问题、我们需要首先从 SDK 加载“开箱即用“示例。  

    这建议 Code Composer Studio 在加载期间正确设置一个存储器段以使其正常工作。 您能否确定此处理器的所有特殊存储器区域以及任何可用于介绍这些部分的文档。 我只知道从 0x41C00000 到 0x41C00020 的 NONMAIN 区域

    我还尝试获取 MCU 的存储器转储并使用 UniFlash 工具将其保存到一个文件 中、但会持续崩溃、如附件中所示。

    这已成为公司面临的一个关键问题

    此致、

    Jes

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我还尝试了获取 MCU 的内存转储并使用 UniFlash 工具将其保存到文件 中、但会持续崩溃、如附件中所示。

    尝试两次或三次、查看是否有任何错误。

    使用 Uniflash 第一次读取时很常见、无法正常工作。

    经过进一步调查、为了使我们的测试线束在新源 MCU 下正常工作或执行恢复出厂设置、并解决加载固件和在 LaunchPad 或硬件上使中断工作的问题、我们需要首先从 SDK 加载“开箱即用“示例。  [/报价]

    在您自己的固件有助于解决这些问题之前、先尝试从 SDK 进行编程和编写代码?

    这是不正常的。

    您在工厂中使用的编程工具是什么?

    这样确实建议 CCS 配置 MCU 的特殊存储器部分、以便其下载和执行固件。 我 在目录 C:\ti\ccs2010\ccs\ccs_base\emulation\gel 中找到了一个*。gel 文件、它看起来会设置这些特殊区域、但我无法找到文件中导致此问题的设置的位置。

    您能告诉我这些 gel 文件中的哪些步骤吗?

    也许、此处有一个函数会影响程序步骤、但这取决于您是否启用它(默认情况下禁用)

    和调试器还将在编程之前尝试复位 MSPM0:

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

    Helic Chi,

    您在工厂中使用的编程工具是什么?

    我们会在工厂中将映像 BSL 到 MCU。 这一过程仍有待验证。

    我成功地使用 SEGGER 工具、将运行我们的测试线束应用的工作和非工作 MCU 的内存转储。 我看到 PPB 区域 0xE0000000 size=“0x1000000" 在“在工作和不工作的 MCU 之间的区域有所不同。 这是否是问题的根源? 将在该区域中加载矢量表偏移量。

    如前文所述 、我们的开发环境是带有 GNU 编译器 14.2.1 的 Rowley Cross Studio ARM 5.2.0。 我们使用了交叉连接作为调试器探头。 我发现、如果我使用连接到同一 IDE Rowley Cross Studio 的 SEGGER j-Link、新源 MCU 上的测试线束将正确执行。 我已经与 Rowley 谈论过这个问题、他们认为这与调试器探针无关;他们确实说 TI 为他们提供了一个、“。 FLM“文件、用于执行闪存编程。 您是否有关于此文件的其他信息? 我在过去一周中发现的其他信息是、我们能够对 80 引脚变体进行编程、而不会在我们的开发环境中出现问题。

    [引述 userid=“571933" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1537177/mspm0g3519-unable-to-enter-into-any-isr-with-newly-sourced-mcu-s-but-firmware-works-without-fault-on-launchpad/5936686

    您能告诉我这些 gel 文件中的哪些步骤吗?

    也许、此处有一个函数会影响程序步骤、但这取决于您是否启用它(默认情况下禁用)

    [/报价]

    我希望你能为我提供这个答案。 使用 CCS 工具、可通过哪个配置来对 PPB 区域进行编程?

    此致、

    Jes

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我希望您能为我提供这个答案。 使用 CCS 工具、可在哪个配置下对 PPB 区域进行编程?

    https://www.ti.com/lit/an/slaaeo5/slaaeo5.pdf

    1.2 处于空白/低功耗状态的 MSPM0 的行为

    我不确定您的问题是由这种低功耗还是空白芯片状态引起的。

    您可以尝试一下第 1.2 节中的说明吗?