从硬件角度,我们主要看DDR、flash以及主控A5D3在不同环境下的工作电压
上电过程测试
reboot过程
应用程序喂狗情况下,如系统复位或者升级复位时,停止喂狗到重新喂狗,中间间隔时间为35.4s,非常临近超时时间。
因只靠应用程序喂狗的情况下,每次复位或升级都会触发看门狗复位,所以在开机启动脚本里面加了“喂狗”,电平逻辑为“拉高再拉低”,但因设置gpio模式为输出时,默认电平为低,所以实际整个逻辑是“拉低;拉高;拉低”,中间存在上升沿,符合喂狗标准
复位时,从停止喂狗到脚本喂狗,时间为25s左右,在脚本喂狗生效的情况下不会触发看门狗复位机制,脚本喂狗不生效的情况下,90%以上几率会触发看门狗复位机制
断电过程测试
- 断电前
对应X1之前,超级电容电压约4.8V,flash工作电压约3.3V,DDR工作电压约1.7V。满足正常工作电压范围
- 断电后
对应X1~X2过程,超级电容电压缓慢下降到约为4.2V,此时电压还满足A5/Flash/DDR正常工作。
- 稳定后
超级电容电压稳定在4.2V,DDR电压直线掉为0,A5/Flash电压直线掉落到1V,以后成坡度下降,直至0V。这里的掉落是应用程序在检测掉电2S后,会主动断开超级电容的供电。X1~X2的时间差2.3S,考虑线程执行掉电检测的间隔,基本匹配。
- 超级电容电压
电压成坡度下降,直至约为2.3V停止。
- A5/Flash电压
电压成坡度下降,直至1.8V,低于正常工作电压后,直线下降到0V。
- DDR电压
电压成坡度下降,直至A5停止工作后,直线下降到0V。
- 看门狗喂狗信号
在喂狗信号未输出时,说明应用程序已经停止运行,(A5D3停止工作),此时电压如
- 超级电容的工作电压:2.8V
- DDR的工作电压:1.6V 低于正常工作范围
- NandFlash的工作电压:2.5V 低于正常工作电压范围
- A5的工作电压:2.5V
结论
超级电容充满电压为5v,在断开24v供电后,由超级电容为设备供电;
超级电容供电过程中,电压低于3.3v时,flash和A5工作电压低于正常工作电压,超级电容电压低于3.7v时,DDR工作电压低于正常工作电压,在这个过程中仍然可能会操作Flash,可能会出现数据存储错乱。
所以,在断开24V电源时,需要检测超级电容电量,在决定是否需要超级电容供电,在供电过程停止对flash操作,然后再断开超级电容。如果电量不足,则直接断开超级电容供电,防止DDR/Flash在不正常工作电压下工作。