PA1688设备升级一次软件大约要花一分钟时间,这期间如果供电中断,设备就不工作了。为了防止出现这样的硬件故障,我们设计了安全模式恢复。软件被分成2个部分。PA1688总是从安全模式部分的软件启动。如果在启动过程中检测到*键就停留在安全模式中,否则的话进入软件正常运行部分。安全模式部分的软件很小,因此更新得比较快,在更新过程中遭遇断电的可能性也就比较小。更重要的是,安全模式软件被设计成为最终用户不需要再次更新。这样当最终用户在使用和更新正常软件过程中如果碰到问题,他们总是可以通过进入安全模式更新而重新回到以前的正确版本上,我们把这个称为安全模式恢复。
一旦安全模式被启用,我们发现它对软件开发工作尤其有用。因为安全模式的存在,我们再也不用担心错误编写的代码会毁了整个系统了。
由于8051 64k字节代码大小限制,正常运行部分的软件因为比较大而需要做代码页面切换,这样又会带来额外的代码开销。为减小总体代码大小,我们把例如出厂测试这种特殊软件也放在了不需要做代码页面切换的安全模式软件部分。
所有PA1688设备在进入安全模式后,IP地址都是192.168.1.100,MAC地址都是00-09-45-00-00-00。有时候短暂断电不会让SDRAM数据丢失,用户可能需要按住*键重新加电启动2次才会进入缺省的IP和MAC地址。所有PA1688的网关上面都有一个特殊的安全模式键,按住这个键加电进入安全模式。而按住网关外接普通电话上的*键不会起作用。
AR1688安全模式的缺省IP是192.168.1.200,缺省MAC是00-18-1f-00-00-00。用户只用按住*键加电启动一次就能进入缺省地址。慢慢的我们觉得按住*键加电起动比较愚蠢。因为我们主要做的都是网络电话,现成的有个摘挂机的手柄。这样后来新设计的AR1688网络电话就改为了如果启动的时候手柄是摘机状态,就停留在安全模式中,如果是挂机状态,就接着进入正常运行软件部分。AR168M网络语音模块有个跳线区分是否进入安全模式。这个跳线跟网络电话机的摘挂机用的同一个GPIO。因为AR1688的Z80控制器也需要做代码页面切换,我们就仍然把出厂测试等代码跟安全模式放在一起,减少代码页面切换带来的额外开销。
PA6488安全模式的缺省IP和MAC仍然是192.168.1.200和00-18-1f-00-00-00。用摘挂机来判断是否进入安全模式也保留了下来,如果开机的时候是摘机状态就留在安全模式中。PA648C模拟视频压缩模块没有摘挂机,我们把摘挂机用的GPIO同样设计成了一个跳线。由于我们终于摆脱了代码页面切换,出厂测试的代码就不再放到安全模式部分了。事实上,为了充分减小安全模式的代码,连LCD显示都从安全模式代码中分了出来。
|