乐鑫技术交流
直播中

djfldsthtr

8年用户 964经验值
擅长:光电显示
私信 关注
[问答]

以32Mbit-C1模式刷新SPI_MODE_MAP=6的固件,它永远不会进入用户代码,为什么?

我编译了一个 SPI_MODE_MAP=6 的固件,在 32Mbit 刷写模式下在0x01000地址刷写后工作正常,但加载器 (1.4b1) 显示它是 32Mbit(512K 512K) 模式(我也试过 16Mbit(1024K 1024K),固件也工作正常)。

现在我正在尝试以 32Mbit-C1 模式刷新它,刷写加载器后将其正确显示为 32Mbit(1024K 1024K),但它永远不会进入用户代码。它打印:

ets Jan  8 2013,rst cause:2, boot mode:(3,6)

负载 0x40100000,LEN 1396,房间 16
尾部 4
Chksum 0x89
负载 0x3ffe8000,LEN 776,房间 4
尾部 4
Chksum 0xe8
负载 0x3ffe8308,LEN 540,房间 4
尾 8
Chksum 0xc0
CSUM 0xc0

第2个启动版本:1.4(B1)
  SPI Speed      : 80MHz
  SPI Mode       : QIO
  SPI Flash Size & Map: 32Mbit(1024KB+1024KB)
跳转到运行 user1 @ 1000

并且再也没有进一步。
我尝试在 Windows 上使用固件下载工具在 Linux 上使用 esptool 下载固件,结果是一样的,所以我相信这一定是一些引导加载程序问题。
还是我对此模式做了哪些错误?

回帖(1)

硬件工程师1

2024-7-22 17:03:41
这个问题可能是由于以下几个原因导致的:

1. **固件不匹配**:确保你编译的固件是针对32Mbit-C1模式的。检查你的编译器设置和源代码,确保它们与32Mbit-C1模式兼容。

2. **启动模式不正确**:从你提供的日志来看,启动模式为(3,6)。这可能意味着你的设备没有正确进入32Mbit-C1模式。检查你的启动配置,确保它设置为正确的启动模式。

3. **分区表问题**:分区表可能没有正确配置,导致设备无法正确加载用户代码。检查你的分区表,确保它包含正确的分区信息,特别是对于32Mbit-C1模式。

4. **固件损坏**:在刷写过程中,固件可能已损坏。尝试重新编译并刷写固件,确保固件文件没有损坏。

5. **硬件问题**:如果以上步骤都无法解决问题,可能是硬件本身存在问题。检查你的设备,确保它支持32Mbit-C1模式,并确保所有硬件连接正常。

为了解决这个问题,你可以尝试以下步骤:

1. **重新编译固件**:确保你的编译器设置和源代码与32Mbit-C1模式兼容。重新编译固件,然后再次刷写。

2. **检查启动模式**:确保你的设备正确设置为32Mbit-C1模式。你可以通过修改启动配置或使用不同的启动命令来实现这一点。

3. **检查分区表**:确保分区表包含正确的分区信息。你可以使用分区表工具来检查和修改分区表。

4. **尝试不同的刷写工具**:有时候,不同的刷写工具可能会有不同的效果。尝试使用不同的刷写工具来刷写固件。

5. **检查硬件**:如果以上步骤都无法解决问题,可能是硬件本身存在问题。检查你的设备,确保它支持32Mbit-C1模式,并确保所有硬件连接正常。

通过以上步骤,你应该能够找到问题的原因并解决它。如果问题仍然存在,建议寻求专业人士的帮助。
举报

更多回帖

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