tag 标签: 校验

相关博文
  • 热度 21
    2015-8-5 12:59
    1748 次阅读|
    0 个评论
      ;modbus CRC16 TEST_CRC16:  ;R0,R3,R4,DPH,DPL,A,PSW.   R0为起始单元   R4为数据长度,结果在DPH,DPL中   ;① 装入一个16位寄存器,所有数位均为1。        MOV DPH,#0FFH              MOV DPL,#0FFH CRCJ1:       MOV R3,#8              MOV A,@R1              XRL A,DPL        ;② 该16位寄存器的低位字节与开始8位字节进行"异或"运算。运算结果放入这个16 位寄存器。        MOV DPL,A  CRCJ2:       MOV A,DPH       CLR C       RRC A       MOV DPH,A       MOV A,DPL       RRC A       MOV DPL,A ;③ 把这个16寄存器向右移一位。        JNC  CRCJ3 ;④ 若向右(标记位)移出的数位是1,则用多项式1010000000000001 和这个寄存器进行"异或"运算;若向右移出的数位是0,则返回③。   ;--------------       MOV A,#01H       XRL A,DPL       MOV DPL,A       MOV A,#0A0H       XRL A,DPH       MOV DPH,A CRCJ3: ;⑤ 重复③和④,直至移出8位。        DJNZ R3,CRCJ2 ;⑥ 另外8位与该十六位寄存器进行"异或"运算。        INC R1 ;⑦ 重复③~⑥,直至该报文所有字节均与16位寄存器进行"异或"运算,并移位8次。        DJNZ R4,CRCJ1 CRC_END: ;⑧ 这个16位寄存器的内容即2字节CRC错误校验,被加到报文的最高有效位。  ;MOV 70H,DPL   ;发送与返回的CRC16代码,低字节在前,高字节在后 ;MOV 71H,DPH RET  
  • 热度 31
    2014-10-19 10:55
    1499 次阅读|
    1 个评论
    汽车电子的容错处理 随着新能源汽车的逐步上路,车上EMC状况将是一个巨大挑战。软硬件方面都应采取一定的措施提高系统容错性能。下面是笔者的一些经验整理,希望能起到抛砖引玉之作用。   在实验室验证原型的时候,通常地我们只关注功能。当从原型转向产品时,我们需要更多地考虑稳定性——在极端情况下,我们可以允许车不动,但是绝不允许车乱动。 容错的定义 如果一个系统在存在故障的情况下仍然能够正确运行,那么这个系统就是容错的。 这里“正确运行”,最低要求就是系统仍然可控。当然,在某些情况下可能会导致系统性能下降——有时候这并不算是错误,而是事前控制的一种策略。   故障基本类型与检测 1)            永久性故障: 比如 MOS 管被击穿、继电器烧结等物理损坏。这一类故障通常可以在系统启动过程中被检测出来,而一旦在常规过程中发生就往往会造成系统严重错误甚至事故。检测方法常见为增加硬件回检功能,便于处理器尽早地做出动作抑制错误。 2)            间歇性故障: 常见的线束接触不良导致在振动过程中信号频繁跳变。这一类故障可以说是最为令人烦恼的。大多数情况下系统不应该随着间歇性故障频繁地切换状态,那么这就要求检测机制具有“消抖”特性。 3)            瞬时故障: 比如 ADC 在继电器动作期间采样,电源的波动导致采样偏移。这一类故障通常可以通过添加“限幅”环节进行检测。并且在大多数系统中,由于系统固有的时间常数较大,这些瞬时故障造成的瞬时错误尚未充分体现出来就已经被抑制。   容错的基本思想 1)          容错技术的实现,最基本的就是“冗余思想”,包括: 2)          硬件冗余,例如卫星上的双机备份系统。 3)          时间冗余,“消抖”处理也可以认为是一种时间冗余措施。 4)          信息冗余,例如将系统状态变量保存到多个不同的 RAM 地址,并在使用前先进行数据对比、筛选。 5)          程序冗余,例如在 ROM 中放置一套备用程序。当引导模块检测到主程序异常时就尝试切换至备用程序。   容错技术 1)          数据校验: 如同 RAM 存储器中常见的奇偶检验、 ECC 校验技术一样,我们也可以在软件中对关键变量生成相应的校验码(甚至是纠错码)。每次对关键变量的访问都需要处理校验码,虽然增加了 CPU 负担,但是可以获得很好的系统稳定性。 2)          多样本比较:通过不同的通道(途径)采集同一数据,并比较这些数据的一致性。 3)          多版本仲裁:通过不同的算法或者模块去计算同一输出,并比较这些输出的一致性。 4)          过程监控:适用于那些具有相对固定控制流的系统。该方法类似于“令牌”法则,前一个控制节点向后传递“令牌”,后一个控制节点收到正确的“令牌”后才能执行动作。 5)          周期自检:也就是系统周期性的停机挂起,然后检查错误,并恢复运行。 6)          错误捕获:通过硬件或者软件,在那些看似不可能出现错误的地方(逻辑不可达到)放置监控模块。以便当这些错误发生时可以向上报告异常,并尝试恢复正常的时序。   =========================== NO MORE =================================  
相关资源