您好,
使用最新的MSP430固件升级示例BSL_USB_GUI (c/c++编译解决方案)时,偶尔会在计算机上弹出一个奇怪的问题。
我目前已部署了具有MSP430F5638 Rev D芯片的器件。 这些芯片与RAM BSL版本00.06 .05.34 配合使用,可以将我们的应用程序固件写入芯片。 由于我经常更新我的应用程序固件,因此在更新设备时,此工具非常重要。 Rev D已停止使用,因此我现在将Rev E芯片放入设备中。
问题的开始是RAM BSL 00.06。05.34 不能与Rev E芯片一起使用。 BSL_TX_BSL_Version_String()产生错误的版本,并且RAM BSL似乎未正确写入内存。 设备挂起,需要重启。 为了解决此问题,我已更新固件升级工具以使用RAM BSL 00.07 .08.38。 现在,该工具在所有计算机上与Rev E一起使用,在某些计算机上仅与Rev D一起使用。 使用00.07 .08.38 时再次出现错误,版本字符串无法正确生成,设备挂起,并要求关闭芯片电源后重启。 将RAM BSL 00.07 .08.38 写入Rev D芯片时无法正常工作的计算机与在操作系统,已安装软件和驱动程序方面正常工作的计算机非常相似。 计算机规格(如处理器和RAM)略有不同,但我非常怀疑这是问题所在。
使用JTAG将相应的闪存BSL BSL 00.07 .88.38 闪存到版本D芯片中以使用00.07。08.38 不起作用(相同的结果)。 降级Rev E芯片以使用与Rev D芯片相同的闪存BSL,然后使用RAM BSL版本00.06。05.34 可以工作。 虽然我担心的是芯片降级会增加一个额外的步骤,而且似乎不能保证芯片的正常运行。
总之,现在我在该领域拥有MSP430F5638的两个版本(D和E),并且我已经降级了Rev E芯片,这样我就不必使用两个不同的固件实用程序来升级应用程序固件。 我希望避免降级我的Rev E芯片或使用两种不同的固件实用程序,特别是因为00.07。08.38 应该同时支持两种版本。
这是我的问题的另一个转折。 要进入引导加载程序模式,必须在MSP430 USB芯片通电时将PUR引脚拉高。 实际上,我使用另一个电源板为MSP430芯片供电,该芯片在MSP430处于引导加载器模式的整个过程中保持PUR引脚高电平,这似乎是我问题的根源。 如果我在写RAM BSL时向下拉销,我不会遇到版本D和RAM BSL 00.07 .08.38 的问题。 知道了这一点,我无法解决问题,因为现场电源板的固件无法更新(没有令人难以置信的困难),无法将插针拉回。
在列出所有这些信息后,我尝试调试此固件工具,我非常好奇,为什么在将较新的RAM BSL写入Rev D芯片时,PUR引脚拉得过高会导致问题...只是在似乎是随机计算机的情况下? 我还尝试过Python固件工具,如果我使用Rev D芯片将PUR针固定在较高的位置,它始终无法正常工作。