- 主题:有谁介绍一下RTOS编程的精髓
所以就会导致有时消息等半天没到。
不知道那些硬实时系统,是不是也有消息机制的。
【 在 DraculaW 的大作中提到: 】
:
: 你多任务又要实时 不就得软硬中断加优先级加消息机制么
--
FROM 120.235.170.*
【 在 heyuanlie 的大作中提到: 】
: 所以就会导致有时消息等半天没到。
: 不知道那些硬实时系统,是不是也有消息机制的。
:
你是说的并行多线程处理器吗?前段时间版上有提过,但是实际项目没用过,看介绍没有延时,看着满好玩的;
这是感芯科技产品的介绍:
并行多线程是一种全新的CPU工作模式与软件开发模式,不同于单线程裸机编程,只能顺序执行,也不同于操作系统通过切换造成的多线程执行,并行多线程的各个线程是一直在并行运行的,彼此互不打扰,没有优先级的概念,也没有切换的随机性。
--
FROM 218.68.102.*
我理解是并行要么用硬件实现,像fpga、gpu这种。
否则,在串行CPU上软件实现的并行多线程,其实不是并行。
其实实时系统用并行还是串行实现不是重点,能满足响应时间要求就行。
【 在 skl737208 的大作中提到: 】
: 你是说的并行多线程处理器吗?前段时间版上有提过,但是实际项目没用过,看介绍没有延时,看着满好玩的;
: 这是感芯科技产品的介绍:
: 并行多线程是一种全新的CPU工作模式与软件开发模式,不同于单线程裸机编程,只能顺序执行,也不同于操作系统通过切换造成的多线程执行,并行多线程的各个线程是一直在并行运行的,彼此互不打扰,没有优先级的概念,也没有切换的随机性。
--
FROM 120.235.170.*
【 在 heyuanlie 的大作中提到: 】
: 我理解是并行要么用硬件实现,像fpga、gpu这种。
: 否则,在串行CPU上软件实现的并行多线程,其实不是并行。
: 其实实时系统用并行还是串行实现不是重点,能满足响应时间要求就行。
: ........
1、否则,在串行CPU上软件实现的并行多线程,其实不是并行。
是的,实际就是任务的不断切换,我记得M3内核原理这地方有图有真相有详解讲的好,这地方主要有两个调度算法,任务的调度算法和任务优先级的调度算法,不同操作系统选择的调度方法不一,如时间优先,但是切换的过频繁,效率低,我记得这地方涉及到好多算法,总之是各有利弊,
2、其实实时系统用并行还是串行实现不是重点,能满足响应时间要求就行。
我理解真正实现并行的话就多核了,FPGA没接触过,还有上面提到的那个芯片,介绍说没有延时的话,又不是多核,不理解硬件咋实现。不是串行能否满足响应时间要求就行,前面几楼有提过,讲的挺好
实际项目中可能既要扣成本,又要性能,所以往往比较难以选型,也是对具体项目而言,如果是在普通消费类的,这类产品走量,如果能省5毛,那一百万的量,省的钱也不少,如果是工业设备,一台几万到几十万,量小但是价格大,但是对稳定性要求极高,芯片成本一般影响不大,我记得当时做过一个工业网卡,卖价几千,量有几万吧,配套大型设备卖的,
--
修改:skl737208 FROM 218.68.102.*
FROM 218.68.102.*
确保在要求的周期内 程序被调用 这就是核心 咋实现 那就是具体情况具体分析了
【 在 Qlala 的大作中提到: 】
: 1 如果用了RTOS,是不是软件自动就RT了,剩下只需要不要把单个操作搞得太耗时?
: 2 Free RTOS /Vx /RTLinux 这几种分别适合用在什么场景
: 3 RT Linux的开源实现 主流是哪个 preempt-rt?可用度如何,实时性如何
: --
:
发自「今日水木 on iPhone 11 Pro Max」
--
FROM 124.64.237.*
多核并行效果如何
双核四核arm 貌似很普及了
【 在 heyuanlie 的大作中提到: 】
: 我理解是并行要么用硬件实现,像fpga、gpu这种。
: 否则,在串行CPU上软件实现的并行多线程,其实不是并行。
: 其实实时系统用并行还是串行实现不是重点,能满足响应时间要求就行。
: ...................
--
FROM 117.136.0.*
这个不清楚,我不是搞体系结构的。
可能要跟具体任务结合起来吧?
要是任务本身能分割成并行的跟核数差不多的块,那就行。
不过我感觉,要是跑在操作系统上,核都被操作系统管理起来,就不可控了很难并行。
另外像神经网络、3d绘制渲染这种特别适合并行但任务又非常多(比核多很多)的应用,多核应该也不好使。
【 在 Qlala 的大作中提到: 】
: 多核并行效果如何
: 双核四核arm 貌似很普及了
--
FROM 120.235.189.*
要看是什么ARM核,如果是M核和R核的多核,可以在RTOS里指定线程使用哪个核心,你一个程序又不是每个任务都要求高实时性,把要求高实时的任务定高优先级,合理分配到其中1个核上跑就行了。
四核以上的MCU一般用的是A核,A核是超标量处理器架构了,包括了指令多发射,乱序执行,分支预测和CACHE的命中率问题,架构上就不是实时的。CPU单元是在CACHE里随机抽几条指令来执行,但指令用到的数据又不一定在CACHE里,一但D-CACHE没命中,主内存又跑在异步上,那数据就可能要等上二十几个周期,所以A核跑实时程序要看1% LOW和0.1% LOW。但还是那句话,力大砖飞,只要A核和内存的频率够高,就算CACHE没命中,等上50个周期,0.1% LOW照样能在100us里跑出来,那也是实时的。
ARM为了处理低频MCU力不够大的问题,设计了TCM,可以把实时性要求高的任务放到TCM里跑,其它低实时性的放CACHE里跑,或者大小核架构,一个A核带一个M核。
你要是在13代酷睿上跑linux,8核5GHz,根本不用考虑实时性,怎么跑都是实性的。
【 在 Qlala 的大作中提到: 】
: 多核并行效果如何
: 双核四核arm 貌似很普及了
--
FROM 14.223.163.*
嗯 力大砖飞
【 在 Oriphia 的大作中提到: 】
: 要看是什么ARM核,如果是M核和R核的多核,可以在RTOS里指定线程使用哪个核心,你一个程序又不是每个任务都要求高实时性,把要求高实时的任务定高优先级,合理分配到其中1个核上跑就行了。
: 四核以上的MCU一般用的是A核,A核是超标量处理器架构了,包括了指令多发射,乱序执行,分支预测和CACHE的命中率问题,架构上就不是实时的。CPU单元是在CACHE里随机抽几条指令来执行,但指令用到的数据又不一定在CACHE里,一但D-CACHE没命中,主内存又跑在异步上,那数据就可能要等上二十几个周期,所以A核跑实时程序要看1% LOW和0.1% LOW。但还是那句话,力大砖飞,只要A核和内存的频率够高,就算CACHE没命中,等上50个周期,0.1% LOW照样能在100us里跑出来,那也是实时的。
: ARM为了处理低频MCU力不够大的问题,设计了TCM,可以把实时性要求高的任务放到TCM里跑,其它低实时性的放CACHE里跑,或者大小核架构,一个A核带一个M核。
: ...................
--
FROM 223.104.14.*
实时的概念不是快,而是在截止时间之前能完成,更类似确定性。rtos要是小事儿随便搞搞,要是系统规模大的话,对资源、优先级、任务划分、任务同步和互斥、中断优先级的规划和嵌套等等都需要考虑。
--
FROM 154.214.4.*