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.

[参考译文] msp430f5659:电路板恢复方法/固件上传问题

Guru**** 2538930 points
Other Parts Discussed in Thread: MSP430F5659, MSP-FET

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/626257/msp430f5659-board-recovery-method-firmware-upload-issue

器件型号:MSP430F5659
主题中讨论的其他器件: MSP-FET

关于固件上传问题

电路板规格:
 微控制器- MSP430F5659
 使用的端口- USBCOM 端口


面临的问题 :

正常条件-->我们使用固件上传工具(PYTHON_Firmware_UpgraderGUI)使用 comusb 端口上传电路板中的固件,成功上传后,我们重新启动电路板。 没有问题

问题条件-->假设在上载固件时,我们出于测试目的断开了 USB 电缆,则固件上载失败
                       然后电路板无法启动、我们无法再次上传固件、因为无法从工具中检测到端口。
   因此、我们使用调试器(MSP-FET 仿真工具)再次上传固件

我们的要求:

在实际情况下、在上传固件时可能会对电缆进行联网
因此、我们无法始终使用调试器(MSP-FET 仿真工具)将固件上传到电路板中、因为它位于封闭的盒子中。
请建议在不使用调试器的情况下使用其他方法恢复电路板。

此致

曼诺伊

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

    对于 USB (CDC)、BSL 条目使用 PUR 按钮、或清空(擦除)闪存(更精确地说、0FFFFh 地址为空、值为0FFFFh 就足够了)。

    如果不使用 PUR 按钮且闪存未擦除、则没有理由启动 BSL、您的(未正确刷写)应用程序将启动。  

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

    您好、zrno soli、

       为电路板加电后、
       我们正在发送固件升级命令、该命令执行以下代码、然后在 正常情况下成功进入引导模式并上载固件。
               USB_DISCONNECT ();
               USB_disable();
               SYSBSLC &=~(SYSBSLPE);
               /* 确保在 BSL 期间没有触发应用程序中断*/
              _disable_interrupt ();
              /* 这会将执行发送到 BSL。 当执行返回到用户应用程序时,*/
              /* 它将通过复位矢量,这意味着执行将重新开始。*/
                ((void (*)() 0x1000)();
        
      TI 技术人员建议使用上述代码、
      在您的评论中,您提到0FFFFh 为空,请告诉我们地址的位置是什么?

    我们在 THR 过程中移除了电缆、出现固件上传问题、需要使用调试器进行恢复。       
    请在没有调试器的情况下优先告知电路板恢复过程。


    谢谢、 此致
    曼诺伊

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

    加电后、将检查 BSL 进入序列的 PUR 引脚复位矢量如果未按下 PUR 按钮并且复位向量不为空、器件将开始程序执行(而不是 BSL)。

    您可以在 BSL_PROTECT 函数(从 BSL430_Low_level_Init.s43文件中)中看到这一点

    BSL_PROTECT:     
                 CLR.W   RET_LOW                 ;清除 JTAG_OPEN、保持 KEY 状态
                 BIS     #SYSBSLPE+SYSBSLSIZE0+SYSBSLSIZE1,&SYSBSLC;保护 BSL
                 ;BIC.W     #BSL_REQ_JTAG_OPEN、RET_LOW  ;LOCK (保持 JTAGLOCK_KEY 状态)
                 
                 ;MOV.W     #BSL_REQ_JTAG_open、RET_low  ;open
                       
                 MOV.w  #0x9628、  &USBKEYPID
                 BIS.w  #PSEIEN、  &USBPHYCTL
                 bit.w  #PUR_IN、  &USBCNF
                 jnz    request_BSL              ;如果 PUR_IN 置位、则请求 BSL
                 CMP.w  #0xFFFF、  &0xFFFE       ;否则、测试空白复位
                 JNE    JEST_RETA               ;如果不为空,请跳过延迟并开始
                 ;------------------------------------------------------------
                 ; USB 加电延迟
                 MOV.w  #300、R11
    DELAY_LOOP   解码 w  R11
                 jnz    delay_loop
                 ;------------------------------------------------------------
                 bit.w  #USBBGVBV、&USBPWRCTL    ;测试 USB 电源
                 JZ     JOND_RETA                ;无电源,跳至仅启动
    Request_BSL  BIS.W  #BSL_REQ_APP_CALL、RET_LOW
    JEST_RETA    BIC.w  #PSEIEN、  &USBPHYCTL
    #ifdef LOCK_USB_correctly
                 MOV.w  #0x0000、  &USBKEYPID    ;正确锁定 USB
    其他
     #ifdef lock_USB_legacy
                 MOV.b  #0x00、    &USBKey
     其他
     错误"定义旧版或正确的 USB 模块关闭"
     #endif
    #endif
                 返回

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

    感谢您的回答。
    我们正在考虑上述解决问题的建议。

    此致
    曼诺伊