您的位置:首页 > 编程语言 > ASP

嵌入式实时软件平台TOPPERS/ASP简介

2013-05-10 15:52 169 查看

一、TOPPERS计划

TOPPERS/ASP内核(以下,简称ASP内核)作为TOPPERS新世代内核的基石,是由TOPPERS Project 开发的一个实时内核。ASP内核是在遵循uITRON4.0规范的实时内核TOPPERS/JSP内核的基础上扩张,改良而成的。

由于ASP内核是未来TOPPERS计划的基础,所以在结构上合实现上尽可能完善,以方便于日后的扩展。ASP内核主要针对存储容量在10kB到1MB范围内的要求高实时性、高可靠性的嵌入式系统。

TOPPERS(Toyohashi OPen Platformfor EmbeddedReal-timeSystems)是一个基于ITRON技术规格,开发各种嵌入式操作系统及相关软件,并将其开发成果以开放源代码形式向社会公开,以提高嵌入式系统的设计开发技术,振兴相关产业为目的的工程。另外,通过技术推广,提供各种教材等活动,培养高素质的嵌入式系统开发人员。



TOPPERS工程是以2003年9月设立的特定非营利组织(NPO法人)为中心,以名古屋大学的高田広章教授为首,集合了产业界、学术界、政府等各类团体以及个人推动工程的开展。

TOPPERS工程的主要目标 :

(1) 开发现代实时操作系统的决定版

以有近20年发展历史的 ITRON 技术规格的研究开发成果为基础,开发出最有决定意义的当代实时操作系统。作为开放源代码软件向社会普及。象Linux 一样,成为在嵌入式系统领域中具有领导地位的操作系统。

(2) 研究下世代的实时操作系统技术

充分满足嵌入式系统的需求,继承 ITRON 技术的优秀特征,进行下一代嵌入式操作系统技术的研究开发。以 Linux 的市场地位作为目标,但绝不等同于重复开发第二个 Linux。通过将开发成果作为开发源代码公开,有效地集合了产业界、学术界、政府等各 类团体以及个人的智慧和力量。

(3) 推动嵌入式系统开发人才的培养

利用开放式源代码软件的优势,通过提供教材,进行各种的形式的普及教育,为嵌入式系统开发人员的培养做出贡献。TOPPERS工程所开发的各种教程、教材 同时公开。

官方网站:http://www.toppers.jp/

TOPPERS/ASP内核代码英文化及文档中文化:http://code.google.com/p/toppers-asp-en/

二、内核结构

TOPPERS/ASP的内核结构如下图所示,在应用程序之下有系统服务、内核和系统接口。具体来看:

(1)应用程序可能包括一系列的任务(task),中断服务程序;

(2)系统服务目前主要是系统日志服务(SystemLogService),由系统日志任务和相应的驱动程序等组成;

(3)系统接口统一了对硬件的访问行为,目前主要有字节、半字、字、双字等几种方式.

内核为TOPPERS/ASP的具体实现。整个应用程序之下的部分,又可以分为目标依赖(target-dependent)和非目标依赖(target-independent)两大部分。

非目标依赖部分即与具体硬无关的部分,该部分已经在TOPPERS/ASP中用ANSIC实现;目标依赖部分即与硬件相关的部分,TOPPERS/ASP的移植具体在该部分体现。





TOPPERS/ASP内核的大致调用关系如下图所示。系统的中任务或中断处理服务通过一系列的系统调用(System Call Routine)来利用相应的功能。在TOPPERS/ASP的实现过程中,努力遵循以下5个原则:

(1)代码易懂、易修改。作为一个开源项目,TOPPERS/ASP的代码经过许多人的阅读和检查。

(2)易于移植性。TOPPERS/ASP分为为目标依赖和非目标依赖两大部分,泾渭分明。TOPPERS/ASP的移植具体在目标依赖部分体现。

(3)代码易于测试。

(4)性能与尽可能少的内存占用。

(5)可裁剪性。



为了减少对内存的占用(RAM),在实现上TOPPERS/ASP尽量把不变的变量放在ROM中存储而不是RAM中,一个典型例子是ASP内核中的各个内核各个对象如任务、信号量、标志等等的控制模块(ControlBlock)分为初始化部分和控制部分。初始化部分包括一些参数如执行地址、属性、初始优先级等等,这写初始参数存放在ROM中,不占用RAM;控制部分包括对象在运行过程中可能会改变的参数,如状态变量、数据指针等等。具体在后文各个对象的介绍时,通过数据结构可以更直观的了解这点。

三、内核特点

(1) 静态配置。TOPPERS/ASP是一款采用静态配置的RTOS,在实现中没有任务建立、信号量建立等等内核对象的创建API,而是通过配置器以配置脚本的形式实现内核对象的创建。采用配置的特色之处在于,加快了内核的启动速度,由于内核的初始数据结构由配置器自动配置,从而减少了内核初始化的环节;减少了RAM的使用量,配置器根据配置脚本自适应地生成相应的代码,不会产生多余的RAM用量;通过配置器可以交叉验证最终生成的镜像与配置是否相吻合,如代码的对齐,链接是否完整等等,可以有效地提高可靠性和安全性。

