静电放电固件和软件设计原则 静电放电固件和软件设计原则 在对付静电放电方面,除了众所周知的硬件方法以外,固件和软件也起着重要的作用。 虽然固件设计不能防止系统中器件的损坏,,但是能够有效地避免一些非永久性的 损坏。通过适当写入的固件,不可恢复的设备故障(死锁)通常可以避免,可恢复的故 障也可以减少10倍。 如同硬件上的静电放电措施一样,抗静电放电的固件也是有代价的。通常,程序会 更大一些,这意味着需要更长的编程时间和存储单元。权衡得失时,要将这种代价与单 纯依靠硬件解决静电放电问题时的成本做对比。在许多微处理器的应用中,固件措施的 成本要比硬件低。 在编写静电放电抗扰性强的固件时一定要树立的的一个观念是“不确定性”。也就是 ,一定不能认为端口、寄存器等的状态是一定的。例如,当使用一个索引寄存器时,应 该问一下,如果这个索引发生错误时,会发生什么问题。如果仅是仅发生一些暂时的或 无关紧要的问题,如发光二极管闪烁,则不需要什么特殊的处理。如果会发生很严重的 问题,例如系统发生死锁,则必须采取措施来避免问题的发生。 固件(软件)静电放电措施可以分为两类: * 刷新 * 检验和重新写入 下面从概念上讨论每种措施,并给出一些例子。由于不可能预见到所有的特殊情况 ,要使固件能够抵抗静电放电,设计人员必须对整个系统有一个全面的了解。虽然下面 的讨论主要针对固件,但是其中的许多概念对于软件设计也是适用的。 刷新: 进行刷新时,程序员不关心过去的情况,而仅是用确定的数据来保证今后的状态。 例如,在从8409的端口读取数据时,一定要先向端口写入数据。即使这个端口从上次更 新以后一直没有改写,也要进行这个步骤。绝不要认为端口上还保留着上次写入的数据 。刷新时需要考虑的其它因素包括: A) 按照一定的时间间隔打开中断使能端(在8049中是RETR,在8051中……