科技论文
RTOS 101:任务、优先级和分析
发布03/22/2017
作者:特里·霍克,产品管理副总裁
实时操作系统(RTOS)的使用在嵌入式软件设计中越来越普遍,因为RTOS可以很容易地划分您的应用程序编码成更小的块,任务,这些任务似乎是并行执行的,彼此独立。RTOS以可靠和可维护的方式提供多任务处理,从而更容易设计具有多个并发功能的应用程序,如控制、通信和HMI。在现代32位处理器上,RTOS的开销可以忽略不计,而且通过多任务处理实现更高效的设计,RTOS的开销往往可以得到更多的补偿。
IntervalZero的RTOS(实时操作系统)平台是一个标准的预集成应用程序开发平台,允许公司只专注于交付他们的增值应用程序。IntervalZero的RTX和RTX64软件取代fpga和dsp来满足硬实时需求,从根本上降低了开发成本,并显著提高了嵌入式系统的质量。
RTOS通常使用周期性中断例程(“tick”中断)来实现抢占式多任务,该中断例程在需要时切换正在运行的任务。要执行什么任务的决定被称为任务调度,大多数RTOS使用固定优先级调度(FPS),其中开发人员为每个任务分配一个静态优先级级别,以指示它们的相对紧迫性。RTOS调度器总是从当前准备执行的任务中选择优先级最高的任务。这是一个非常简单和优雅的解决方案,允许RTOS调度器非常小,高度优化和彻底验证。
然而,分配合适的任务优先级是很重要的,否则系统性能将受到影响,或者系统甚至可能变得无响应。这是因为如果高优先级任务消耗太多处理器时间,那么它们可能会阻止低优先级任务的执行。分析基于rtos的应用程序的任务优先级和运行时行为需要记录和可视化任务调度。为此,Percepio提供了Tracealyzer工具,该工具具有超过25个交互式视图,使记录的轨迹更容易理解和分析。
图1显示了Tracealyzer的主视图,这是一个垂直的时间轴,主要关注任务的执行和中断处理程序(a),用文本标签标注,显示事件(B),包括RTOS API调用和自定义“用户事件”(C)。“参与者信息”面板(D)显示突出显示任务的属性,“视图过滤器”(E)允许对显示进行过滤。双击任务片段或事件标签,打开其他相关视图,显示跟踪中的相关点,例如,所选任务的所有执行的时间顺序列表。
任务的响应时间,即从激活到完成的时间,不仅受到任务本身使用的实际处理器时间(执行时间)的影响,还受到高优先级任务和抢占任务的中断的影响,如图1所示。因此,如果响应时间太长,优化有问题的任务的代码可能是浪费时间,除非您知道导致长响应时间的实际原因。
使用Tracealyzer,您可以获得运行时世界的许多视角,包括任务执行时间和响应时间的图表,如图2所示。我们可以看到,两个任务的执行时间都相当稳定,但有时“SensorZ”的响应时间要高得多。通过单击这样一个数据点,您可以在主跟踪视图中打开相应的间隔(图1)并查看原因。Tracealyzer中所有25个以上的视图都以类似的方式相互连接。
Tracealyzer可用于IntervalZero的RTX64 3.0产品。RTX64是IntervalZero RTOS平台的关键组件,该平台由x86和x64多核多处理器、Windows和实时以太网(如EtherCAT或PROFINET)组成,以超越dsp等实时硬件,并从根本上降低需要确定性或硬实时系统的开发成本。