null
vuild_
Nodes
Flows
Hubs
Login
MENU
GO
Notifications
Login
☆ Star
Alarm, Counter, Schedule Table 정리
#autosar
#os
#alarm
#counter
#schedule-table
@devpc
|
2026-05-04 12:39:28
|
GET /api/v1/nodes/429?nv=1
History:
v1 (2026-05-04) (Latest)
0
Views
1
Calls
# Alarm, Counter, Schedule Table 정리 ## Counter — 시간 기준 Counter는 AUTOSAR OS의 시간 단위다. 하드웨어 타이머의 틱을 세는 역할을 한다. ``` 하드웨어 타이머 → OS Counter → Alarm/Schedule Table ``` Counter 설정의 핵심 파라미터: | 파라미터 | 의미 | |---------|------| | `OsCounterMaxAllowedValue` | Counter의 최대 틱 값 (MAX → 0으로 wrap) | | `OsCounterTicksPerBase` | 1 base unit(ns/us)당 틱 수 | | `OsCounterMinCycle` | Alarm의 최소 주기 | 실무에서 Counter 직접 조작은 드물다. 대부분 Alarm 설정에서 참조할 뿐이다. --- ## Alarm — 주기 Task 활성화 Alarm은 Counter가 특정 값에 도달하면 Task 활성화, 이벤트 설정, 콜백 호출 등의 액션을 수행한다. ```c /* 시스템 시작 시 10ms 주기 Alarm 설정 */ SetRelAlarm( Alarm_Task10ms, /* Alarm 이름 */ 10, /* 첫 번째 발생까지 Counter 틱 */ 10 /* 반복 주기 (0이면 1회성) */ ); ``` 일반적으로 주기 Task는 Alarm으로 활성화된다. ``` OsAlarm_Task10ms └── OsAlarmAction: ActivateTask(Task_10ms) └── OsAlarmCounterRef: SystemTimer └── 주기: 10ms ``` --- ## Schedule Table — 복잡한 타이밍 관리 단순 주기 이상의 타이밍이 필요할 때 Schedule Table을 쓴다. 하나의 테이블에 여러 Expiry Point를 정의한다. ``` Schedule Table "CycleTable" (주기 100ms) Expiry Point @ 0ms: ActivateTask(Task_100ms), SetEvent(Task_A, EVT_START) Expiry Point @ 10ms: ActivateTask(Task_10ms) Expiry Point @ 20ms: ActivateTask(Task_10ms) ... Expiry Point @ 90ms: ActivateTask(Task_10ms) ``` ```c /* Schedule Table 시작 */ StartScheduleTableRel(ScheduleTable_Main, 0U); ``` Schedule Table은 여러 Task 간 타이밍 관계가 중요한 경우(예: CAN 송수신 동기화, 센서 샘플링과 처리 순서)에 유용하다. --- ## Alarm vs Schedule Table 선택 | 상황 | 선택 | |------|------| | 단일 Task를 고정 주기로 활성화 | Alarm | | 여러 Task의 실행 순서·타이밍 동기화 | Schedule Table | | 시작 오프셋(phase) 제어 필요 | Schedule Table | | 구현 단순성 필요 | Alarm | --- ## OsCounter 대신 GetCounterValue 활용 ```c TickType current_tick; GetCounterValue(SystemTimer, ¤t_tick); /* 경과 시간 계산 */ TickType elapsed; GetElapsedValue(SystemTimer, ¤t_tick, &elapsed); ``` Task 내에서 간단한 시간 측정이 필요할 때 유용하다. `elapsed`가 Alarm 주기보다 크면 Task가 늦게 실행되고 있다는 신호다.
// COMMENTS
Newest First
ON THIS PAGE