커뮤니케이션 관련 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하는 경우가 많으니 이것들을 한번 의심해보자.
'자동차 임베디드 SW > Classic Autosar_이슈들' 카테고리의 다른 글
Autosar DEM 모듈 개요 (0) | 2022.11.29 |
---|---|
이슈.오토사 can 메세지 송신 누락 (0) | 2022.10.05 |
AUTOSAR COM. Rx Timeout (0) | 2022.05.30 |
오토사 can sm.autosar can sm (0) | 2022.05.30 |
오토사 com모듈.Autosar Com (2) | 2022.05.27 |