인프런 커뮤니티 질문&답변

woospace님의 프로필 이미지
woospace

작성한 질문수

ARM Cortex-M 프로세서 프로그래밍

s336_비정렬 액세스의 득과 실

UsageFault_Handler가 실행됩니다

작성

·

330

2

88번 line  *p = v; 가 실행된 후 step 하면 UsageFault_Handler가 실행됩니다 ㅠㅠ 무엇이 문제일까요..?

답변 1

2

홍영기님의 프로필 이미지
홍영기
지식공유자

안녕하세요. 정연우님!

비정렬 액세스를 시도하는 경우 사용자는 HardFault 나 UsageFault 중 하나로 예외처리 함수가 실행되도록 할 수 있습니다.

아래와 같이 코드를 처리하셨다면, 88번 line  *p = v; 에서 UsageFault 함수가 실행되는 것이 맞습니다. ㅎㅎ

  #define CHECK_UNALIGN

  #ifdef CHECK_UNALIGN

    SCB->SHCSR = SCB->SHCSR | (7<<16); // 이 코드는 비정렬 액세스시 UsageFault 로 처리되도록 합니다.

    SCB->CCR = SCB->CCR | (1<<3); // 이 코드는 비정렬 액세스시 오류(예외)가 발생되도록 처리해줍니다.

  #endif

 

이번 챕터에서는 비정렬액세스라는 것이 어떤 개념인지 정도만 확인하시고, HardFault 나 UsageFault 을 포함한 예외처리에 대해서는 섹션 4. 예외처리와 하드웨어 인터럽트 에서 학습하시면 좋겠습니다.

또 궁금한 점 있으시면 질문남겨주세요 :)

woospace님의 프로필 이미지
woospace
질문자

아아 넵 감사합니다 ㅎㅎㅎ!!

woospace님의 프로필 이미지
woospace

작성한 질문수

질문하기