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.

[参考译文] MSP430FR2355:I2C BSL 和 MSP430 BSL 工具存在问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1029253/msp430fr2355-problems-with-i2c-bsl-and-msp430-bsl-tool

器件型号:MSP430FR2355

您好!

我正在尝试使 MSP430FR2355上的 i2c BSL 正常工作。  我的计划是通过 i2c 从 Raspberry PI 更新其固件。

我在 PI 上安装了 MSP430 i2cbsl 工具、并将其 i2c 总线连接到 MSP 上的引脚 P1.2和 P1.3。 在 MSP 固件中、我正在调用

数据表中所述通过软件实现的 BSL。

这是我用于 BSL 调用的代码。 我还确保 MSP 以8MHz 的频率运行。  

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
WDTCTL = WDTPW | WDTHOLD;
TB3CCR0 = 0x00; // clear Timer B
TB3CCTL1 = 0x00;
TB3CTL = 0x00;
// Disable all interrupts
__disable_interrupt();
FRCTL0 = FRCTLPW | NWAITS_1;
__bis_SR_register(SCG0); // disable FLL
CSCTL1 = DCORSEL_3; // DCO Range = 8MHz
CSCTL2 = FLLD_0 + 243; // DCOCLKDIV = 8MHz
__delay_cycles(3);
__bic_SR_register(SCG0); // enable FLL
// Delay after setting clock to invoke BSL
__delay_cycles(3);
// Invoke BSL
((void (*)() )0x1000)();
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

调用后、BSL 在 i2c 总线上可见。

但是、当尝试刷写新固件时、始终会导致以下错误:

请提供任何帮助。

此致

最大

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

    尊敬的 Max:

    在查看 《MSP430 FRAM 器件引导加载程序用户指南 》第4.1.5.2节之后、似乎是一个密码错误、如果你想加载一个全新的应用、你可以批量擦除它、然后输入密码、对于所有字节、这个密码将为0xFF。

    此致、

    Luke

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

    您好!

    我知道、但根据数据表、写入错误密码后、它应该自动复位为0xFF。 我使用示波器进行了检查、MSP 甚至没有响应任何命令。 即使不是不受密码保护的文件、如批量擦除。

    此致

    最大

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

    尊敬的 Max:

    再次查看 《MSP430闪存器件引导加载程序用户指南 》、我们可以测试几个方面。 在1.3.2节中、提供的示例代码使用 MSP430F5xx 和 MSP430F6xx 器件的 BSL 地址。 而对于您使用的器件 MSP430FR2355、BSL 矢量为0C00h (冷启动)或0C02h (热启动)。 我看到您的代码中仍然有0x1000地址。 第5.3节还包括一些与 MSP430FR2355器件命令"Erase Main or Info"和"Erase Segment "相关的已知问题。

    让我们及时了解最新信息、

    Luke

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

    您好、Luke、

    遗憾的是、这不起作用。 如果我调用矢量0x0c00、器件甚至不会出现在 i2c 总线上。 此外、在第1.2节(BSL 特性概述)中、说明了 fr2355使用5xx、6xx 协议。

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

    尊敬的 Max:

    正确、此器件的地址为0x1000。 我将对此进行测试、以查看是否可以复制您遇到的密码错误、但需要一些时间。 平均而言、有类似的线程可以提供其他尝试 Thread 1Thread 2的想法

    此致、

    Luke

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

    您好、Luke、

    我可以缩小问题的范围。 似乎 Linux 工具没有发送正确的密码。 它在发送24个字节0xFF 后中止。 因此无法解锁器件。 我编写了一个简短的脚本、以正确的32字节格式发送密码。 这样、我就能够成功解锁器件。

    因此、TI 提供的工具似乎存在问题

    此致

    最大

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

    尊敬的 Max:

    很高兴您能够解决问题、并通过发送32字节密码来解决解锁器件的问题。 感谢您提供  有关您从工具中看到的特定字节数量的信息。 您提供的反馈对于 Linux BSL 工具的未来版本很有价值。

    此致、

    Luke