嵌入式技术论坛
直播中

张宇

8年用户 1755经验值
私信 关注
[问答]

时钟管理中的rt_tick溢出之后对系统运行有何影响?

rt_tick是当前系统的节拍值,看到程序中rt_tick是直接累加的,加到0xFFFFFFFF之后就再加1就会变为0,然后再重新开始累加,这样对系统运行没有影响嘛?

回帖(6)

杨福林

2022-10-24 14:36:22
楼主可以算算这个 32 位的值溢出需要多少时间
举报

张宇

2022-10-24 14:36:40
换算成十进制也就是 4,294,967,295‬;
举报

张宇

2022-10-24 14:36:45
按照10ms一个tick累加,约1.3年就溢出了。
举报

杨福林

2022-10-24 14:36:58
已经考虑到了回绕的机制,所以没什么影响。如果真的有影响,会涉及到:

定时器的最大范围只有UINT32_MAX/2这样大;
想通过os tick值来当系统运行时间长度,会有回绕的问题。
举报

张宇

2022-10-24 14:37:06
所以应用程序中为了确保时间准确性还是用定时器,可是内核中有很多地方如ipc.c中,都有通过rt_tick_get来获取时间差,不知道在回绕的时候有没有问题呢,以下面代码为例,出现回绕时,timeout就为0了。

/* if it's not waiting forever and then re-calculate timeout tick */
        if (timeout > 0)
        {
            tick_delta = rt_tick_get() - tick_delta;
            timeout -= tick_delta;
            if (timeout < 0)
                timeout = 0;
        }
举报

杨福林

2022-10-24 14:37:16
你不用管内核,内核里的都是考虑过的。没有所以
举报

更多回帖

发帖
×
20
完善资料,
赚取积分