안녕하세요. 저는 대학원에서 임베디드 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에 복사 하는 방법을 알고 싶습니다.