6
다수의 ARM 프로세서와 각 프로세서의 제어를 받아 특정 기능을 수행하는 하드웨어에서 발생하는 인터럽트와 주변 하드웨어에서 발생하는 인터럽트를 수신하여 마스터 프로세서로 지정된 프로세서의 인터럽트 요청 신호로 전달하는 벡터 인터럽트 제어부를 구비하는 인터럽트 중계 방법에 있어서, 상기 마스터 프로세서가 상기 벡터 인터럽트 제어부로부터 발생된 인터럽트를 인터럽트 중계부를 사용하여 슬레이브 프로세서로 지정된 프로세서로 전달하는 단계에는, 상기 마스터 프로세서가 상기 벡터 인터럽트 제어부로부터 인터럽트를 수신하는 제 411 단계와, 상기 마스터 프로세서가 상기 수신된 인터럽트에 대응하는 인터럽트 서비스 루틴으로 점프하는 제 412 단계와, 상기 마스터 프로세서가 상기 벡터 인터럽트 제어부의 인터럽트 상태 레지스터를 읽는 제 413 단계와, 상기 마스터 프로세서가 상기 읽은 인터럽트 상태 레지스터의 내용을 분석하는 제 414 단계와, 상기 마스터 프로세서는 상기 분석 결과에 따라 수신된 인터럽트가 마스터용인지 슬레이브용인지를 판단하는 제 415 단계와, 상기 단계 415의 판단 결과, 상기 마스터 프로세서는 상기 수신된 인터럽트가 슬레이브용 인터럽트일 경우 상기 인터럽트 중계부로 전송할 인터럽트 명령 레지스터 내용을 준비하는 제 417 단계와, 상기 마스터 프로세서가 상기 인터럽트 중계부의 인터럽트 명령 레지스터를 읽어서 펜드 필드를 검사하는 제 418 단계와, 상기 마스터 프로세서는 상기 인터럽트 중계부가 휴지 상태이면 상기 인터럽트 명령 레지스터에 인터럽트 중계 명령을 쓰기 동작으로 처리하는 제 419 단계와, 상기 마스터 프로세서가 인터럽트 데이터 레지스터에 상기 벡터 인터럽트 제어부의 인터럽트 상태 레지스터의 내용을 쓰는 제 420 단계와, 상기 마스터 프로세서가 상기 인터럽트 명령 레지스터의 펜드 필드를 주기적으로 검사하여 요청한 인터럽트가 상기 슬레이브 프로세서에 의해 수신되었는지 여부를 확인하는 제 421 단계와, 상기 마스터 프로세서가 상기 인터럽트 서비스 루틴을 탈출하는 제 422 단계와, 상기 단계 415의 판단 결과, 상기 마스터 프로세서는 상기 수신된 인터럽트가 마스터용 인터럽트일 경우 해당 인터럽트를 처리하는 서비스 루틴으로 분기하여 인터럽트를 처리하고 상기 단계 422를 수행하는 제 416 단계를 포함하며, 상기 마스터 프로세서의 인터럽트 중계 요청에 따라 상기 인터럽트 중계부를 통하여 상기 슬레이브 프로세서에게 FIQ 인터럽트를 요청하는 경우 상기 슬레이브 프로세서가 중계된 인터럽트를 처리하는 단계에는, 상기 슬레이브 프로세서가 상기 인터럽트 중계부로부터 FIQ를 수신하는 제 431 단계와, 상기 슬레이브 프로세서가 FIQ 서비스 루틴으로 점프하는 제 432 단계와, 상기 슬레이브 프로세서가 상기 인터럽트 명령 레지스터를 읽는다 제 433 단계와, 상기 슬레이브 프로세서가 상기 인터럽트 데이터 레지스터를 읽는 제 434 단계와, 상기 슬레이브 프로세서가 읽어온 인터럽트 명령 레지스터에서 클래스 필드를 검사하여 해당 인터럽트가 인터럽트 중계에 의한 것인지 프로세서간 통신에 의한 것인지를 판단하는 제 435 단계와, 상기 슬레이브 프로세서는 판단 결과, 인터럽트 중계에 의한 경우 중계 인터럽트 수신 루틴으로 분기하는 제 437 단계와, 상기 슬레이브 프로세서가 상기 인터럽트 명령 레지스터의 펜드 필드를 0으로 클리어하여 인터럽트를 정상적으로 수신했음을 알리는 제 438 단계와, 상기 슬레이브 프로세서가 해당 인터럽트의 근원지를 분석하는 제 439 단계와, 상기 슬레이브 프로세서가 상기 근원지 분석 결과에 대응하는 인터럽트 서비스 루틴으로 분기하는 제 440 단계와, 상기 슬레이브 프로세서가 상기 인터럽트 서비스 루틴을 탈출하는 제 441 단계와, 상기 슬레이브 프로세서는 상기 단계 435의 판단 결과, 프로세서간 통신 요청에 의한 인터럽트로 판명되면 프로세서간 통신 처리 루틴으로 분기하고 상기 단계 411를 수행하는 제 436 단계 를 포함하는 것을 특징으로 하는 프로세서간 인터럽트 중계 방법
|