乐鑫技术交流
直播中

王飞云

7年用户 1471经验值
私信 关注
[问答]

使用Flash下载工具会擦除意外的附加扇区怎么处理?

我们发现 Flash 下载工具在下载过程中可能会擦除比预期更多的扇区。也就是说,如果我们下载一个图像文件,其大小可能覆盖小于扇区 N 的扇区(部分大小为 4096),并且下载日志还显示刻录到部分 N 内的地址,但是在使用乐鑫闪存下载工具成功下载图像文件后,发现下一部分 N 1 也被删除了!

示例 1:尝试下载一个扩展到地址 0x6C004 的图像文件(0x6C004 只是一个示例,类似的东西,它只覆盖扇区开头的几个字节),并且自 0x6D000(下一个扇区 0f 4096 的开头)以来存储了一些有用的数据。下载图像文件后,发现0x6D000中的有用数据已被删除,全部0xFF。

示例 2:尝试将大小较小的映像文件(小于扇区大小 4096)下载到 SPI 闪存的最后一个扇区(例如,在 1MB 的闪存上下载只有 128 字节的 blank.bin 或 esp_init_data_default.bin 到 0x0FF000 的地址,或在 2MB 的闪存上下载 0x1FF000,或在 4MB 的闪存上下载 0x3FF000)。下载成功后,发现地址为0的原始开机已被擦除,模块无法成功开机。然后,您必须在地址 0 处重新下载启动程序。

测试工具:以前的 FLASH_DOWNLOAD_TOOLS_v1.2_150512 和最新的 FLASH_DOWNLOAD_TOOLS_V3.4.9.2(从http://www.espressif.com/en/support/dow......其他工具)

测试模组:ESP-01、ESP-12 系列和许多其他ESP8266模组

测试期间使用的 UART 波特率:115200 和 1152000(两者都表示下载成功,但擦除了意外的额外扇区)

再现:始终100%。


回帖(1)

敷衍作笑谈

2024-7-11 11:58:55
在使用 Flash 下载工具时,如果发现意外的附加扇区被擦除,可以采取以下步骤来处理这个问题:

1. **检查下载工具设置**:首先,确保下载工具的设置是正确的。检查是否有任何设置可能导致意外的扇区擦除,例如擦除范围设置过大或不正确。

2. **使用正确的擦除命令**:确保使用正确的擦除命令来限制擦除操作仅在需要的扇区内进行。例如,如果使用 SPI Flash,确保擦除命令(如 `SECTOR_ERASE`)仅针对目标扇区。

3. **扇区对齐**:在设计固件或软件时,确保数据存储在扇区边界对齐的位置。这可以减少跨扇区写入数据的可能性,从而降低意外擦除的风险。

4. **备份数据**:在进行任何擦除或写入操作之前,始终备份受影响区域的数据。这可以在意外擦除发生时恢复数据。

5. **使用保护机制**:在 Flash 存储器上实现保护机制,如写保护或锁定区域,以防止意外擦除或修改关键数据。

6. **验证下载过程**:在下载过程中,实时监控 Flash 的状态,确保数据仅写入到预期的扇区内。如果发现异常,立即停止下载并检查问题。

7. **使用专业的 Flash 编程工具**:选择一个可靠的、经过验证的 Flash 编程工具,这些工具通常具有更好的错误检测和处理机制。

8. **更新固件或软件**:如果问题是由于固件或软件的 bug 引起的,尝试更新到最新版本,以修复可能的问题。

9. **硬件检查**:如果问题持续存在,可能需要检查 Flash 存储器的硬件是否存在问题。这可能包括检查 Flash 存储器的规格和兼容性。

10. **联系技术支持**:如果以上步骤都无法解决问题,可能需要联系 Flash 下载工具或 Flash 存储器的制造商,寻求技术支持。

通过采取这些步骤,可以最大限度地减少在使用 Flash 下载工具时意外擦除附加扇区的风险,并确保数据的完整性和安全性。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分