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.

[参考译文] CCS/MSP432P401R:"闪存编程器:读取硬件版本失败。"&"没有可用于0x0&quot 的源;

Guru**** 2618835 points

Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/674158/ccs-msp432p401r-flash-programmer-reading-hw-revision-failed-no-source-available-for-0x0

器件型号:MSP432P401R

工具/软件:Code Composer Studio

你(们)好

我正在使用 MSP432P401R 红色 Launchpad、Windows 10、CCS (最新版本)、并且已经花了太长时间尝试解决此问题。 昨天、我犯了一个愚蠢的错误、就是在一次点击后就放弃并更改了大量代码、而没有完全验证每个步骤。

我所做的大部分更改与芯片在启动时从闪存存储器的各个区域加载数据的方式相关、直到现在、它都没有问题地完成了。  

我在启动调试时出现了如下错误:

Cortex_M4_0:闪存编程器:读取硬件版本失败。
Cortex_M4_0:不再支持 XMS432P401R 材料。 我们建议您通过在 www.ti.com/product/MSP432P401R 订购样片来改用生产质量高的 MSP432P401R/M 器件。
Cortex_M4_0:文件加载程序:存储器写入失败:未知错误
Cortex_M4_0:GEL:文件:C:\Users\Sean Howson\Documents\18 -备份存档文件\Workspace 2\MODBUS Adapter\Debug\MODBUS Adapter.out:加载失败。

几个星期前,这种情况曾经发生过一次。 出厂复位解决了该问题、但现在几乎每隔一段时间我启动调试就会发生该问题。 我没有触摸 TLV 数据或任何可能为调试器提供我正在使用的硬件指示的内容。 我尝试使用两个全新的电路板、它们都产生了相同的错误(两个新电路板首先更新了其调试芯片)。

恢复出厂设置仍可暂时解决问题、但我浪费了太多时间、需要达到问题的最底部。

其次、我还遇到强度变化的"无法找到0xXXXX 的源"问题。 有时、芯片看起来根本找不到任何源、有时也没关系。 上周我确实删除了所有调试符号以减小输出文件的大小、但后来我将它们全部重新放入(无论如何、我只从发布版本中删除它们)。

我在一个论坛上看到了一些问题、建议可能是无法正确配置闪存读取的等待状态。 此后,我做了这项工作,并尝试了各种等待状态的组合,但几乎没有成功。

此外、我注意到、通常当我在调试会话中进行编译时、CCS 会自动加载新代码并复位芯片。 它现在停止了这项工作?

我所做的就是修改代码、但其中许多问题似乎是由 CCS 引起的?

我已经尝试切换工作区。

已尝试无限重置和出厂重置等

已尝试在 Uniflash 中加载代码。

任何指针或建议都会有所帮助。 在这些问题上浪费大量时间。

肖恩

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sean、
    很抱歉、您正在经历这些令人沮丧的重启。 我不知道快速解决方法、但令人担忧的是、它在多个器件之间是一致的。

    您能否确认您未使用 XMS 器件? LaunchPad 上的实际芯片是'XMS'还是'1M 432'?

    您提到您要在启动时移动大量数据-这是 c_init 函数吗? 您是否在项目中使用了 startup_msp432p401r_ccs.c 和 system_msp432p401r.c 文件? Reset_handler 在调用_c_init00之前调用处理看门狗的 SystemInit()。

    您在应用中使用什么频率、Vcore 和闪存等待状态设置?

    如果您返回到一个简单的示例、这些问题是否可以解决?

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

    是的、我肯定会使用标记为 MSP432器件的芯片、经过认真清理并注释掉一半代码并缓慢地重新引入每个段后、该问题现在似乎已经有所缓解。 不过、我仍然无法完全隔离该问题。 我注意到、在重新启动调试会话后的第一次运行时、芯片持续进入"启动-无限 while 循环"、 实际上已经完成了一段时间、我觉得这可能与我设置时钟的方式/我配置时钟设置的顺序有关

    实际上、我没有使用任何 driverlib 函数、我倾向于在寄存器级别执行所有操作、只是一个首选项。 因此我不使用 init 函数。 但我确实包含了您参考的两个文件。
    您能不能简单地阐述一下您的意思
    "Reset_handler 在调用_c_init00之前调用处理看门狗的 SystemInit()。 "?

    我以48MHz 的频率运行 DC0、以有源模式 Vcore 1 (DCDC)运行。 根据 MSP432技术参考、我将闪存等待状态设置为1。 我认为这是正确的吗?

    正如我刚才提到的,回到第一步可以稍微清楚地说明问题,但我认为星期三在大会堂里仍然存在一些根本问题。
    最糟糕的部分是我不确定昨天是什么修复了它! 我还得继续学习其他一些知识、这使得正确集中注意力变得很困难。

    感谢您的帮助!

    顺便说一下、如果我的外设仅以最大24MHz 运行、我会注意到当我引入时钟周期断点时、它表示芯片以24MHz 运行、芯片是否有任何方面仍以48 MHz 运行、 还是芯片根据外设减速?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有关 RESET_handler 的注释只是为了确保您正在处理看门狗。 它实际上是在提供的系统文件中处理的、该文件在启动文件中调用。 如果您没有使用这些文件、那么我只想确保问题不是一些边际计时问题、在您实际输入主代码并处理看门狗之前、WDT 会超时。 您提到启动时加载数据、并担心变量的初始化花费的时间比看门狗超时更长。

    MCLK、VCORE 和闪存等待状态的设置是正确的。

    最后一点、我不认为 MCLK 会根据外设发生变化。 但是、外设访问时序要求、请参阅数据表中的表5.25.2。

    此致、
    Chris