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.

[参考译文] MSP430-FLASHER:我可能在 MSP430定制 BSL 包中发现了一个错误

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/626469/msp430-flasher-i-may-have-found-a-bug-in-msp430-custom-bsl-package

器件型号:MSP430-FLASHER

我发现当缓冲区未满时、写入闪存位不会被移除。

如果我在使用 Set_PC 之后使用 CHECK_CRC,则我们的 MSP430闪存“有一些损坏”。 它调用两次 Flushbuffer、这将强制设置 WRT、在复位之前永远不会取消设置。

我为他人分享…

 

/*********

***函数:FlushBuffer

***说明:清空缓冲区中的所有剩余数据

***返回:

* Success_Operation 闪存现已锁定。

秘书长的报告 /

#ifdef RAM_based_BSL

char flushBuffer (void)

{

unsigned long i;

char 异常= success_operation;

unsigned char* data =&BlockBuffer[0];



if (已锁定状态==已解锁)

{

如果(((BlockBufferStart & 0x7F)=0)&&(BlockBufferPtr =128))//缓冲区已满且

//对齐

{

while (FCTL3 & Busy);

FCTL3 = FWKEY; //清除锁定位

FCTL1 = FWKEY + BLKWRT + WRT; //设置写入/块位



对于(I = BlockBufferStart;I < BlockBufferStart + 128;I += 4)

{

__data20_write_long (i、*((long*) data));

数据+= 4;

while ((FCTL3 & Wait)==0);

} // for

FCTL1 = FwRamKey;

while (FCTL3 & Busy);

FCTL3 = FwRamKey + LOCK;

} //如果

其他

{

FCTL3 = FwRamKey; //清除锁定位

FCTL1 = FwRamKey + WRT; //设置写入位

对于(i = BlockBufferStart;i < BlockBufferStart + BlockBufferPtr;i++)

{

if ((BlockBufferStart & 0x01)|| i =BlockBufferStart + BlockBufferPtr - 1)

{

异常= BSL430_writeByte (i、*数据);

数据+= 1;



}

其他

{

异常= BSL430_writeWord (i、*(int *) data);

数据+= 2;

i++;

}

如果(异常!=成功操作)

{

返回异常;

} // if

} // for

// GHE:修复在设置的 PC 上意外写入闪存的位置

FCTL1 = FwRamKey;

while (FCTL3 & Busy);

FCTL3 = FwRamKey + LOCK;

// GHE:修复结束

} //否则

BlockBufferStart = 0;

BlockBufferNext = 0;

BlockBufferPtr = 0;

}

其他

{

例外= BSL_Locked;

}

返回异常;

} 

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

    Germain、

    感谢您的查询。 我们将对此进行研究并返回给您。

    编辑:

    我们将在发布下一个定制 BSL 包更新(即将推出)之前对此方案执行测试。 如果这是一个错误、它的文档及其相应的修复和/或更改将记录在发行说明中。 感谢您将此事提请我们注意。