ARM Data Abort Exception 오류 발생 원인..??
글쓴이: 토마토 / 작성시간: 월, 2006/10/09 - 1:08오후
현재 ADS 를 이용해서 S3C2440에 펌웨어 레벨의 프로그래밍을 하고있습니다.
그런데.. 잘 동작하다가
Data abort Exception 이 발생하는 경우가 생깁니다.
해당 루틴 부분에.. uart 출력을 넣어서 대략 위치를 잡으려고 했지만..
발생하는 부분도..고정적이지가 않습니다..
약간의 문제를 생각해본결과 인터럽트 루틴상에서 변수 엑세스 할때 발생하는 것을 생각 됩니다.
현재 타이머 인터럽트를 3개 사용하고 있고
인터럽트에서 저장 되거나 변경 되는 버퍼를 가지고
메인 loop 에서 분석하고 처리 하고 있습니다.. 이때 변수 엑세스시..
Data abort exception 이 발생할 수 있는건지...
main loop 의 반복 주기 딜레이를 높게 줄 수록
data abort exception 발생 시기가 좀 늘어나는 것 같습니다..
하지만.. 시기만 좀 늘어나고.. 계속 하다보면.. exception 발생은 하고 있는 상태입니다.
이부분에 대한 해결 방법이 없을 까요??
Forums:
Data abort exception은
Data abort exception은 x86에서 segmentation fault와 같습니다.
즉 잘못된 메모리 영역을 건드려서 NULL포인터를 간접접근 한다든지 모 그런경우에 에러가 나죠..
OS는 어떤걸 쓰나요??
올려주신 내용으로 추정해보면
interrupt와 main loop안에서 변수를 share하는걸로 보이는데요
share하는 변수들이 nonpageable영역에서 선언 되어있는 것들인가요?
또한 atomic하게 접근하는건 맞는지요??
제 생각엔 interrupt걸릴때 접근하는 변수들의 메모리 영역이 page out되어있어서 Data abort가 나는걸로 추정됩니다.
좀더 정확한 디버깅을 원하신다면 T32를 돌려보심이...
댓글 달기