10.07.2015 Views

PDF version - ARM Information Center

PDF version - ARM Information Center

PDF version - ARM Information Center

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

프로세서 예외 처리인터럽트 우선순위예제 6-6에서는 최대 32가지의 인터럽트 원인을 적절한 처리기로 디스패치합니다. 이 예제는 일반적인 인터럽트 벡터 (IRQ) 와 함께 사용할 수 있도록 설계되었으므로 0x18 위치에서 분기됩니다.외부 VIC (Vectored Interrupt Controller) 하드웨어는 인터럽트의 우선순위를 지정하고 I/O 레지스터에서 우선순위가 높은 활성 인터럽트를 나타내는 데 사용됩니다.예제 코드에 사용되는 요소는 다음과 같습니다.IntBaseIntLevelR13인터럽트 컨트롤러의 기본 주소를 저장합니다.우선순위가 가장 높은 활성 인터럽트가 들어 있는 레지스터의 오프셋을 저장합니다.작은 전체 내림차순 스택을 가리키는 것으로 가정합니다.인터럽트는 이 코드로의 분기를 포함하여 모두 10개의 명령어 다음에 활성화됩니다.각 인터럽트의 특정 처리기는 모든 레지스터가 스택에 저장된 상태에서 두 명령어를 더 실행한 후에 시작됩니다.또한 각 처리기의 마지막 세 개 명령어는 인터럽트가 다시 해제된 상태에서 실행되므로 스택에서 SPSR을 안전하게 복구할 수 있습니다.참고Application Note 30: Software Prioritization of Interrupts에서는 이 설명서에서처럼VIC 하드웨어를 사용하는 것이 아니라 소프트웨어를 사용하여 여러 원인으로 인한 인터럽트의 우선순위를 결정하는 방법에 대해 설명합니다.예제 6-6 처리기로 인터럽트 디스패치; first save the critical stateSUB lr, lr, #4 ; Adjust the return address; before we save it.STMDB sp!, {lr} ; Stack return addressMRS lr, SPSR ; get the SPSR ...PUSH {R12,lr} ; ... and stack that plus a; working register too.; Now get the priority level of the<strong>ARM</strong> DUI 0203IK Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 6-17Unrestricted AccessNon-Confidential

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!