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.

[参考译文] MSP430FR2673:用于430升级的自写启动、升级到最后固件大小位置时的 IIC 读取超时、无法恢复

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1177024/msp430fr2673-self-write-boot-for-430-upgrade-iic-read-timeout-on-upgrade-to-last-firmware-size-location-cannot-be-restored

器件型号:MSP430FR2673

大家好、

客户提出的问题需要您的帮助:

我在2673芯片中放置了两个应用程序、一个作为升级启动、另一个作为应用程序、编写升级启动时请参阅 BSL。  当新升级的固件小于芯片自己的应用程序固件时、升级将不会出现异常、升级后将正常运行。  但是、当新固件大于芯片上已存在的应用固件的大小时、当升级到现有固件大小的结束地址(IIC 通信超时或地址未确认)时会发生总线错误。  在示波器中、当 IIC 在写入数据包后尝试读取数据包响应时、引导不响应、SCLK 和 SDI 被拉至低电平、无法恢复。  当我重启器件时、新固件会正常升级、或者引导会在调试模式下升级、而不会出现任何问题。  

芯片上已存在的固件大小为5502、应用程序从0xc800开始、因此结束地址为0xdd7e、自写启动是一个200字节的数据包、 当新固件尝试写入0xdd18至0xdde0区域时、会发生此问题。 包含旧固件的末尾。  

我尝试更换芯片上的程序、但每当我想更新大于原始固件的固件时、都会出现相同的问题、每次我在旧固件的末尾遇到此软件包问题时、都会出现相同的问题; 升级后、我立即将新固件写入旧固件的末尾。 立即出现问题。  

下面是我在我自己的引导中配置的内容:  

关闭所有中断__disable_interrupt ();在跳转启动之前,使用跳转(void (*)())*(uint16_t *)(0xFFFE))()

是否有办法解决这个问题? 原因是什么?  

您可以帮助检查此案例吗? 谢谢。

此致、

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

    客户是否以单映像模式在以下应用中引用演示代码?

    https://www.ti.com/lit/an/slaa721e/slaa721e.pdf?ts=1670308153989&ref_url=https%253A%252F%252Fwww.ti.com%252Ftool%252FMSPBSL%253FkeyMatch%253D%2526tisearch%253Dsearch-everything%2526usecase%253Dsoftware 

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

    您好、Gary、

    [引用 userid="319723" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1177024/msp430fr2673-self-write-boot-for-430-upgrade-iic-read-timeout-on-upgrade-to-last-firmware-size-location-cannot-be-restored/4432751 #4432751"]客户是否使用单映像模式引用了以下应用程序中的演示代码?[/quot]

    不、他不知道。 引导过程中不引用自写引导中的通信协议。  固件检查通过读回下载的固件并计算校验和来完成 、然后将其发送到高级器件进行比较。  在引导时确认应用程序需要通过信息区域中的标志位进行升级、并且在整个升级过程中使用 IIC 通信。  除了上图中的写保护操作外、只有在升级完成后跳过应用程序时才会执行写保护操作。  没有其他与 FRAM、写保护相关的寄存器操作。  

    整个芯片中只有一个自写引导和一个应用程序。  

    引导区域:FRAM                   : origin = 0xC000,length = 0x0800  reset                  :origin = 0xFFFE,length = 0x0002

    应用程序区域:FRAM                   :origin = 0xC800,length = 0x3770  reset                  :origin = 0xFF72,length = 0x0002

    此致、

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

    好的、这个错误来自客户的自写代码逻辑、在浏览客户编写的源代码之前、我不能做任何注释。  

    顺便说一下、这里只提供了一些调试方法来检查、在这种情况下、引导代码中会显示错误"将大数据写入内存失败"

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

    您好、Gary、

    抱歉、客户无法提供源代码。 感谢您的帮助、他找到了一个临时解决方案来绕过此问题一段时间、如果您有新的想法、请继续发送您的消息。

    此致、