Aurix에는 STM 이라는 타이머가 있는데
RTOS를 만들때 OS의 System Timer로 STM을 많이 사용함.
한편 RTOS에서 일반적으로 주기 Task를 많이 사용하는데, 오토사 OS에는 동일한 Task가 동시에 최대 몇번 Activation이 가능한지 설정할 수 있다.
예를 들어 1ms 주기의 TASK A가 있는데 TASK A의 실행시간이 1ms를 초과한다면, TASK A가 아직 실행중인데 TASK A가 또 한번 Activation 될 것이다. 이런 경우가 Activation이 2번 된 것이다.
만약 해당 Task의 Activation 제한값이 1인 경우,이때 에러로 판단해서 OS hook이 발생한다.
한편, Sw디버깅을 하다보면 break point에 멈춰놓고 쓸 때가 있다.
이때 break point는 cpu를 정지시키는 것이기 때문에 STM Timer는 여전히 돌아가고 있다.
그러므로 break point에 cpu가 멈춰있는 동안에도 STM의 타이머 인터럽트가 Pending이 될 것이고.. break를 푸는 순간 타이머 인터럽트가 실행되면서 Task를 Activate 할 수 있다.
이때 break point 잡아놨을때 task가 이미 실행중인 상황이었다면 이로 인해 Activation number가 2가 될것이고..
만약 이 값을 1로 제한해놨다면 에러 훅이 발생한다.
이런 상황을 방지하려면 break point에 멈출 때 STM Timer도 멈춰놓으면 되는데, aurix는 이런 기능을 제공하고 있다.
OCS 레지스터의 SUS라는 비트필드인데 이 값을 2로 셋팅하면 된다.
그러면 CPU Break 할 때 타이머도 같이 멈춘다.
참고로 OCS 레지스터는 MCU 하나에 1개 존재하는게 아니라 타이머마다 따로 존재한다.
그래서 STM0 OCS , STM1 OCS 등이 있고
STM 말고 GTM같은 다른 타이머도 각자 OCS 레지스터가 있다.
GTM도 멈추고 싶으면 GTM의 SUS비트 필드값 바꾸면 된다.
'자동차 임베디드 SW > Aurix MCU' 카테고리의 다른 글
Aurix Flash 기본지식 (0) | 2023.01.19 |
---|---|
Aurix ADC - 컨버전 요청. Trigger (2) | 2022.09.23 |
Aurix 이슈 - SMU 와 PLL Clock 관련 (0) | 2022.09.20 |
Aurix SMU- 2 기능 구현. 순서대로 나열 (0) | 2022.09.17 |
Aurix Watchdog 주요 개념 정리 (1) | 2022.09.16 |