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.

프로세서 예외 처리유형의 인터럽트에 대한 처리기에서 뱅크 FIQ 레지스터를 사용하지 않는지 확인해야 할 수 있으며, 다른 일반 IRQ 처리기의 경우 R8-R12를 스택에 저장해야 합니다.또한 마이크로컨트롤러 프로필은 우선순위가 높은 NMI (마스크할 수 없는 인터럽트) 도 제공하는데, 이 인터럽트는 비활성화할 수 없습니다.간단한 C 예외 처리기마이크로컨트롤러 프로필용 예외 처리기는 시스템 상태를 저장하거나 복원할 필요가 없으며 일반적인 ABI 호환 C 함수로 기록될 수 있습니다. 그러나 __irq 키워드를 사용하여 함수를 인터럽트 루틴으로 식별하는 것이 좋습니다 (예제 6-18 참조) .예제 6-18 간단한 C 예외 처리기__irq void SysTickHandler (void){printf ("----- SysTick Interrupt -----") ;}8바이트 스택 정렬<strong>ARM</strong> 아키텍처용 ABI (응용 프로그램 바이너리 인터페이스) 에서 스택은 여러 소스 파일의 함수 간 호출과 같은 모든 외부 인터페이스에서 8바이트로 정렬되어야합니다. 그러나 코드에서는 리프 함수 등에서 8바이트 스택 정렬을 내부적으로유지할 필요가 없습니다. 즉, IRQ가 발생할 때 스택이 올바르게 8바이트로 정렬되지 않을 수도 있습니다.<strong>ARM</strong>v7-M 프로세서에서는 예외가 발생할 때 스택 포인터를 자동으로 정렬할 수있습니다. 주소 0xE000ED14의 구성 제어 레지스터에서 STKALIGN (비트 9) 을 설정하여 이 동작을 활성화할 수 있습니다.<strong>ARM</strong>v6-M 프로세서는 이 동작을 항상 활성화합니다. 그러나 이미지가<strong>ARM</strong>v7-M 프로세서와 호환되도록 STKALIGN (비트 9) 을 수동으로 설정하는 것이 좋습니다.<strong>ARM</strong> DUI 0203IK Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 6-37Unrestricted AccessNon-Confidential

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

Saved successfully!

Ooh no, something went wrong!