请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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)();
}
}
我是否需要更改或修复某些内容?