autosar 中OS模块理解
在 DaVinci Configurator 中,OS 模块(Operating System Module)是用于配置 AUTOSAR 操作系统(OS)的核心模块。它负责管理任务、中断、资源、事件、调度等操作系统功能。
1. OS 模块的作用
任务管理:创建、调度和管理任务。
中断管理:配置和处理中断服务例程(ISR)。
资源管理:管理共享资源的访问(如互斥锁、信号量)。
事件管理:通过事件实现任务间的同步。
调度管理:实现基于优先级或时间片的调度策略。
Alarm 管理:配置周期性和单次触发的定时器(Alarm)。
Application Mode 管理:管理应用程序的运行模式。
2. OS 模块的配置项
2.1 Tasks(任务)
定义任务:
创建任务并配置其属性,如优先级、栈大小、激活策略(AUTOSTART、STARTUP)等。
任务类型:
Basic Task:基本任务,不支持等待事件。
Extended Task:扩展任务,支持等待事件。
任务属性:
Priority:任务的优先级(数值越小,优先级越高)。
Activation:任务的激活次数。
Schedule:任务的调度策略(如 FULL、NON)。
~抢占式任务:设置为 FULLY_PREEMPTIVE
~非抢占式任务:设置为 NON_PREEMPTIVE
2.2 Interrupts(中断)
定义中断:
配置中断服务例程(ISR)及其属性。
中断类型:
Category 1 ISR:不调用 OS API 的中断。
Category 2 ISR:可以调用 OS API 的中断。
中断属性:
Priority:中断的优先级。
Vector:中断向量号。
2.3Resources(资源)
定义资源:
创建资源(如互斥锁、信号量)以管理共享资源的访问。
资源属性:
Ceiling Priority:资源的天花板优先级(防止优先级反转)。
2.4 Events(事件)
定义事件:
创建事件以实现任务间的同步。
事件属性:
Mask:事件的掩码值。
2.5 Alarms(定时器)
定义定时器:
配置周期性和单次触发的定时器(Alarm)。
定时器属性:
Counter:定时器关联的计数器。
Action:定时器触发时的动作(如激活任务、设置事件)。
2.6 Counters(计数器)
OsCounters 的作用
功能定义:
OsCounters 是AUTOSAR OS中用于测量时间和触发周期性行为的抽象计数器。
每个计数器关联一个硬件定时器(如STM通道),并通过周期性中断来递增计数器的值。
定义计数器:
创建计数器以支持定时器和调度。
计数器属性:
Ticks per Base:每个基本时间单位的滴答数。
Max Value:计数器的最大值。
2.7 Application Modes(应用程序模式)
定义应用程序模式:
创建应用程序的运行模式(如 STARTUP、NORMAL)。
模式属性:
Default Mode:默认的运行模式。
2.8 Scheduling(调度)
调度策略:
配置任务的调度策略(如优先级抢占式调度、时间片轮转调度)。
调度属性:
Tick Interval:调度器的滴答间隔。
3.OS 模块的代码生成
在 DaVinci Configurator 中完成 OS 模块的配置后,生成代码。 生成的代码包括:
Os.c:包含任务、中断、资源、事件等的实现。 Os_Cfg.c:包含 OS 模块的配置数据。 Os_Cfg.h:包含 OS
模块的配置宏定义。
4. OS 模块的常见问题
优先级反转: 由于资源访问导致低优先级任务阻塞高优先级任务。
解决方法:使用天花板优先级(Ceiling Priority)。
栈溢出: 任务栈空间不足导致系统崩溃。
解决方法:增加任务的栈大小。
死锁: 任务之间相互等待资源导致系统卡死。
解决方法:优化资源访问顺序。