目录
- 关键词
- 平台说明
- 一、Autosar OS 的位置
- 二、Autosar OS 与OSEK
- 三、TASK
- 3.1两种task
- 3.2 两种task 的区别
- 3.3task 的抢占机制
- 四、scalability class
- 五、Task Priorities
关键词
嵌入式、C语言、autosar、OS、BSW
平台说明
项目 | Value |
---|---|
OS | autosar OS |
autosar厂商 | vector |
芯片厂商 | TI |
编程语言 | C,C++ |
编译器 | HighTec (GCC) |
>>>>>回到总目录<<<<<<
一、Autosar OS 的位置
如在[AutoSar]基础部分 autosar分层架构及BSW介绍中所描述的,OS位于BSW的服务层。服务层中除了OS外还有一些为系统服务的不属于OS,如加密服务,存储服务,通信栈服务。
二、Autosar OS 与OSEK
Autosar OS 由 AUTOSAR(Automotive Open System Architecture)组织制定。OSEK由 OSEK/VDX(Offene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug / Vehicle Distributed eXecutive)组织提出。OSEK 是一种相对传统的实时操作系统标准。
相同点:
1.AUTOSAR OS 和 OSEK 都是为汽车电子控制单元(ECU)提供实时操作系统的标准。
2. 两者都是开放标准,旨在促进汽车电子系统的标准化和互操作性。
3. AUTOSAR OS 和 OSEK 都支持多任务(Multitasking)的概念,允许在同一时间内执行多个任务。
区别:
1.架构和灵活性:
AUTOSAR OS 更加灵活,允许在不同汽车平台上进行配置和调整,以适应不同的系统需求。它引入了基于组件的开发和配置概念。
OSEK 遵循较为传统的实时操作系统设计,较为固定,适用于相对简单的嵌入式系统。
2.生态系统:
AUTOSAR OS 是 AUTOSAR 标准的一部分,与其他 AUTOSAR 标准(如通信堆栈、驱动程序等)相集成,构成一个完整的汽车软件体系结构。
OSEK 生态系统相对较小,主要用于特定应用领域,如嵌入式系统。
3.通信和服务:
AUTOSAR OS 提供了丰富的通信机制和服务,支持更复杂的通信和控制策略。
OSEK 提供较为基本的通信机制,适用于相对简单的应用场景。
4.配置和可扩展性:
AUTOSAR OS 强调可配置性和可扩展性,允许根据特定的汽车项目需求进行定制和配置。
OSEK 的配置相对较为有限,更适合对标准特性有较小变化需求的项目。
总之, AUTOSAR OS 更适合大型、复杂的汽车电子系统,而 OSEK 可能更适合相对简单的嵌入式系统。
三、TASK
3.1两种task
如上图所示分为基本任务和扩展任务。扩展任务比基本任务多了一个waiting状态,当event不满足的时候会进入waiting中等待,释放cpu资源,其他低优先级task运行。当event满足后重新进入ready状态,根据优先级继续执行该extended task。
3.2 两种task 的区别
1.运行状态: basic task 在激活后运行完毕是要自动terminate的,而extende task 在激活后不会自动terminate,除非调用API去终止,它会一直判定envent。
2.执行时间: Basic Task 是周期性任务,按照预定的时间间隔执行。它的周期性执行使得它适用于处理实时性要求不是很高的任务。 Extended Task 可以是周期性任务,也可以是非周期性任务。它的执行时间可以相对较长,适用于需要较多计算和处理时间的任务。
3.资源需求: Basic Task 通常对系统资源的需求较小,适用于相对简单、短暂的任务。为了节约资源,多个basic task如果满足条件还可以共享同一个statc。 Extended Task 对系统资源的需求可能较大,因为它可以执行更为复杂的操作。因此,在配置 Extended Task 时需要考虑系统的资源限制。
4.实时性: 由于其周期性执行,Basic Task 可以满足一些对实时性要求不太严格的场景。 Extended Task 通常用于处理对实时性要求较高的任务,例如需要满足硬实时性的场景。
在Davinci configurator或者EB中我们可以根据需求选择合适的task类型。
3.3task 的抢占机制
分为抢占式和不可抢占式,可以在Davinci configurator或者EB中配置。
**非抢占式:**如果该TASK为非抢占式,当该task没有完成的时候及时高优先级的任务来了也无法preempt。
**抢占式:**如果该TASK为抢占式,当该task没有完成的时候如果高优先级的任务来了将会preempt该task。
抢占和非抢占的选择:
1.在实时性上, 抢占性任务通常用于实时系统,其中对任务响应时间的要求很高。通过抢占性任务,可以更及时地响应具有更高优先级的任务。 非抢占性任务相对较灵活,通常用于一些不太关注即时性的场景。当然,非抢占性任务还用于不可被打断的系统任务,例如init,state switch等。
2.在资源占用上:为了压榨硬件资源,大多是TASK都是抢占式的,越重要的任务优先级越高。
四、scalability class
如本文第二节所讲,OSEK 与autosar OS可以共存,在 AUTOSAR 操作系统配置中,系统设计者可以根据硬件平台和性能需求选择适当的 OsScalabilityClass。这有助于确保操作系统在不同的架构和需求中能够以最佳方式运行,并充分发挥scalability 架构的优势。选择合适的可扩展性级别可以平衡性能和复杂性,以满足特定项目的要求。
OS scalability class | SC1 | SC2 | SC3 | SC4 |
---|---|---|---|---|
OSEK OS | ✔ | ✔ | ✔ | ✔ |
Counter interface | ✔ | ✔ | ✔ | ✔ |
schedule table | ✔ | ✔ | ✔ | ✔ |
stack monitoring | ✔ | ✔ | ✔ | ✔ |
protection hook | ✔ | ✔ | ✔ | |
timing protection | ✔ | ✔ | ||
global time/synchronization support | ✔ | ✔ | ||
memory protection | ✔ | ✔ | ||
OS application | ✔ | ✔ | ||
service protection | ✔ | ✔ | ||
call trusted function | ✔ | ✔ |
五、Task Priorities
AUTOSAR OS允许任务共享优先级。当任务共享优先级时,它们将按照先进先出(FIFO)的顺序从就绪状态释放。虽然AUTOSAR OS支持共享优先级,但非常不建议这样做,因为它会阻止您在系统上执行可调度性分析。因为这样无法计算task 的响应时间。
>>>>>回到总目录<<<<<<