- 主题:用freertos做了个系统
RTOS就是实时的,你这情况只能说是什么都学到。
实时性不是指中断任务都要马上执行,并且执行得越快越实时。
而是不同的应用对实时性有不同的要求,实时操作系统只需要满足具体应用的实时性指标。一般的协议实时性要求是小于1ms,意思是只要事件中断触发之后1ms内响应就被认为是实时响应,1ns响应和100us响应是没区别的。
比如说工业5G物联网要求的通信延迟≤1ms,同一应用场景下的PROFINET IRT工业实时以太网是≤250us,所以前者用的RTOS要求1000systicks,后者需要4000systicks的RTOS。
串口打印这种应用,本身没有实时性指标,讨论实时性就是多余的。
【 在 numgao 的大作中提到: 】
: 发现还不如用裸机做开发呢
: 用了实时系统但结果并不实时
: 也不知道是那里出了问题
: ...................
--
FROM 223.104.82.*
这说法有问题,xsemaphoregive是立即调度,但xsemaphoretake不一定是,而且大部分应用都不是立即调度。
比如串口通信中信号量的timeout绝大多数情况是portmaxdelay,这就一定是在tick调度中被唤醒的。
所有的数据通信函数默认都是阻塞函数,阻塞链表进出肯定在tick任务调度里完成的。
【 在 dormouseBHU 的大作中提到: 】
:
: 这里你理解的还是错的。业务处理是否实时与它是否放到中断里是没关系的。正常情况下,业务处理都是放到线程中的。中断只是触发线程调度的一种方式。
:
: 以串口中断为例,串口中断里通过信号量等方式将对应的线程状态转换成可执行态。中断结束后会触发一次线程调度。只要串口线程优先级够高就一定会被立刻调度为运行态。这个线程调度是和tick无关的。
:
#发自zSMTH@LYA-AL00
--
FROM 223.104.82.*
xsemaphoretake怎么可能是马上执行的?等待信号量的时候是block状态,任务就会移到delaylist里面,delaylist就是按tick来延时的,pdtrue和pdfalse的转换怎么可能是即时的?
【 在 beanspower 的大作中提到: 】
:
: 【 在 Oriphia 的大作中提到: 】
: : 这说法有问题,xsemaphoregive是立即调度,但xsemaphoretake不一定是,而且大部分应用都不是立即调度。
: : 比如串口通信中信号量的timeout绝大多数情况是portmaxdelay,这就一定是在tick调度中被唤醒的。
: : 所有的数据通信函数默认都是阻塞函数,阻塞链表进出肯定在tick任务调度里完成的。
#发自zSMTH@LYA-AL00
--
FROM 223.104.82.*