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