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.

[参考译文] MSP430FR2675:升级固件失败

Guru**** 2511985 points
Other Parts Discussed in Thread: MSP430FR2675

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1198416/msp430fr2675-upgrade-firmware-failed

器件型号:MSP430FR2675

我正在使用 MSP430-i2cbsl 工具通过 I2C 更新 MSP430FR2675 FW。 我正在发送此命令"./msp430-i2cbsl-tool -i /dev/i2c-0 -s a -f Cerberus.txt"、并收到以下错误。

---------------------------------------------------------------
   TI MSP430 I2C Linux BootLoader 01.00.00.00
---------------------------------------------------------------
INFO: I2C BUS /dev/i2c-0 specified
INFO: Slave address 0xa specified
INFO: Firmware file Cerberus.txt specified
INFO: Opening TI-TXT firmware file firmware.txt...  done!
INFO: Password file not found, defaulting to 0xFFs.
INFO: Invoking BSL (Attempt 1)... Invoke sent!
INFO: Delaying for 2 seconds to wait for invoke... done!
INFO: Attempting to unlocking device with password... Fail!
INFO: Device could not be unlocked. Resetting password and trying again.
INFO: Invoking BSL (Attempt 2)... FAIL!
INFO: Device NAKed attempt!INFO: Invoking BSL (Attempt 3)... FAIL!
INFO: Device NAKed attempt!INFO: Invoking BSL (Attempt 4)... FAIL!
INFO: Device NAKed attempt!
ERROR: When trying to invoke or unlock device (Response code 0x108).

执行该命令后、我无法再与 MSP430通信、直到我将其复位。 这使我认为该单元实际上正在进入 BSL 模式、但工具无法识别它。 我进入 BSL 模式的代码如下:

uint8_t HostInterface_enterBSLMode[HOST_INTERFACE_BSL_CMD_SIZE] =
    {0xCA, 0xFE, 0xDE, 0xAD, 0xBE, 0xEF, 0xBA, 0xBE};

// Check if BSL mode is needed to be entered
if (HostInterface_i2cDataBuffer[HOST_INTERFACE_REG_OFFSET] == HostInterface_enterBSLMode[0])
{
    int index;
    bool enterBSLMode = true;
    for (index = 1; index < HOST_INTERFACE_BSL_CMD_SIZE; index++)
    {
        if (HostInterface_i2cDataBuffer[index + HOST_INTERFACE_REG_OFFSET] != HostInterface_enterBSLMode[index])
        {
            enterBSLMode = false;
            break;
        }
    }
    if (enterBSLMode == true)
    {
        // Clear interrupts before firmware load
        __bic_SR_register(GIE);
        // Jump to BSL
        ((void (*)())0x1000)();
    }
}

我是否需要更改或修复某些内容?

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

    您能否检查:

    I2C 的硬件连接正确吗?

    2.您能否检查 I2C 速度是否不是太高?

    3.您能否使用示波器捕捉波?

    伊斯天

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

    您好、伊斯天、

    感谢你的帮助。 我明白了。 我使用的 I2C 地址是0x0A、因为这是从 CapTIvate 软件自动生成的地址。 我在文档中看到、此工具的 I2C 地址设置为0x48。 一旦我改变了它、一切都运转良好。

    谢谢、

    Eric