凯利讯半导体的个人空间 https://www.eechina.com/space-uid-142497.html [收藏] [复制] [RSS]

博客

在你的单片机上运行RTOS时的硬件考虑-凯利讯半导体

已有 1102 次阅读2018-3-8 11:28 |个人分类:电子技术| 处理器, 单片机RTOS, 硬件

  MCUs被要求在嵌入式系统中控制越来越多的功能。这些功能通常在本质上是实时的,并且需要周期性地服务以满足系统对响应性、性能或可靠性的要求。通常,实时操作系统(RTOS)用于管理多个实时事件,以确保响应能力足以满足系统需求。然而,并不是所有的MCUs都适合于托管RTOS,因此,对一些关键功能进行审查,这些功能允许或便于在特定的MCU上托管RTOS,这对实时嵌入式系统的设计者是有用的。

  本文将快速回顾在现代MCUs中提供的一些关键特性,这些特性在运行需要RTOS的嵌入式系统时有所帮助。这将帮助设计人员更有效地选择MCU作为RTOS主机,并使用该MCU设计嵌入式系统。


  管理实时响应

  随着控制系统变得越来越复杂,用简单的控制程序来管理各种单片机的功能越来越困难。对于具有不同优先级的多个事件,单个控制循环会不断检查以查看什么事件需要服务变得难以处理。控制循环不能快速到达每个函数。所需要的是一种实时控制方法,所有事件都可以在其所需的响应时间内进行服务。

  通常,MCU可以通过对事件的响应来实现对复杂系统的更好控制,这要么是由计时器触发的内部MCU请求,要么是由I/O信号触发的外部事件,使用中断。中断可以被优先处理,以便首先处理最重要的请求,并且使用现代的MCU中断系统,响应时间可以非常快。不幸的是,要证明所有的事件都要用所需的周期性来处理,这是很困难的。例如,如果我们需要进行一系列模拟到数字的转换,同时在USB端口上接收数据,并在获得的模拟数据上计算低通滤波器,计算出转换的最大采样率可能是非常困难的。

  提高实时响应的另一个选择是使用实时操作系统或RTOS。在这种方法中,控制系统中的每一个任务都可以分配一个时间片或MCU处理周期的一部分。如果该函数不需要当前分配的时间,则可以将时间“转换”到另一个函数,以便不丢失宝贵的处理周期。如果没有任何功能需要服务一个空闲进程,通常在低功率模式下,可以启动以节省电力。分配的时间片可以调整,以确保最少的时间可以满足所需的响应时间。通过对模数转换器、USB接口和过滤处理功能的正确分配,系统将以可预测和有效的方式运行。

  现代的MCUs已经被优化,使得实现RTOS的实现变得很容易。最明显的可能是包含一个专用计时器,通常是与确定处理分配有关的“计时器”,这使得分配时间片到函数变得很容易。与其他MCU活动并行执行任务的智能外围设备也很有帮助,因为关联的进程只需要“触发”事件,然后可以将控制返回到另一个进程。例如,一个USB传输可以通过简单地编程DMA控制器,将SRAM数据移动到USB端口来启动。在缓冲区被清空或出现错误之前,任务不需要进行任何其他活动。

  让我们更深入地了解一些最重要的支持RTOS的硬件元素,以便更好地理解如何优化基于mcu的RTOS实现。


  使用先进的中断控制器

  由于基于rto的系统需要快速高效地响应实时事件,所以高级中断系统可能是基于mcu的设计中最重要的硬件元素。例如,如果中断需要太多的周期来响应,可能是因为在调用中断例程之前需要保存多个CPU寄存器,因此实时响应可能会受到影响。另外,如果中断控制器只有少量的可能的向量位置,软件可能需要几个周期来找出中断的源。例如,中断信号传输完全应该与传输错误区分开来。

  Microchip PIC24F单片机有一个高级的中断控制器,在实现基于MCU的RTOS时需要几个特性。PIC24F和dsPIC MCU家族的框图如图1所示。在图中间的灰色显示的中断控制器连接所有的外围设备、计时器和几个输入信号,以提供全面的中断支持。多达118个不同的中断源可以从外部来源获得多达5个中断源。有5个周期的固定中断延迟响应时间对于任何应用程序来说都足够快。

  Microchip PIC24和dsPIC DSC家族图谱。


  图1:Microchip PIC24和dsPIC DSC家族框图。(芯片)

  PIC24和dsPIC DSC单片机中断控制器也支持7级的优先级,使得区分最重要的事件和最不重要的事件变得容易。当对某些事件立即做出响应,以及某些事件可以等待服务时,这可能特别有用。例如,获取数据通常比处理数据重要得多,因此获取事件通常比处理事件优先级高得多。


  内存占用和低功耗

  当从纯中断或控制回路设计切换到基于rto的实现时,工程师们最常见的两个问题是内存占用和低功耗。由于每个RTOS进程都需要SRAM中的一个特殊的控制块来存储过程的各种声明信息,所以工程师们常常担心它们会耗尽SRAM,并对应用程序“缺乏内存”。幸运的是,随着上下文切换时间和控制块大小的优化,RTOS的内存占用不断提高。此外,MCUs还包括越来越多的SRAM在设备上,因为这个资源变得越来越便宜,同时变得越来越有价值。

  例如,Atmel SAM4L MCU在两个blocks-HRAMC0和hramc1中提供32 Kbytes或64 Kbytes的SRAM,如图2中的系统内存分配图所示。这些SRAM块是在单个循环中访问的,这是一个确定的过程,它简化了基于rtoc的系统的延迟和性能计算。将SRAM作为两个独立的银行组织起来,也提高了基于dma的功能的性能,因为可以将内存块分配给每个银行,以优化总体访问带宽。

  Atmel SAM4L MCU全局内存分配的图像。


  图2:Atmel SAM4L MCU全局内存分配。(由Atmel)

  由于每个RTOS进程只需要几百个字节,所以即使是复杂的RTOS也只需要MCU的SRAM的百分之几。一些设计人员经常忽略的一个问题是,使用RTOS通信时,缓冲区通常可以显著减少,因为响应时间更小,更可预测。对于某些函数,SRAM中的节省将超过上下文切换存储需求的大小。

  在大多数RTOS实现中也完全支持低功耗模式。这意味着降低内部调节电压,降低时钟速度,或禁用特定的外围设备的模式都可以被利用。Atmel SAM4L MCU有一些特殊的控制,如果需要的话,可以很容易地调整电压等级和时钟速度,以满足每个处理线程的要求。多个“空闲模式”也可用于在几个标准的低功耗设置之间进行选择,由多个线程共享。


  简化以太网连接

  在具有高速连接性需求的实时系统中,如以太网,以太网的硬件是重要的,但是支持“钩子”,使其易于实现的“钩子”不应该被忽略。例如,Renesas RX63N拥有一个先进的以太网控制器,它有一个专用的以太网直接存储器存取控制器,它可以直接管理控制以太网传输的描述符。这极大地简化了以太网流量的控制,因为许多低级的细节都可以在以太网子系统中进行控制。另外,在RTOS环境中实现以太网连接可以通过使用连接性开发工具包来简化,如图3所示,可以与Micrium RTOS捆绑在一起。MCU、开发委员会和Micrium uC/OS-II或uC/OS-II RTOS的这种组合提供了一个经过验证的平台,现有的示例代码可以作为实现定制设计的第一步。

  Renesas RX63N以太网工具包的图像。


  图3:使用Micrium RTOS支持的Renesas RX63N以太网工具包。(由凯利讯半导体)

  Micrium RTOS还提供了各种中间件模块,进一步简化了连通性应用程序。例如,IPv6支持使得即使是最复杂的以太网子系统也很容易实现。示例设计的可用性意味着可以在记录时间内完成演示系统的工作。


  DSP应用的高效处理

  在某些应用程序中,可以使用RTOS来确保尽可能高效地进行处理。例如,DSP应用程序可以处理饥饿,如果多个通信通道竞争CPU周期,效率可能会受到严重影响。例如,德州仪器TMS320C66xx DSP具有重要的处理能力。图4中所示的一个处理核心有八个独立的处理器(L/S/M/ d1和2),它们可以并行工作。当使用RTOS时,比如TI-RTOS,通信函数可以更容易地控制需要的CPU周期数。这释放了处理时间,用于“重型提升”DSP处理大量以DSP为中心的设计所需的大量数据。

  德州仪器TMS320C66xx DSP。


  图4:德州仪器TMS320C66xx DSP提供了重要的处理性能。

  结论

  通常,嵌入式系统需要对特定时间内的事件做出响应,而在这些系统中,驻留在MCU上的RTOS是一个可能的解决方案。确保您知道在MCU上托管RTOS的需求,这样您就可以做出最佳的MCU选择,并简化基于rtoc的设计的开发。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
返回顶部