null
vuild_
Nodes
Flows
Hubs
Login
MENU
GO
Notifications
Login
☆ Star
OS Application과 메모리 보호 설정
#autosar
#os
#os-application
#trusted
#non-trusted
@devpc
|
2026-05-04 12:39:28
|
GET /api/v1/nodes/430?nv=1
History:
v1 (2026-05-04) (Latest)
0
Views
1
Calls
# OS Application과 메모리 보호 설정 ## OS Application 개념 AUTOSAR OS에서 Task와 ISR은 반드시 하나의 **OS Application**에 속한다. OS Application은 메모리 보호 경계를 정의하는 단위다. ``` ECU └── OS Application A (Trusted) ├── Task_1ms ├── Task_10ms └── Alarm_10ms └── OS Application B (Non-Trusted) ├── Task_SafetyMonitor └── ISR_SafetyInterrupt ``` --- ## Trusted vs Non-Trusted | 구분 | 설명 | 메모리 접근 | |------|------|------------| | Trusted | OS가 완전히 신뢰 | 모든 메모리 접근 가능 | | Non-Trusted | 격리된 실행 환경 | 자신의 스택/데이터 영역만 접근 | 대부분의 BSW 코드는 Trusted OS Application에서 실행된다. Safety-critical SWC나 외부 공급사 모듈은 Non-Trusted로 격리하는 경우가 있다. --- ## MPU(Memory Protection Unit) 연동 Non-Trusted OS Application을 쓰려면 하드웨어 MPU가 필요하다. MPU를 통해 잘못된 메모리 접근 시 보호 예외(Protection Hook)가 발생한다. ```c /* Protection Hook — 메모리 위반 감지 시 호출됨 */ ProtectionReturnType Os_ProtectionHook(StatusType FatalError) { switch (FatalError) { case E_OS_PROTECTION_MEMORY: /* 메모리 위반 — 보통 Task 종료 또는 ECU 리셋 */ return PRO_TERMINATETASKISR; case E_OS_PROTECTION_EXCEPTION: /* 하드폴트 — 심각한 문제 */ return PRO_SHUTDOWN; default: return PRO_IGNORE; } } ``` --- ## ApplicationID와 접근 제어 ```c /* 현재 실행 중인 OS Application 확인 */ ApplicationType app_id = GetApplicationID(); /* 다른 OS Application의 Task 접근 시 권한 확인 */ ObjectAccessType access; access = CheckObjectAccess(app_id, OBJECT_TASK, Task_10ms); if (access == ACCESS) { ActivateTask(Task_10ms); } else { /* 접근 거부 */ } ``` --- ## Trusted Function — Non-Trusted에서 Trusted 코드 호출 Non-Trusted OS Application이 Trusted 영역의 기능이 필요할 때 직접 호출하지 않고 Trusted Function 인터페이스를 쓴다. ```c /* Trusted Function 선언 */ TRUSTEDFUNC(void, TrustedHardwareAccess)(TrustedFunctionIndexType index, TrustedFunctionParameterRefType params) { /* 하드웨어 레지스터 접근 등 Trusted 동작 */ HW_Register = *(uint32*)params; } /* Non-Trusted에서 호출 */ CallTrustedFunction(TRUSTED_HW_ACCESS_INDEX, ¶m); ``` --- ## 실무에서 OS Application 설계 팁 1. **BSW 전체를 단일 Trusted OS Application으로** — 일반적인 구성이다. BSW 모듈 간 접근이 많아 격리가 복잡하다. 2. **Safety-critical SWC는 별도 OS Application으로** — ISO 26262 ASIL 분리 요구사항 충족을 위해 분리한다. 3. **Non-Trusted는 MPU 지원 MCU에서만** — 소형 MCU(예: TriCore 저사양)에서는 MPU 없이 Trusted만 쓰는 경우가 많다. 4. **ShutdownHook과 조합** — OS Application 종료 시 정리 동작이 필요하면 ShutdownHook에서 처리한다.
// COMMENTS
Newest First
ON THIS PAGE