본문 바로가기
자동차 임베디드 SW/Classic Autosar_이슈들

이슈 - Autosar OS Error E_OS_DISABLEDINT

by 존버매니아.임베디드 개발자 2022. 9. 30.
반응형

커뮤니케이션 관련 Driver Init 작업중에 OS의 Error Hook이 발생하였다.

에러의 종류는 "E_OS_DISABEDINT"

 

이 에러가 무엇인지는 오토사 문서에 나와있는데

A Service of the OS is called insied an interrupt disable/enable pair.

 

해석하자면, OS의 Service Function은 OS System Timer 인터럽트가 Enable이 되어있는 상태에서 호출되어야 한다.

그런데 인터럽트를 disable 한 상태에서 OS Service를 호출하면 에러 훅이 발생하고 ,그 때의 에러타입이 E_OS_DISABLEDINT 이다.

 

이 에러가 발생한 연유를 알아보니..

오토사 모듈들은 각각 Exclusive Area라는 것이 있는데(없는 것도 있음)

모두 그런건 아니지만 Exclsuvie Area 를 구현하는 가장 기본적인 방법이 인터럽트를 Disable 하는 것이다.

(주로 DisableAllInterupts() 또는 SuspendAllInterrupts() 또는 SuspendOSInterrupts()  를 사용)

 

암튼 내가 사용하는 모듈에서 

Exclusive Area로 진입하면서 Interrupt를 꺼 놓은 상태에서, OS 서비스를 호출하는 바람에 에러가 발생한 것이었다.


암튼 이런 OS Error가 발생한 경우, 어디서 Interrupt가 Disable 됐는지를 찾아보자.

그리고 Exclusive Area에서 Interrupt를 Disable하는 경우가 많으니 이것들을 한번 의심해보자.

 

반응형