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.

[参考译文] MSP430FR5739:执行引导加载程序下载后,加载PC无法正确重置板

Guru**** 2582405 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/615554/msp430fr5739-load-pc-does-not-properly-reset-board-after-bootloader-download-has-been-performed

部件号:MSP430FR5739

我已成功运行所有引导加载程序命令。  我能够使用密码解锁,检查CRC等。 当我使用bootloader将图像下载到MSP430时,我可以验证是否已正确接收图像。  如果我拔下主板并重新插入,一切都正常,工作正常。  但是,如果我尝试使用“加载PC”命令加载0xC200,我的程序似乎不能正常运行。  它“有点”工作,但显然是有问题的。  我正在发送一个执行UART环回的MSP430程序,并看到计算机上丢失的字符或接收到无效的ASCII数据。  但是,当我拔出插头并正常启动主板时,我看不到任何伪影,一切都很好,UART环回很棒。  

设置PC和执行硬重置之间有何区别?  有什么想法要看?  

提前感谢。

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

    您好,Russell:

    当您使用加载PC时,只需跳到应用程序的开头,不会发生重置。 但是,当您关闭并重新打开部件时,会发生BOR重置。 这可能是不同行为的来源。 通常,在PUC,POR或BOR重置期间,设备模块中的寄存器位都将重置为设备用户指南 www.ti.com/lit/pdf/slau272中指定的一些默认值 ,您可以在紧接第1章之前的"寄存器位可访问性和初始条件"一节中看到, 用户指南中使用的术语,用于指示将位设置为该默认值所需的重置级别(有关重置的详细信息,请参阅1.2 部分)。  然后,在用户指南的每个模块章节中,在寄存器位描述中,您可以看到-(0),-[1],-1,-{0} 等术语,它们用于表示默认寄存器状态和设置该默认状态所需的重置级别。

    但是,由于在BSL运行后您没有执行任何重置,我怀疑在BSL执行的某些寄存器中存在不同的值, 您的应用程序代码可能无法完全清除这些值(例如,如果使用了|=或没有触及某些寄存器 ,则可能意味着存在一些默认值的假设)。 根据您描述的症状,我怀疑您的应用程序可能仍有一些BSL设置未清除或干扰您的代码设置, 特别是 时钟系统和UART,因为BSL都使用这些设置。

    两种可能的解决方案:

    1.退出BSL时执行BOR重置,而不是加载PC。  这不需要通过硬件来完成,可以使用PMM模块的软件BOR功能从BSL本身完成。 只需使用BSL将值0xA504写入PMMCTL0寄存器地址(0x0120)-这将发送PMMPW 0xA5 解锁PMM寄存器以进行写入,并设置PMMSWBOR位。 (请记住,您必须先发送较低的字节,这样您将发送04h,A5h。 如果您以错误的顺序发送密码,您将收到一个PUC而不是BOR,因为发送了错误的PMM密码)。 如果您使用的是BSLScriptter,只需发送附加的TI-txt文件即可:

    e2e.ti.com/.../BOR.txt

    2.另一种方法是更改应用程序代码,以确保初始化完全设置/清除影响应用程序使用的模块的每个寄存器。 这是一个比较难的解决方案,因为您必须非常彻底地预测您必须设置/清除的所有内容。 我认为备选方案1将更可靠,更易于实施。

    此致,

    Katie