乐鑫技术交流
直播中

杨万富

7年用户 1537经验值
擅长:526774
私信 关注
[问答]

SDK_RTOS1.0.4版本,执行user2的程序时,擦除user1时程序就死掉了,为什么?

我实现了自己的升级功能,但是当我升级完成后,在user2的程序中,再次升级user1的程序,执行擦除0x1000的接口时,程序就崩溃了,再也起不来了。为什么呢?
如下面的打印信息,执行user2,但是实际启动不了。

erase addr 0x1000

ets Jan  8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x40100000, len 1396, room 16
tail 4
chksum 0x89
load 0x3ffe8000, len 776, room 4
tail 4
chksum 0xe8
load 0x3ffe8308, len 540, room 4
tail 8
chksum 0xc0
csum 0xc0

2nd boot version : 1.4(b1)
  SPI Speed      : 40MHz
  SPI Mode       : QIO
  SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user2 @ 81000
                                                                                                                                                                                                                        
               

回帖(1)

郭中

2024-7-22 16:17:27
根据您提供的信息,这个问题可能是由于以下几个原因导致的:

1. **擦除操作错误**:在执行擦除操作时,可能存在一些错误,导致程序无法正常运行。请确保擦除操作正确执行,并且没有影响到其他重要的程序区域。

2. **程序空间不足**:在升级过程中,如果新程序的大小超过了可用的存储空间,可能会导致程序崩溃。请检查新程序的大小,确保它在可用的存储空间范围内。

3. **程序损坏**:在升级过程中,如果程序数据没有正确写入,可能会导致程序损坏。请检查升级过程中的数据传输是否稳定,以及是否有可能发生数据损坏。

4. **硬件问题**:如果硬件存在问题,例如存储器损坏,也可能导致程序崩溃。请检查硬件设备是否正常工作。

5. **启动配置问题**:可能存在启动配置错误,导致程序无法正确启动。请检查启动配置,确保它指向正确的程序入口点。

6. **中断或异常处理问题**:在擦除过程中,如果有中断或异常没有被正确处理,可能会导致程序崩溃。请检查中断和异常处理代码,确保它们能够正确处理各种情况。

7. **RTOS调度问题**:在使用RTOS时,如果任务调度出现问题,可能会导致程序崩溃。请检查RTOS的调度策略和任务优先级设置,确保它们正确配置。

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

- **检查擦除操作**:确保擦除操作正确执行,没有影响到其他程序区域。
- **检查程序大小**:确保新程序的大小在可用的存储空间范围内。
- **检查数据传输**:确保升级过程中的数据传输稳定,没有发生数据损坏。
- **检查硬件设备**:检查硬件设备是否正常工作,没有损坏。
- **检查启动配置**:检查启动配置,确保它指向正确的程序入口点。
- **检查中断和异常处理**:检查中断和异常处理代码,确保它们能够正确处理各种情况。
- **检查RTOS调度**:检查RTOS的调度策略和任务优先级设置,确保它们正确配置。

希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便进一步分析。
举报

更多回帖

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