keil 的RTX稳定性到底怎么样

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keil 的RTX稳定性到底怎么样相关的知识,希望对你有一定的参考价值。

RTX(Real Time eXecutive)是ARM公司针对ARM7,ARM9,cortex-m内核推出的一款嵌入式实时操作系统。 该系统占用内存很小,切换速度很快,特别适合一些内存小的芯片,像只有32KB的flash,8KB的RAM的cortex-m0都可以使用(开4,5个任务都OK的,不像ucos,有点吃力).而且该系统是开源,免版税的.
我曾经用过在STM32的某个项目上,非常的稳定(比我移植过的uc/os、FreeRTOS都要稳定。原因下面讲到),RAM、Flash等资源的占用很少。实时性可以说是当前主流中最快的,有外部中断即刻处理(对于实时操作系统来说,这个是最重要的指标)。uc/os、FreeRTOS 根本什么的没得比。当然,也有缺点。因为ARM keil公司把它封装得太好了,它把移植大部工作都做了,就好像微软的Visual Studio ,导致它使用起来太简单了、太好学了。很多只懂单片机的工程师,为了显示自己的身价,不愿意用(装B)。
参考技术A RTX-51系列是基于51单片机平台的实时操作系统。包含操作系统与不带操作系统(我们常称之为“裸奔”)当然会有很大的不同。操作系统简单来说能够统筹整个系统的资源、实现多任务并行操作,不过会造成额外的系统开销,同时编程方式也会发生根本性的变化,你要执行的任务仅仅是操作系统中的一个应用而已。
详细的内容请去查阅关于“实时操作系统”方面的书籍。本回答被提问者和网友采纳

如何在 KEIL-RTX RTOS 环境中以固定时间片对循环调度中的任务进行优先级排序

【中文标题】如何在 KEIL-RTX RTOS 环境中以固定时间片对循环调度中的任务进行优先级排序【英文标题】:How to prioritize a task in round robin scheduling with fixed time slice in KEIL-RTX RTOS environment 【发布时间】:2015-12-29 11:41:47 【问题描述】:

我的代码中存在这样一种情况,即所有任务都基于轮询(固定时间片为 50 毫秒)调度算法以相同的优先级运行。现在我想运行一个特定的任务,比如任务 A,恰好在 10 毫秒的时间内更新一些通信数据库。由于当前调度是基于轮询,固定时间片为 50 毫秒,因为任务 A 无法在 10 毫秒内准确调用。我没有得到任何解决方案来解决当前的问题。 请务必提供您宝贵的建议和意见。

提前致谢, 维杰·凯坦

【问题讨论】:

【参考方案1】:

不完全确定你在这里问什么。如果您不希望任务 A 运行时间超过 10 毫秒,并且您知道您将在不到 10 毫秒的时间内从您的通信函数中返回,您可以在任务 A 的开头花一些时间阅读,然后从任务 A 调用 osThreadYield()在您达到 10 毫秒(忙循环)之后。

如果您在任务 B 中的某个地方,并且需要在 10 毫秒内准确地调用任务 A,它会变得有点复杂,因为您不知道那个时候哪个线程可以抢占您的任务 B。您可以尝试的是,在任务 B 中,保留任务 A 的句柄。然后当您准备等待 10 毫秒时,执行以下操作:

 osThreadId id;
 id = osThreadGetId ();  // id for the currently running thread
 osThreadSetPriority(id, osPriorityRealtime); // Make sure we get back here quickly
 osWait(10);             // Wait 10ms
 osThreadSetPriority(id, osPriorityNormal);   // Go back to normal
 // If you need to create Task A, do so here, otherwise you can
 // use osSignalSet here and osSignalWait in Task A

也可以直接调用create Task A,设置它的优先级为osPriorityRealtime,从Task B中yield,Task A中的第一个方法是osWait(10)。一旦您返回,将其优先级恢复为正常。

【讨论】:

以上是关于keil 的RTX稳定性到底怎么样的主要内容,如果未能解决你的问题,请参考以下文章

怎样解决KEIL 5 编译KEIL4的带有RTX系统的project解决方法

请教MDK5中RTX-Kernel如何使用

Keil RTX使用 os_mut_init 报Hard Fault 错误解决记录

ARM Developer suite汉字乱码怎么回事

索泰RTX30系列显卡怎么样=索泰RTX30系列显卡规格详情

关于单片机实时系统的问题KEIL中的rtx51tny