跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YT SDK
  4. LIN STACK的lin_timeout_handle周期问题

LIN STACK的lin_timeout_handle周期问题

已定时 已固定 已锁定 已移动 YT SDK
23 帖子 3 发布者 1.9k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • limanjiangL 离线
    limanjiangL 离线
    limanjiang YunTu
    回复了yifeng_xie 最后由 编辑
    #14

    yifeng_xie 你当前的计数器只要在一段时间内监测到的IDLE状态总数大于(非IDLE状态+10)就会进休眠了,有一定的随机性,触发的概率看起来也很高;重新设计一下计数器的逻辑有用没?LIN_STACK 接口因为有ID过滤所以不满足很正常,底层接口不区分ID,但是如果周期性读取也有一定随机性,但是我觉得如果读取间隔小,次数多(比如原来10ms,CNT10,最小监测总线空闲周期是100ms; 如果在同样的最小有效监测周期100ms,改成1ms 监测一次,监测100次(次数越多越准)都是IDLE,只要有一次不是就重新计数,条件会更严苛一些)可以在一定程度上保证准确度。

    yifeng_xieY 1 条回复 最后回复
    0
    • yifeng_xieY 离线
      yifeng_xieY 离线
      yifeng_xie
      回复了limanjiang 最后由 编辑
      #15

      limanjiang 我试过,一次加10或者20,应用层去判断计数器是否为0,也没用的。debounce策略最终还是需要底层能支撑起来。
      577c7709-51e7-4979-ad93-9fb2c8537976-image.png
      这个busActive的设计想法跟我说的一样嘛?如果一样的话,LIN STACK协议栈是有问题的。

      1 条回复 最后回复
      0
      • FrankieF 离线
        FrankieF 离线
        Frankie YunTu
        编写于 最后由 编辑
        #16

        这个是lin stack的bug,下个版本修复

        yifeng_xieY 2 条回复 最后回复
        0
        • yifeng_xieY 离线
          yifeng_xieY 离线
          yifeng_xie
          回复了Frankie 最后由 编辑
          #17

          Frankie 在 LIN STACK的lin_timeout_handle周期问题 中说:

          这个是lin stack的bug,下个版本修复

          好的。
          另外曾工,我看了下我这样改也有bug。如果busActive=true代表总线busy,那么只增加我改的那几句还不够的,因为l_lfx_tx/l_lfx_rx这两个函数不是所有条件都会设置true。实际进入这个case下,总线已经busy了。

          1 条回复 最后回复
          0
          • yifeng_xieY 离线
            yifeng_xieY 离线
            yifeng_xie
            回复了Frankie 最后由 编辑
            #18

            Frankie 在 LIN STACK的lin_timeout_handle周期问题 中说:

            这个是lin stack的bug,下个版本修复

            曾工,现在有针对这个bug的临时方案吗?我们可以先手动改一下

            1 条回复 最后回复
            0
            • FrankieF 离线
              FrankieF 离线
              Frankie YunTu
              编写于 最后由 Frankie 编辑
              #19

              关于bus active的定义:
              image.png。修改的方法就是你 #15 楼发的帖子这么改

              yifeng_xieY 2 条回复 最后回复
              0
              • yifeng_xieY 离线
                yifeng_xieY 离线
                yifeng_xie
                回复了Frankie 最后由 编辑
                #20

                Frankie 在 LIN STACK的lin_timeout_handle周期问题 中说:

                关于bus active的定义:
                image.png。修改的方法就是你 #15 楼发的帖子这么改

                好的,感谢回复

                1 条回复 最后回复
                0
                • yifeng_xieY 离线
                  yifeng_xieY 离线
                  yifeng_xie
                  回复了Frankie 最后由 编辑
                  #21

                  Frankie 在 LIN STACK的lin_timeout_handle周期问题 中说:

                  关于bus active的定义:
                  image.png。修改的方法就是你 #15 楼发的帖子这么改

                  曾工,还有一个bug,在l_lfx_tx 和 l_lfx_rx中设置state->frameStatus.busActive=l_true;的时机也有问题。当前,l_lfx_tx 和 l_lfx_rx中驱动返回错误,是不会调用state->frameStatus.busActive = l_true;的。

                  当进入if(linState->currentEventId==LIN_PID_OK)后,应该就设置state->frameStatus.busActive = l_true;了。此时,一次完整且有效的报文开始事件已经产生,则busActive=true。驱动调度出错也不能设置busActive = false。
                  所以,代码应该改成下图这样,l_lfx_tx 和 l_lfx_rx中没必要设置state->frameStatus.busActive = l_true;了,只需要记录故障。
                  f8774823-898e-42d0-a20a-ca115e1ac792-image.png

                  yifeng_xieY 1 条回复 最后回复
                  0
                  • FrankieF 离线
                    FrankieF 离线
                    Frankie YunTu
                    编写于 最后由 编辑
                    #22

                    yifeng_xie 是的。

                    1 条回复 最后回复
                    0
                    • yifeng_xieY 离线
                      yifeng_xieY 离线
                      yifeng_xie
                      回复了yifeng_xie 最后由 编辑
                      #23

                      yifeng_xie 在 LIN STACK的lin_timeout_handle周期问题 中说:

                      Frankie 在 LIN STACK的lin_timeout_handle周期问题 中说:

                      关于bus active的定义:
                      image.png。修改的方法就是你 #15 楼发的帖子这么改

                      曾工,还有一个bug,在l_lfx_tx 和 l_lfx_rx中设置state->frameStatus.busActive=l_true;的时机也有问题。当前,l_lfx_tx 和 l_lfx_rx中驱动返回错误,是不会调用state->frameStatus.busActive = l_true;的。

                      当进入if(linState->currentEventId==LIN_PID_OK)后,应该就设置state->frameStatus.busActive = l_true;了。此时,一次完整且有效的报文开始事件已经产生,则busActive=true。驱动调度出错也不能设置busActive = false。
                      所以,代码应该改成下图这样,l_lfx_tx 和 l_lfx_rx中没必要设置state->frameStatus.busActive = l_true;了,只需要记录故障。
                      f8774823-898e-42d0-a20a-ca115e1ac792-image.png

                      补充,l_lfx_tx 和 l_lfx_rx中设置state->frameStatus.busActive = l_true还是需要的,我图上是解决从机问题,主机调度表还是需要走l_lfx_tx 和 l_lfx_rx中的state->frameStatus.busActive = l_true。

                      1 条回复 最后回复
                      1

                    • 云途开发生态介绍

                      快速上手云途开发生态

                    • 云途论坛规则/Yuntu Forum Rules

                      发帖前请查看

                    • YT CONFIG TOOL调查问卷

                      帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

                    • can
                      22
                      demo
                      20
                      uds
                      13
                      lin stack
                      11
                      md14
                      6
                      fbl
                      5
                      yt-link
                      5
                      adc模块
                      4
                      Online Users
                      • 登录

                      • 登录或注册以进行搜索。
                      • 第一个帖子
                        最后一个帖子
                      0
                      • 版块
                      • 最新
                      • 标签
                      • 热门