AutoSAR OS

OS的启动是通过StartOS函数来实现。
在标准的AUTOSAR项目中,StartOS函数由EcuM_Init调用。StartOS()会对OS内部各组件进行初始化,激活自启动任务、报警或调度表。StartOS()的最后,会启动系统定时器,并触发第一次任务调度。
如果用户使能了相关Hook,StartOS会在所有初始化完成之后,启动系统定时器、触发第一次任务调度之前,调用用户的Hook,调用顺序为:(1)调用OsSartupHook,(2)调用各个OS-Appication的OsAppSartupHook
OS操作系统的关闭是通过调用“ShutdownOS()”函数实现。该函数会禁能所有中断,停止系统定时器运行,最终进入死循环。如果用户使能了相关Hook,ShutdownOS会在进入结尾处,进入死循环之前,调用用户的Hook。

中断向量表:存放在内存中的一个数组,内容是中断服务函数地址们(数组下标与中断优先级对应,也称为中断向量)。当中断来临,根据 中断向量查询中断向量表,根据地址找到对应的服务函数。
CAT1 interrupts:
· 是优先级最高的中断
·不与OS进行交互,不需OS支持
·大部分OS API不允许被call
·需要用户正确的配置硬件、编写处理程序并从中断中返回,用不好的话出错概率高,一般应用较少
CAT2 interrupts:
·中断发生时,RTA-OS执行内部代码,然后调用用户提供的ISR
·中断执行从ISR的指定入口点开始,一直持续到入口函数返回
·完全支持OS特征

OS的调度机制—调度表ScheduleTable
调度表由一系列按时间先后顺序排序的终结点组成,其中每个终结点都有自己的任务,由的终结点可能是激活一系列的任务,有的是设置一系列的事件,还有的可能是既激活一系列任务又设置一系列事件。
在这里插入图片描述
调度表(ScheduleTables)提供一组静态定义的**到期点(expiry points)**的封装来解决同步问题。每个到期点定义
1)处理时必须发生的一个或多个动作,其中动作是任务Task的激活或事件event的设置
2)从调度表开始点一个以滴答为单位的偏移量
3)终结点在调度表上是按偏移从小到大有序排列,因此要保证每个终结点的偏移都是独一无二的,不能有偏移相同的终结点。

每个调度表都有一个持续时间(Duration),即调度表的一次运行时间,度量单位为计数器的计数单位Tick
驱动计数器
驱动计数器默数
调度表时间
驱动计数器与调度表持续时间关系

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值