您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > AUTOSAR-OS-(Damon-Lee)
AUTOSAROperatingSystem12/15/2011--在OSEKOS基础上的扩展目录Content基础性描述FundamentalDescriptionAUTOSAROS与OSEKOS的关系OS-Application调度表ScheduleTable系统的保护措施ProtectionFacilitiesAUTOSAROS的基础性描述AUTOSAROS是一个RTOS负责管理任务和事件的调度、任务之间的数据流在运行时提供保护性函数(memory,timingprotection)拥有合理的实时性能,可以静态地配置和裁剪…AUTOSAROS只考虑核心功能OS模块关注的领域主要是scheduling&synchronization其他的功能由BSW-M实现,如COM提供通讯抽象本文档的内容只针对单核系统AUTOSAROS的头文件结构[OS546]实现者应当提供一个头文件包含结构,使得使用OS模块的用户只需要包含一个头文件:Os.h.[OS552]OS模块应当尽量通过预处理器检查避免集成不兼容的c或h文件。例如包含(外部)头文件应当验证版本号:MODULENAME_AR_RELEASE_MAJOR_VERSIONMODULENAME_AR_RELEASE_MINOR_VERSION目录Content基础性描述FundamentalDescriptionAUTOSAROS与OSEKOS的关系OS-Application调度表ScheduleTable存储保护MemoryProtection时间保护TimingProtection系统生成GenerationoftheOSAUTOSAROSEKAUTOSAROS与OSEKOS的关系AUTOSAROS与OSEK向后兼容[BSW097]AUTOSAROS应当提供与现存OSEKOS向后兼容的API。新的需求应当作为扩展功能与OSEKOS集成到一起。[OS001]OS模块应当提供与OSEKOS向后兼容的API。AUTOSAROSEKAUTOSAROS与OSEKOS的关系AUTOSAROS对OSEK作了扩展[BSW11016]OS的实现应当具有可裁剪性,且可以通过生成工具进行配置。OS应当提供的scalability配置选项及其特性:Class1:OSEKOS+PlannedSchedulesClass2:Class1+TimingProtectionClass3:Class1+MemoryProtectionClass4:Class1+Class2+Class3AUTOSAROS与OSEKOS的关系AUTOSAROS的可裁剪性[BSW11012]OS应当为自己的保护特性提供可扩展性(可裁剪性)。[OS240]如果一个低级别的实现支持高级别的部分特性,则这些特性的接口应当遵从本规范。[OS241]OS模块应当根据配置的scalabilityclass支持所需的特性。[OS327]OS模块在Class3&4中,应当使用扩展状态。AUTOSAROS与OSEKOS的关系AUTOSAROS对OSEK作了扩展[BSW11018][OS299]OSmodule应当在调用StartOS()之前和ShutdownOS()之后提供以下服务:DisableAllInterrupts(),EnableAllInterrupts(),SuspendAllInterrupts(),ResumeAllInterrupts()。[OS301]OSmodule应当提供incrementasoftwarecounter的功能IncrementCounter(),作为alarm超时的一个备选动作。[OS476]OSmodule在系统启动阶段,应当允许自动开始预定义的absolutealarms.[OS566]OSAPI应当检查指针参数是否为NULL,如果是则返回OS_E_PARAM_POINTER。AUTOSAROS与OSEKOS的关系AUTOSAR对OSEK某些功能的使用作了限制[OS242]OSmodule应当只允许在ScalabilityClass1中使用AlarmCallbacks。[OS304][OS424][OS425]消除OSEKOS中三个API的未定义行为。AUTOSAROS不需要支持internalcommunication,所以不需要OSEKOS实现此功能(即保持LOCALMESSAGEONLY未设置)。在AUTOSAR中,RES_SCHEDULER没有特殊地位:不会被自动创建,但可以被赋予最高优先级。目录Content基础性描述FundamentalDescriptionAUTOSAROS与OSEKOS的关系OS-Application调度表ScheduleTable存储保护MemoryProtection时间保护TimingProtection系统生成GenerationoftheOSOS-Application引入OS-Application的原因OSEKOS对系统对象的管理任何task/ISR都可以设置event任何task/ISR都可以操作alarm因此一个程序的错误可能会传播到同一处理器上的其他程序中。改进思路就是将这些task/ISR/event/alarm等系统对象分组,只有组内的对象之间才能自由操作,组之间的对象操作需要显示授权。[BSW11001]OS应当提供给用户一个高层抽象,以允许用户将现有的OS对象分组,只有同一组内的对象之间可以相互操作。这样的一个组称为OS-Applicant.OS-ApplicationOS-Application的组成如果在系统中使用OS-Application,则所有的Task,ISR,Resource,Counter,Alarm,ScheduleTable都必须属于某一个OS-Application。OS-ApplicationOS-Application的分类TrustedOS-A:运行时不必开启监控或保护设施;可以拥有对内存、OS模块API的不限制访问;当处理器支持时,允许运行在特权状态。Non-trustedOS-A:开启监控或保护设施;对内存、OS模块API的访问受限;不能运行在特权状态。OS-ApplicationOS-Application的状态状态定义了其系统对象对其他OSA的可访问性。APPLICATION_ACCESSIBLE:OSA处于活动状态,其系统对象可以从其他OSA访问。这个状态是启动时的默认状态。APPLICATION_RESTART:OSA当前处于重启阶段,其对象不能被其他OSA访问,直到调用AllowAccess()状态转变至APPLICATION_ACCESSIBLE。APPLICATION_TERMINATED:OSA处于终止状态,其对象不能从其他OSA对象访问。状态不会改变。OS-ApplicationOS-Application的相关规定[OS445]OS模块应当允许OSA由一组trustedfunctions,tasks,ISRs,alarms,Scheduletables,counters,resources,hooks组成。[OS446]OS模块应当允许OSA由一组nontrusted…组成[OS464]受信任OSA可以向其他OSA提供服务。OS016要求OS提供服务GetApplicationID()来获得当前运行的OSAOS017要求OS提供服务CheckObjectOwnership()来检查系统对象属于哪个OSA。OS256要求OS提供服务CheckObjectAccess(),来检查一个系统对象可以被哪个OSA访问OS-ApplicationOS-Application的相关规定[OS258]TerminateApplication()由task/C2ISR/errorhook调用,结束它所属的OSA。[OS447]如果OS模块结束一个OSA,则它应当:结束所有OSA拥有的Task/ISRs,并且禁止所有属于OSA的中断,并且停止alarm停止其调度表OS-ApplicationOS-Application的相关规定[OS448]除非在配置中指明,OS应当禁止OSA(不管是trusted还是non-trusted)访问不属于它的系统对象。[OS500]OS模块在调用了StartOS()之后以及在任何StartupHook被调用之前,应当设置OSA的状态为APPLICATION_ACCESSIBLE。[OS502]如果一个OSA被结束(也就是通过一个服务调用,或者通过protectionhook),并且不需要重启动,那么系统模块应当将OSA的状态设置为APPLICATION_TERMINATED。[OS503]如果一个OSA被结束(也就是通过一个服务调用,或者通过protectionhook),并且需要重启动,那么系统模块应当将OSA的状态设置为APPLICATION_RESTARTING。[OS504]OS应当禁止其他OSA对不处于APPLICATION_ACCESSIBLE的OSA的访问。[OS509]如果违反了OS504,则OS应当返回E_OS_ACCESS。OS-Application[OS016]GetApplicationID()OS-Application[OS017]CheckObjectOwnership()OS-Application[OS256]CheckObjectAccess()OS-Application[OS501]AllowAccess()OS-Application[OS258]TerminateApplication()TrustedOSA向其他OSA提供服务通过导出其他OSA可以调用的trustedfunction来实现每一个trustedOSA可以导出服务,其他OSA可以调用它。在配置阶段配置这些服务,使其能够被non-trustedOSA调用。从non-trustedOSA的调用需要OS提供一种机制(例如trap/softwareinterrupt),这种机制将所请求的服务的ID传递给OS。OS提供服务来检查一个内存区域是否能从OSA进行读/写/执行。OS规范并不支持non-trustedservice。TrustedOSA向其他OSA提供服务[OS097]调用其他OSA提供的TrustedFunction调度表ScheduleTable引入调度表的原因OSEKOS可以通过定义一系列自动开始的alarm来实现静态定义的激活机制。但如果有在运行时对alarm进行修改的需求,那么就需要保证alarms之间的相对同步。调度表通过提供一组静态定义的expirypoints封装来解决同步问题。调度表ScheduleTable调度表的结构调度表ScheduleTable处理调度表ProcessingScheduleTables[OS002]OSmodule应当按顺序处理调度表中的每一个expirypoint。[OS007]OSmodule应当允许多调度表并行被处理。[OS409]一个调度表应当被有且只有一个counter驱动。[OS410]OS模块,在任何时间,都应该能够处理每个时钟上的至少一个调度表。[OS411]OS模块应当使counter的每个tick对应于调度表中的每个tick。[OS412]OSmodule应当先处理完所有的任务激活,再设置事件。调度表ScheduleTable处理调度表的状态及其转换调度表可以在三种状态之间转换。调度表ScheduleTable处理调度表的状态及其转换[OS413]调度表应当被设置成”单次”的或者是”重复”的。[OS009]如果调度表是sing-shot的,则OS模块在处理完finalexpirypoint并且延迟fi
本文标题:AUTOSAR-OS-(Damon-Lee)
链接地址:https://www.777doc.com/doc-3615502 .html