- 主题:用freertos做了个系统
【 在 Oriphia 的大作中提到: 】
: xsemaphoretake怎么可能是马上执行的?等待信号量的时候是block状态,任务就会移到delaylist里面,delaylist就是按tick来延时的,pdtrue和pdfalse的转换怎么可能是即时的?
:
: #发自zSMTH@LYA-AL00
看明白了,你是真不懂....
semtake(..., forever)就会放到pending队列里了。
串口中断服务程序执行一个semGive,然后系统中断退出的时候再执行个reschedule,任务优先级最高的话,立马就会被执行,和tick没有一点关系。这也是rtos的一个核心要义,而不是啥都靠系统tick来做状态转换和调度。
嵌入式/rtos的面试内容可能就包括这个问题:线程/任务调度的时机都有哪些?
看样子这个帖子里没1,2个人能完全回答正确。
--
修改:beanspower FROM 123.123.253.*
FROM 123.123.253.*
你的MCU是哪一个?芯片有串口的硬件模块吗?还是用MCU来模拟串口的?
【 在 numgao 的大作中提到: 】
: 发现还不如用裸机做开发呢
: 用了实时系统但结果并不实时
: 也不知道是那里出了问题
: ...................
--
FROM 121.35.180.*
抢占式实时系统通过一些极端手段可以裁剪到根本就没有 tick 这个概念。。。。
等待信号量这个操作也可以完全与 delaylist 无关。
【 在 Oriphia 的大作中提到: 】
: xsemaphoretake怎么可能是马上执行的?等待信号量的时候是block状态,任务就会移到delaylist里面,delaylist就是按tick来延时的,pdtrue和pdfalse的转换怎么可能是即时的?
:
: #发自zSMTH@LYA-AL00
--
FROM 223.159.60.*
退出中断时会rtos会检查pending状态的任务,满足条件的立即就绪,而不是只会回到进中断前的任务
tick只对sleep有效,因为这个是在tick中断中处理任务状态
除非通讯对时序要求非常高,不然完全不用考虑rtos带来的时差
--
FROM 119.123.63.*
【 在 numgao 的大作中提到: 】
: 发现还不如用裸机做开发呢
: 用了实时系统但结果并不实时
: 也不知道是那里出了问题
系统最大用途是解耦不是实时. 要实时得用系统的思考写裸机程序. 能自己写出对应的调度框架算过关. 后面无非加些功能. 内存管理外设读写网络报文解析协议时序实现这些机理搞透, 上层协议选择看机缘, 一般结合专业与业务, AI时代大有可为. FPGA通讯接口 与 LINUX 设备树包括PCB与结构设计制样现在都很方便, 各种开源更是给力, 产业链配套齐全, 就看找不找的准需求了.
--
FROM 221.232.181.*