Counter定义
Counter(计数器)以tick为单位记录操作系统中发生了多少“事情”。tick(滴答)是一个抽象的单位。我们可以这样定义tick:
- 时间,例如毫秒,微妙,分钟等,然后计数器计算过去了多少时间
- 旋转,例如以度或分钟为单位,计数器计算物体旋转了多少
- 按钮按下,计数器计算按钮按下多少次
- 错误,计数器计算错误发生的频次
中断(有时是任务)用于驱动一个计数器。该驱动程序负责进行正确的OS API调用来滴答计数器,或者告诉OS计数器已经滴答到一个所需的值。
Counter驱动
OS不控制任何硬件来提供计数器驱动程序。即我们需要为每一个定义的计数器提供驱动。并将接口提供给操作系统,
驱动程序和计数器之间的接口取决于计数器的类型:
Software Counters 由API调用增加
Hardware Counters 保存在外围硬件设备中。应用程序必须提供一个复杂驱动程序,复杂驱动程序告诉OS所请求的滴答数已经过了。OS使用特殊的回调来设置请求的tick数,取消请求,获取当前计数值并获取计数器的状态。
软件计数器驱动
我们需要给每一个软件计数器提供驱动,驱动提供tick。在StartOS()调用后,所有的软件计数器初始化为0,并且向上增加。
软件计数器驱动由AUTOSAR OS标准化,如下图