작성
·
307
1
올려주신 수업 자료에서 아래 코드를 하는 이유가 hard fault라고 적어 노셨습니다.
아래 코드가 어떤 의미인지 설명 부탁드립니다
SCB->SHCSR = SCB->SHCSR | (7<<16);
답변 1
1
안녕하세요. 김인규님!
CORTEX-M 에서의 오류 유형은 크게 USAGE FAULT, BUS FAULT, MEM MANAGE FAULT 로 나뉩니다. 각각 예외처리 핸들러를 지원하고요. 하지만 실제로 오류가 발생하면 이들 예외처리 핸들러가 실행되지 않고, 하드폴트 핸들러가 대신 실행됩니다. 오류의 원인과 관계없이 디폴트로 하드폴트 핸들러가 실행되도록 구현되어 있기 때문인데요.
Cortex-M 프로세서의 System Handler Control and State Register (SHCSR)은 시스템 핸들러의 활성화 상태와 제어를 위한 특수한 레지스터입니다. SHCSR 레지스터의 16, 17, 18번 비트를 활성화해 놓으면 하드폴트 핸들러가 실행되는 대신, 실제 해당 오류에 해당하는 예외처리 핸들러가 실행되도록 할 수 있습니다.
이와 관련된 강의 영상은 s521_시스템 컨트롤 블록 SCB 13:33 입니다
▲ 출처: cd00228163-cortex-m3-programming.pdf
헉,,ㅜㅜ 너무 디테일하게 설명해 주셔서 감사합니다!!