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.

[参考译文] MSP430F5514:通过软件调用 BSL 时、MSP430未被检测为 HID

Guru**** 2049780 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/814011/msp430f5514-msp430-not-getting-detected-as-hid-on-invoking-bsl-through-software

器件型号:MSP430F5514
主题中讨论的其他器件:UNIFLASH

你(们)好

我想通过 USB 更新固件。 我正在尝试按照报告 http://www.ti.com/lit/an/slaa452c/slaa452c.pdf 中的建议通过软件调用 BSL                    调用 BSL 后、主机软件-基于 Visual Studio 的 GUI 和基于 Python 的固件升级程序未将 MSP430检测为 HID。 如果我在调试期间尝试停止编程器、我会收到错误消息:"MSP430:Trouble Halting Target CPU: Internal error"。 但我可以在一段时间后停止它。 如果我尝试从存储器浏览器读取0x1000处的存储器、我可以看到所有0x3FFF。 但是、如果我从命令行工具 MSPFlasher 中读取 BSL 存储器、它看起来很好、如下所示: e2e.ti.com/.../bslMem.txt

我无法使用 BSLScripter、因为它无法打开 HID 设备。 我无法尝试 UART-BSL、因为我正在处理的 PCB 上的 UART 存在问题。 在有关使用 USB 进行固件更新的文档中、我确实阅读了一些有关 XT2时钟频率设置的内容、但我还没有能够对此进行研究、并且将尽早进行研究。

以下是我的代码:

uint08 fInvokeBsl;

void main (void)

{    

  WDTCTL = WDTPW|WDTHOLD;           //停止 WDT

  

USBKEYPID = 0x9628;//解锁 USB 寄存器
USBPWRCTL |= VBONIE;//启用 VBUS 开启中断
USBPHYCTL |= PUSEL;
USBCNF |= PUR_EN;
USBKEYPID = 0x9600;//锁定 USB 寄存器

if (fInvokeBSL)

  _disable_interrupt ();
  ((void (*)() 0x1000)();
  fInvokeBSL = 0;

#pragma vector=USB_UBM_Vector // USB 中断服务例程
_interrupt void iUsbInterruptHandler (void)

  开关(__evo_in_range (USBVECINT & 0x3f、USBVECINT_OUTPUT ENDPOINT7))
  {
  案例 USBVECINT_PWR_VBUSOn:
    fInvokeBSL = 1;//设置标志
    //_BIC_SR_REGISTER_ON_EXIT (LPM3_BITS);//退出 ISR 时退出 LPM3。
    中断;
  默认值:
    中断;
  }

   

我在这个问题上搜索了很多、包括这个论坛上的多个线程、但是找不到解决方案。 我们非常感谢您的帮助。 如果需要任何其他信息、请告诉我。

提前感谢

[更新:]使用 Uniflash、我使用附加文件中的值对 BSL 进行了编程。 现在、在将 USB 电缆连接到我的笔记本电脑并暂停编程器时、我收到消息"Brak at address '0x133C"、no debug information available、or outside of program code"。 我能够在反汇编窗口中查看反汇编代码。  

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

    您好、Abhishek、

    我将对此进行研究、并将尽快提供更新。

    谢谢、

    Mitch

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

    你(们)好、米奇

    非常感谢您的回复。 我急切地等待着答复。

    下面是一些详细信息。 我不会为 XT1或 XT2使用外部晶体振荡器、而是使用 MSP430提供的默认时钟。 我要进行的硬件连接如下:(从 USB 电缆)+5V 至 VBUS、Data+至 DP、Data-至 DM 以及 USB 电缆的接地至 MSP430的接地。 VUSB 通过电容器接地。 PUR 通过一个1兆欧的电阻接地。 对于 BSL 的硬件调用、需要拉高 PUR、对于软件调用、是否连接到接地端是可以的?

    同时、我将尝试使用 UART 来使用 UART-BSL 并告知您结果。

    谢谢

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

    下面是我这边的一些更多信息。 我的电路中没有从 PUR 引脚到 DP 的上拉电阻器。 XT2也没有外部晶振。 我认为这两个条件对于 USB BSL 的工作是必要的。

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

    您好、Abhishek、

    很好的收获 USB BSL 需要一个外部 XTAL。 这似乎是问题的根源:

    祝您使用 UART BSL 吗?

    谢谢、

    Mitch

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

    您好 Mitch、

    尝试使用 UART-BSL 被证明是一种灾难。 对于另一个系列、我尝试使用 UART BSL 替换 BSL。 它最终锁定了我的 MCU 上的 JTAG 并破坏了代码。 我现在必须抛弃 IC。 我还不知道为什么会发生这种情况。 我在这里也发布了一个问题。 您能让别人看看吗? 我可以不工作、但我想了解为什么 JTAG 被锁定、固件损坏。

    谢谢、此致

    Abhishek