乐鑫技术交流
直播中

刘继牛

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

系统在system_restart()后挂起的原因?

我在执行 system_restart();
大多数情况下,系统可以正常启动,但是在重新启动后,大约10次中有1或2次会冻结。
在终端上,我看到以下内容:
2 Minutes have passed, time to restart system out of precaution  <-- my own code
ets Jan  8 2013,rst cause:2, boot mode:(3,6)
ets Jan  8 2013,rst cause:4, boot mode:(3,6)
WDT 复位


然后什么也没发生,我必须重新为我的硬件供电。
请帮忙!

背景:
- 出于测试目的,我设置了一个 2 分钟的计时器来重新启动系统。在现场,这可能需要几个小时。
- 我正在使用为OTA准备的软件。我在现场使用 boot_v1.5.bin 作为引导加载程序。为了测试,我也尝试了 boot_v1.4(b1).bin 没有区别。
- 我正在使用 ESP-12e 模块,我在 GPIO0 上有一个 15k 上拉(当然有一个用于编程的按钮接地),GPIO2 上有 15k 上拉,GPIO15 上拉 15k,复位时 15k 上拉,CH_PD上 15k 上拉,100n 接地(作为上电复位功能)。在所有这些引脚上,除了描述之外,没有其他连接。
- 对于电源,我使用一个 LDO,它可以提供 800mA 的电流,并与两个 100n 和一个 2u2 电容器去耦。
              

回帖(1)

楼斌

2024-7-12 18:03:53
根据您提供的信息,系统在执行system_restart()后挂起的原因可能有以下几点:

1. **硬件问题**:可能是由于硬件故障或不稳定导致的。例如,电源供应不稳定、内存问题或CPU过热等。

2. **软件问题**:可能是由于系统软件或驱动程序存在缺陷或不兼容导致的。这可能包括操作系统、设备驱动程序或其他底层软件。

3. **WDT(看门狗定时器)复位**:从您提供的信息来看,系统可能在某些情况下触发了看门狗定时器,导致系统复位。这可能是由于系统在执行某些操作时出现死锁或长时间未响应导致的。

4. **定时器设置问题**:您提到设置了一个2分钟的计时器来重新启动系统。如果计时器设置不正确或与其他系统任务冲突,可能会导致系统挂起。

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

1. **检查硬件**:检查所有硬件组件,确保它们正常工作且没有损坏。特别是检查电源供应、内存和CPU。

2. **更新软件**:确保您的系统软件、驱动程序和其他底层软件是最新版本,以修复可能存在的缺陷或兼容性问题。

3. **调整WDT设置**:检查看门狗定时器的设置,确保它不会在正常操作期间触发。您可能需要调整定时器的超时时间或禁用它以进行进一步的调试。

4. **优化计时器设置**:重新评估您的2分钟计时器设置,确保它不会与其他系统任务冲突。您可能需要调整计时器的触发条件或时间间隔。

5. **增加日志记录**:在您的代码中增加更多的日志记录,以便在系统挂起时能够更容易地确定问题所在。

6. **逐步调试**:在系统挂起之前,逐步执行您的代码,检查每个步骤是否正常工作。这有助于您找到可能导致系统挂起的具体原因。

通过以上方法,您应该能够找到导致系统挂起的原因,并采取相应的措施解决问题。
举报

更多回帖

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