10.07.2015 Views

PDF version - ARM Information Center

PDF version - ARM Information Center

PDF version - ARM Information Center

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

프로세서 예외 처리예외 테이블 기록벡터 테이블을 채우는 가장 쉬운 방법은 스캐터 로딩 설명 파일을 사용하여 함수포인터의 C 배열을 메모리 주소 0x0에 배치하는 것입니다. C 배열을 사용하여 초기 스택 포인터, 이미지 진입점 및 예외 처리기의 주소를 구성할 수 있습니다 (예제 6-17 참조) .참고예제 6-17에 나와 있는 일부 기능은 <strong>ARM</strong>v6-M에서 사용할 수 없습니다. 정렬을유지하려면 벡터 테이블에 0을 입력하여 공간을 예약해야 합니다.스캐터 로딩에 대한 자세한 내용은 링커 사용 설명서에서 5장 스캐터 로딩 설명파일 사용을 참조하십시오.예제 6-17 예외 처리기의 C 구조체 예제/* Filename: exceptions.c */typedef void (* const ExecFuncPtr) (void) ;/* Place table in separate section */#pragma arm section rodata="exceptions_area"ExecFuncPtr exception_table[] = {(ExecFuncPtr) &Image$$<strong>ARM</strong>_LIB_STACKHEAP$$ZI$$Limit,/* Initial Stack Pointer, from linker-generated symbol */(ExecFuncPtr) &__main,/* Initial PC, set to entry point*/&NMIException,&HardFaultException,&MemManageException, /* <strong>ARM</strong>v7-M only (0 for <strong>ARM</strong>v6-M) */&BusFaultException, /* <strong>ARM</strong>v7-M only (0 for <strong>ARM</strong>v6-M) */&UsageFaultException, /* <strong>ARM</strong>v7-M only (0 for <strong>ARM</strong>v6-M) */0, 0, 0, 0, /* Reserved */&SVCHandler, /* Only available with OS extensions */&DebugMonitor, /* <strong>ARM</strong>v7-M only (0 for <strong>ARM</strong>v6-M) */0, /* Reserved */&PendSVC, /* Only available with OS extensions */(ExecFuncPtr) &SysTickHandler, /* Only available with OS extensions*//* Configurable interrupts start here...*/&InterruptHandler,&InterruptHandler,&InterruptHandler/*:<strong>ARM</strong> DUI 0203IK Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 6-35Unrestricted AccessNon-Confidential

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

Saved successfully!

Ooh no, something went wrong!