zoukankan      html  css  js  c++  java
  • 网络重连问题BUG的解决

      在之前曾对移植LWIIP协议进行网络掉线检测功能的添加,当时测试通过并且检测正常,参考添加网络掉线功能的方法见http://www.stmcu.org/module/forum/thread-586493-1-1.html中的6#评论。

    最近进行总体功能测试时却发现网络掉线检测模块运行异常,系统滴答时钟还在运行,检测功能工作异常的情况,且放在主控制程序之前则掉线可以检测到,插上之后则检测不到,通过仿真发现语句卡死在延时函数中,通过JLINK仿真发现延时语句中有延时的时间值,但检测时间值却一直不更新,且该更新的标志位一直为0,正常情况下,进入该函数,首先延时标志位会置位,然后滴答时钟中断函数中通过检测该标志位对延时时间进行更新,通过比较更新值与延时时间值从而完成基于滴答时钟的精确延时。  ·  

    通过查找延时时间定位在网络读取延时语句中,网络延时语句实在主控程序中运行,当进入延时时,周期指令中的循环中断中也调用延时语句,但是延时语句中包含全局变量,时不可重入的,当中断进入后调用延时语句延时完成后将标志位清零,出中断后,原延时指令便因延时标志位被清零则不能正常工作。造成网络掉线检测等控制程序不工作的现象。这也是为什么检测放在控制之前,可以掉线检测,插上却也会造成功能错误的原因,因为在控制指令之前循环中断指令还未运行。

                                          

  • 相关阅读:
    用Python证明“真理再前进一步就是谬误”
    senior developer in Hongkong
    Emacs 维基百科,自由的百科全书
    深入C(和C++)
    图灵等价和图灵完备
    2012年中国大陆和香港的工资收入水平市场调查报告
    图灵完备
    linux中vi进行字符替换_井底之蛙_百度空间
    they're hiring
    Linux下游戏大作赏析(三)
  • 原文地址:https://www.cnblogs.com/my-trees/p/8939758.html
Copyright © 2011-2022 走看看