본문 바로가기
자동차 임베디드 SW/Aurix MCU

Aurix Contex Save Area 와 aurix trap 공부

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

Aurix CSA 컨셉
Aurix Trap 공부

함수콜,인터럽트,트랩 호출시
Upper Context는 자동으로 저장.
Lower Context는 별도의 istruction 호출해야 저장됨

upper,  lower context에 저장되는 정보는 아래와 같다.


트랩이 발생된 위치 찾기
A11 레지스터(Return Address. 줄여서 RA)
레지스터를 활용한다.

트랩발생시 최초로 호출되는 코드.
(트랩 백터테이블에 등록돼있는 함수)
에서 곧바로 트랩 발생위치를 찾으려면
이때는 CSA에 저장된거 말고 현재의 RA 레지스터값을 읽으면된다.
트랩 발생 -> 현재의 context가 저장 -> RA 값 업데이트 및 트랩 루틴 실행.
이므로, 이때는 RA 값을 읽어보면 트랩 발생 위치가 된다.

만약, 트랩 루틴에서 곧바로 확인하는게 아니라, 트랩루틴에서 한번더 별도의 함수콜을 하고. 해당 함수에서 트랩 발생 위치를 찾으려면?
이때는 현재의 RA 값이 아니라 CSA에 저장된 RA 값을 확인해야 트랩 발생  위치 확인가능.
왜냐면,
지금 상황은 트랩 발생 후, 트랩루틴에서 함수를 한번 더 불렀기때문에.이때 현재의 RA에는 트랩 유발 위치가 아니라. 트랩루틴의 주소를 가르키고 있기 때문.


트랩 발생 위치 관련 유의사항
한편, aurix 트랩에는 sync , Async타입이 있다.
클래스,TIN에 따라 구분되는데.

sync 타입 트랩 발생하여 트랩루틴 실행될때는 RA 레지스터에 트랩을 유발시킨 주소가 들어있다.

반면 aync 타입 트랩은 트랩유발시킨 코드의 그 다음 코드(트랩이 발생하지않았다면 원래 실행됐어야 할 코드) 위치가 담겨있다.

이 점 유의하자.

반응형

'자동차 임베디드 SW > Aurix MCU' 카테고리의 다른 글

Aurix Swap과 OTA  (2) 2024.09.25
Aurix Trap 발생시키기  (0) 2024.09.05
기능안전과 mcu safety manual 개념이해  (0) 2024.08.14
Aurix Smu Test하기  (0) 2024.07.12
Aurix SMU 헷갈리는 것 기록  (0) 2024.07.04