(2)运行跟踪(execution trace)。TOPPERS/ASP中的运行跟踪功能,以文本的形式,展现TOPPERS/ASP运行过程的细节,从而方便设计人员调试。如果配之以同属于TOPPERS计划中的TLV(Trace Log Visual)功能,还能以更直观的图形形式展现。
(3)统一的中断处理模型。很多RTOS中,包括ITRON4.0中对中断没有详细的规范,或者只存在比较弱的规范。对于同一个RTOS,不同硬件有不同的中断处理风格。TOPPERS/ASP中则尝试把不用硬件的中断处理统一起来,即TOPPERS/ASP标准中断处理模型,简化中断处理程序的设计,并使之具有可移植性。

(4)宽松的许可协议。TOPPERS/ASP继承了TRON的弱标准化、宽松的特点,采用了一种类似BSD的许可协议,兼容GNU/GPL协议,同时又有自己的特点,即告之制度。

四、文件结构

TOPPERS/ASP的文件机构大致如下:
--README.txt TOPPERS的简单自述文件
--configure configure script(GNU开发环境用)

--MANIFEST packgage的说明,可以用文本编辑器打开显示了当前packgage下的基本文件结构

--include/

--kernel.h ASP内核定义

--sil.h 系统结构定义(System Interface Layer)

--t_stddef.h TOPPERS通用定义

--itron.h ITORN标准定义、宏和常数

--t_syslog.h system log 功能定义

--t_stdlib.h 基本库定义

--queue.h 队列及相应操作定义

--histogram.h 统计图功能定义

--log_output.h system log 格式化输出定义

--kernel/

--Makefile.kernel 内核编译用Makefile

--kernel_impl.h 内核实现标准头文件定义

--kernel_int.h kernel_cfg.c用头文件

--kernel_rename.def 内核实现重命名用.def文件,配置器用,定义那些函数和全局变量需要增加前缀

--kernel_rename.h 根据kernel_rename.def生成的重命名头文件

--kernel_unrename.h内核重命名解除

--kernel_api.csv 静态api和内核api的对应关系,配置器用

--kernel_def.csv 配置器用文件

--kernel.tf 配置器用模板,第2阶段,生成相应的内核变量如任务、信号量等等

--kernel_check.tf 配置器用模板,第3阶段

--allfunc.h 全函数定义,使用自带Makefile时为用,其他情况时需包含该头文件

--check.h 错误检测用宏

--tartup.c内核初始化及结束时的操作

--task.h 任务操作及相关定义

--task.c 任务操作及相关定义的实现

--wait.h 等待状态的操作及相关定义

--wait.c 等待状态的操作及相关定义的实现

--time_event.h timer event管理功能定义

--time_event.ctimer event管理功能定义的实现

--task_manage.c任务管理功能的实现

--task_refer.c任务状态查询实现

--task_sync.c任务同步功能实现

--task_except.c任务例外功能实现

--semaphore.h信号量操作及关联定义

--semaphore.c信号量功能实现

--eventflag.h 事件标志功能定义

--eventflag.c 事件标志实现

--dataqueue.h数据队列定义

--dataqueue.c数据队列实现

--pridataq.h 优先度队列定义

--pridataq.c 优先度队列实现

--mailbox.h邮箱功能定义
--mailbox.c 邮箱功能实现

--mempfix.h固定内存池定义

--mempfix.c固定内存池实现
--time_manage.c 系统时钟管理功能实现

--cyclic.h 周期handler定义

--cyclic.c 周期handler实现

--alarm.h alarm功能定义

--alarm.c alarm功能实现

--sys_manage.c系统状态管理实现

--interrupt.h中断管理定义

--interrupt.c中断管理实现

--exception.h CPU异常管理定义

--exception.cCPU异常管理实现

--syssvc/

--banner.h 内核启动信息定义

--banner.c 内核启动信息输出

--banner.cfg 内核启动信息输出功能的配置文件

--logtask.hsystem log task 定义

--logtask.c system log task的实现

--logtask.cfg system log task的配置文件

--serial.h 串口操作定义

--serial.c 串口操作实现

--serial.cfg 串口操作配置文件

--syslog.h system log 功能使用定义

--syslog.c system log 功能实现

--syslog.cfg system log 功能的配置文件

--vasyslog.c 参数可变的system log功能实现,类似于printf
--library/

--histogram.c 统计图功能的实现

--log_output.c 格式化输出log的实现

--strerror.c生成error message

--t_perror.cerror message输出

--utils/

--applyrename 针对APP重命名

--genoffset 生成offset.h(关键)用脚本(GNU开发环境下)

--genrename 重命名头文件生成脚本

--gentest生成test program

--makedep依赖关系生成脚本(GNU开发环境用)

--makerelease release 生成makefile

--sample/

--Makefile sample program的Makefile(GNU开发环境下)

--sample1.h sample program 的头文件

--sample1.c sample program 的实现

--sample1.cfg sample program的配置文件

--doc/

--user.txt 简易用户使用文档

--asp_spec.txt TOPPERS/ASP内核设计概要

--extension.txt 功能扩展说明

--migration.txt 从其他符合itron标准的RTOS下的应用程序向TOPPERS/ASP的迁移

--porting.txt 目标移植说明文档

--configurator.txt 配置器使用说明

--design.txt 设计备忘

--version.txt 版本说明

----------------------------------------------------------------

欢迎大家转载我的文章。

转载请注明:转自古-月

http://blog.csdn.net/hcx25909

欢迎继续关注我的博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: