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: Upgrade Firmware Failed

Part Number: MSP430FR2675

I am working on updating the MSP430FR2675 FW via I2C using the msp430-i2cbsl-tool tool. I am sending this command "./msp430-i2cbsl-tool -i /dev/i2c-0 -s a -f Cerberus.txt" and I get the following error.

---------------------------------------------------------------
   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).

After doing that command, I can no longer communicate with the MSP430 until I reset it. This makes me think that the unit is actually entering BSL mode, but the tool is not recognizing that it is. My code to enter BSL mode is below:

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)();
    }
}

Is there something I need to change or fix?

**Attention** This is a public forum