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

一、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 LOGO

         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

欢迎继续关注我的博客



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值