기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세요. 저는 대학원에서 임베디드 OS를 공부하고 있는 학생입니다.

 

현재 arm11mpcore에서 RTOS를 포팅하고 있는데요.

 

제가 궁금한것은 low vector table을 high vector table로 바꾸어 사용하려고 하는데

 

 mrc p15, 0, r0, c1, c0, 0
 bic r0, r0, #0x00002300 @ clear bits 13, 9:8 (--V- --RS)
 bic r0, r0, #0x00000087 @ clear bits 7, 2:0 (B--- -CAM)
 orr r0, r0, #0x00000002 @ set bit 2 (A) Align
 orr r0, r0, #0x00001000 @ set bit 12 (I) I-Cache
 orr r0, r0, #0x00002000 @ set bit 13 high vector
 mcr p15, 0, r0, c1, c0, 0

위 코드를 통하여 exception vector를 low에서 high로 설정하였습니다.

 

인터럽트가 발생하게 되면 0xffff0000 부분으로 점프를 하게 되는데

 

문제는 벡터 테이블이 그 주소에 복사가 되지 않아서 해당 핸들러가 실행이 되지 않습니다.

 

align과 map 지시어 를 사용하여 0xffff0000번지로 할당하려고 하였지만 컴파일 옵션 문제인지는 몰라도

 

컴파일 에러가 납니다.

 

cortex a8의 경우엔 코프로세서 c12를 이용하여 할 수 있었는데 arm11mpcore에는 버전이 틀려서 그런지 같은 역할을 하는

 

코프로세서 레지스터가 없었습니다.

 

벡터테이블을 0xffff0000에 복사 하는 방법을 알고 싶습니다.

 

List of Articles
번호 제목 글쓴이 날짜 조회 수
» high vector table에 관한 질문입니다. 1day24h 2011-10-08 987

사용자 로그인