摘要:嵌入式系统开发趋势之一是基于平台的开发,包括硬件平台和软件平台。开放实时嵌入式软件平台TOPPERS(Toyohashi Open Platfo rm for Embedded Real-time System)是一个包含多种嵌入式实时操作系统、中间件以及软件开发工具在内的,可用于多个领域的综合性平台。本文介绍了TOPPERS的历史、现状及其下一个十年的发展计划和目标,以及TOPPERS在国内的发展情况和目前基于TOPPERS成果正在进行的工作。
关键词:实时操作系统;TOPPERS;ITRON;软件平台;嵌入式系统
引言
开放实时嵌入式软件平台TOPPERS(Toyohashi Open Platform for Embedded Real-time System)为一个包含多种嵌入式实时操作系统、中间件以及软件开发工具在内的,可用于多个领域的综合性平台。本文对TOPPERS的发展历史、研究现状和下一个十年的发展计划和目标进行了介绍和分析,一方面可以使TOPPERS的发展成果能够被更广泛地分享;另一方面为国内类似嵌入式软件平台的发展提供参考。TOPPERS的主要特色在于具有高质量的设计和较完善的体系,开放源代码,可免费使用,灵活的许可证使得其在商业应用上限制较少。
1 TOPPERS的历史
TOPPERS的历史并不长,但其起点是具有20多年历史的TRON(The Real-time Operating system Nucleus)和ITRON(Industrial TRON)项目。ITRON规范为一系列关于实时操作系统的开发规范,而不是一个具体的实时操作系统的实现,迄今共发布4个版本。任何组织或者个人都可以按照ITRON规范开发自己的实时操作系统。ITRON规范的开放性和弱标准性使其取得了巨大的成功,在日本已经成为事实上的工业标准。
但也正是因为ITRON规范的弱标准性,符合ITRON规范的实时操作系统版本彼此之间不能完全兼容,带来了过剩的多样性,造成过多重复开发。另外,随着嵌入式系统越发复杂,除了实时操作系统内核,其他中间件如文件系统、网络协议栈、设备驱动框架等也越发重要,而在这些方面,ITRON规范是比较薄弱的。
为了解决上述问题,适应未来嵌入式系统发展趋势,ITRON的发展在两个方向上继续进行,一个是由坂村健教授主导的T-Engine,另一个便是TOPPERS。TOPPERS和T-Engine不同点在于TOPPERS是以μITRON4.0规范为基础,主要针对硬实时系统,专注于工业控制领域,如汽车电子等;T-Engine由硬件上的T-Engine规范和软件上的以T-Kernel为代表的一系列实时内核以及相应的中间件这两大部分组成。
2 TOPPERS的现状
最近一次ITRON规范的发布要上溯至1999年的μITRON4.0规范。进入新世纪后,一方面嵌入式系统相关技术的发展日新月异;另一方面ITRON规范十多年未作更新,已经无法满足未来嵌入式系统应用的需求。因此,从2006年开始,TOPPERS协会在μITRON4.0规范基础之上开始制定新一代实时内核规范并加以实现,其大致路线图如图1所示。到2011年为止,该路线图中的绝大部分目标都已经达成,产生一大批成果,并且在消费电子和汽车电子等领域中得到广泛应用。
2.1 实时内核
TOPPERS/ASP(Advanced Standard Profile)内核是整个TOPPERS平台的基石和TOPPERS新一代实时内核的出发点,它遵循μITRON4.0规范标准功能集,并在TOPPERS/JSP内核基础上做了许多改进和扩展,包括可靠性和代码的可复用性,其内存占用较小,功能完善且有着不错的性能。通过扩展包的形式可以对该内核的功能进行扩展,如任务优先级可扩展到256级,支持优先级置顶协议的互斥量扩展和受限任务(类似FreeRTOS中的协程)扩展等。
TOPPERS/FMP(Flexible MultiProcessor)内核是TOPPERS/ASP内核针对多核处理器的扩展。该内核以静态的方式把任务分配给每个处理器,任务调度也在每个处理器上单独进行,任务可以在处理器之间灵活地进行迁移,并引入了自旋锁,支持粗粒度锁和细粒度锁。该内核主要适用于对称性多核处理器系统,以应对嵌入式系统多核化的趋势,目前支持ARM系列的多核处理器和瑞萨SH系列多核处理器。
TOPPERS/ATK1(Automotive Kernel)内核为一个面向汽车电子领域且遵循OSEK/VDX Version 2.2.1规范的实时内核。该内核通过了车载软件的相关认证,并且在代码实现上遵循MISRA-C设计规范,车载软件是TOPPERS的优势所在。除了实时内核外,TOPPERS还提供面向车载网络的CAN/LIN中间件和FlexRay中间件。目前,符合AUTOSAR规范的新一代车载实时内核TOPPERS/ATK2也正在开发中。
TOPPERS/HRP(High Reliable Profile)内核以μITRON4.0规范的保护功能扩展为基础,带有内存保护和时间保护功能,适用于带有MPU(Memory ProtectionUnit)或者MMU(Memory Management Unit)单元的系统。该内核主要应用于对可靠性有很高要求的领域,如航空航天等。内存保护主要包括防止对内存模块特定区域的访问,防止对特定系统数据的访问和防止分配过多内存等。时间保护主要指防止系统中某个任务或中断处理函数过多地占用处理器。
TOPPERS/ASP Safety内核基于TOPPERS/ASP内核1.3.1版本,对内核进行了大量的功能安全分析,在文档、代码注释和部分功能上做了相应修改,符合功能安全规范IEC61058中SIL3的要求,主要应用于强调功能安全的领域,如核电、石化等。
TOPPERS/SSP(Smallest Set Profile)以TOPPERS/ASP内核为基础,以尽可能地减少ROM/RAM使用量为目的,功能上遵循μITRON4.0规范中最低限度功能集。该内核主要针对资源非常有限的小规模嵌入式系统,如无线传感器应用等,删除了任务间通讯功能,精简了任务管理功能。在该内核中,每个任务优先级上只允许存在一个任务,最多允许16个任务存在,并且所有任务共享一个任务堆栈。该内核针对ARM Cortex-M3内核处理器的典型应用只需占用3.5 KB左右的ROM,附加上时间管理扩展包后也只占用5 KB左右的ROM。
2.2 中间件
TECS(TOPPERS Embedded Component System)是一个针对嵌入式系统,将各种软件模块封装为组件,并将组件结合在一起以实现快速构建大规模嵌入式软件的规范和工具的集合。其目的在于通过组件化的开发方式降低嵌入式软件的开发难度,减少重复开发,提高设计的抽象度和嵌入式软件的可复用性。在TECS中,通过组件描述语言CDL(Component Description Language)来描述组件的接口和属性等,然后解析器分析CDL并生成相应的C语言代码模板,最后用C语言实现相应的组件。由于TECS的底层是基于C语言的,且整个过程是静态的,所以其在代码大小和性能上开销很小,适合于嵌入式系统应用。TECS支持远程过程调用(Remote Procedure Call),可用于分布式嵌入式系统的开发。
TINET为一个面向嵌入式系统的精简TCP/IP协议栈,遵循ITRON TCP/IP API规范,并同时支持IPv4和IPv6协议。TINET的IPv4协议部分来源于FreeBSDVersion 3.4中的网络协议栈,IPv6协议部分来源于著名的IPv6实现KAME。TINET中许多概念与BSD套接字的概念类似,但重点考虑嵌入系统各种限制中最为严格的内存容量的限制,删除了一些传统BSD套接字接口的TCP/IP协议栈中对于嵌入式系统多余的功能。
SafeG为一个基于ARM TrustZone技术的嵌入式虚拟机(Embedded Hypervisor),支持在同一个处理器上同时运行实时操作系统(运行在信任状态下)和通用操作系统(运行在非信任状态下)并以硬件实现空间和时间上的隔离。SafeG负责信任状态和非信任状态之间的切换,并监控中断的产生,通用操作系统作为实时操作系统的若干任务被调度。通过SafeG,可以结合多种操作系统的特点于一体,带来更多的灵活性,同时保证安全性和可靠性。
2.3 TOPPERS内核的主要特征
不同的TOPPERS内核覆盖不同的嵌入式系统领域,但以下两点几乎为所有TOPPERS内核的主要特征。
(1)静态配置
常见的实时操作系统中,系统的配置通过C语言头文件中的宏定义来实现,系统资源是通过调用C语言API来创建的。在TOPPERS内核中,系统的配置和系统资源的创建是通过静态API来完成的。静态API的相关概念在μITRON4.0规范中引入。使用者通过编写由静态API组成的系统配置文件(文件后缀为.cfg)来描述系统的组成和所需的系统资源。TOPPERS内核配置器(configurator)将解析系统配置文件,并依据事先定义好的模板文件生成相应的C语言具体实现。
以TOPPERS/ASP内核为例,对静态配置流程进行简要描述。静态配置流程图如图2所示,静态配置可以分为3个阶段:
①配置器阶段1。在该阶段中,配置器读取系统配置文件和符号取值表生成用于参数计算的C源文件,再经交叉C编译器编译、链接,生成包含具体参数的结果文件(Motorola S格式)和对应的符号表。
②配置器阶段2。在该阶段中,配置器依据上一阶段生成的符号表从参数计算结果文件中取得实际值,再依据事先定义好的模板文件,生成包含具体内核资源实现的内核,构成与初始化文件和相应的头文件(也可生成其他文件,由使用者自定义)。所生成的源文件与内核和应用一起编译、链接,即可生成最终的目标文件和相应的符号表。
③配置器阶段3。该阶段为一个可选的检查阶段。配置器依据定义在模板文件中的规则,结合符号表对最终的目标文件(Motorola S格式)进行检查,如违反规则,输出相应错误信息。
采用静态配置,可以自动化高效地实现对系统的配置和系统资源的创建和分配,减少系统资源的浪费。由于所有系统资源在编译时就已经创建完毕,不需要在运行时再进行创建工作,所以系统的启动过程也将得到加快。另外在静态配置过程中可以实现一些编译器所不能完成的复杂验证工作,如堆栈的起始地址是否对齐、堆栈的大小是否对齐等。
(2)TOPPERS标准中断模型
由于中断处理和硬件紧密相关,常见的实时操作系统中,中断具体怎样处理没有过多的要求,而是留给移植时实现。在所有TOPPERS内核中,中断处理都遵循如图3所示的TOPPERS标准中断处理模型。
该模型旨在提高中断处理的抽象度,提升中断相关代码的复用性和可移植性。在该模型中,所有中断都具有相应的中断优先级,中断优先级(默认-1~-7)和任务优先级(默认1~15)之间过渡平滑,构成一个完整的优先级体系。在该模型中,每一个中断都有一条中断请求线接收一个或多个设备的中断请求。当一个中断请求发生后,经过相应的判断和比较之后,由中断处理函数处理。中断处理函数可以由使用者定义,也可由配置器自动生成。在中断处理函数中调用由使用者定义的中断服务例程。在某个中断的处理过程中,可以允许被具有更高优先级的中断打断,即允许中断嵌套。
TOPPERS标准中断处理模型中定义的所有环节都可以由硬件实现,大部分处理器的中断控制器也包含这些环节的功能,如ARM Cortex-M3架构处理器的嵌套向量中断控制器。若某个特定处理器无法硬件实现该模型中某个环节的功能,则可以通过软件的方式模拟实现。软件模拟的方式会带来相应的开销,如延长中断响应时间等。然而这种开销相对于该模型所带来的中断处理抽象度的提升是可以接受的。
结语
本文对开放实时嵌入式软件平台TOPPERS的发展历史、目前研究现状(包括主要成果物和主要特点)以及未来十年的发展方针进行了介绍和分析。其主要特色在于:TOPPERS为一个相对完善的体系,覆盖了嵌入式系统的多个领域;TOPPERS以ITRON项目20多年发展成果为基础,具有较高的品质和可靠性;灵活的许可证,使得可以自由使用TOPPERS的成果(包括商业应用),同时有较少的限制。