
서강대학교 23년도 마이크로프로세서응용실험 7주차 Lab07 결과레포트 (A+자료)
본 내용은
"
서강대학교 23년도 마이크로프로세서응용실험 7주차 Lab07 결과레포트 (A+자료)
"
의 원문 자료에서 일부 인용된 것입니다.
2024.03.26
문서 내 토픽
-
1. 인터럽트의 동작원리인터럽트는 마이크로프로세서에서 외부에서 스위치가 눌리거나 통신에서 신호가 수신되는 등 예기치 못한 상황, 사건을 의미한다. 인터럽트가 발생하면 프로세서는 명령어 수행을 마친 후, 해당 인터럽트의 처리를 하는 서브루틴인 interrupt service routine(ISR)을 수행하게 된다. 인터럽트 처리 과정에서 stack이 어떻게 사용되는지, vector table의 구성과 역할, 인터럽트 처리에 사용되는 레지스터들의 종류 및 역할 등을 이해한다.
-
2. 인터럽트 pending 동작외부 인터럽트가 발생하면 곧바로 처리되는 것이 아니라, 인터럽트가 처리될 때까지 대기하게 된다. 이렇게 대기하는 상태를 pending이라고 하며, 프로세서는 pending되어있는 인터럽트들을 우선순위에 맞게 처리한다. 인터럽트 요청이 계속해서 active일 경우, ISR 처리가 끝난 후에 다시 pending될 수 있기 때문에, 인터럽트 처리 시 인터럽트 요청 신호를 software적으로 clear할 필요가 있다.
-
3. 인터럽트 처리 순서인터럽트가 발생할 때, 그리고 ISR을 수행한 후 복귀할 때, 프로세서는 일련의 과정을 기계적으로 수행한다. 인터럽트 발생 시 Stacking, Vector fetching, SP, LR, PC update 등의 과정을 거치며, ISR 수행 후 복귀할 때는 Unstacking으로 레지스터와 SP를 복귀하고, NVIC 레지스터의 active bit이 해제되는 과정이 포함된다.
-
4. NVIC 레지스터STM32F103xx 프로세서에는 NVIC(Nested Vectored Interrupt Controller)라는 인터럽트 처리를 위한 controller가 있다. NVIC의 레지스터들은 외부 인터럽트를 제어하며, 인터럽트 사용 여부, pending 상태, active 상태 등을 확인하고 설정할 수 있다.
-
5. 인터럽트 우선순위vector table에는 각 인터럽트의 priority level이 지정되며, 최대 256단계의 우선순위 부여가 가능하다. 프로세서는 pending된 인터럽트들을 우선순위에 맞게 처리하며, 동일한 우선순위의 인터럽트가 발생하면 인터럽트 번호가 작은 것이 높은 우선순위를 갖는다.
-
6. EXTI(External interrupt/event controller)EXTI는 외부 소자, 장치로부터의 18개 신호를 감지하여, 인터럽트를 요청할 수 있게 한다. 인터럽트의 유형, 신호의 edge 방향 등을 선택할 수 있으며, AFIO_EXTICE 레지스터를 통해 어떤 GPIO 신호를 인터럽트로 사용할지 선택할 수 있다.
-
7. 인터럽트 latencyinterrupt latency는 인터럽트 요청이 있은 후, ISR이 수행되기까지의 지연시간이다. Cortex-M3는 vector fetch와 stacking이 동시에 진행되어 최소 12 cycles이 소요되며, late-arrivals 기법을 통해 latency를 줄일 수 있다.
-
8. 소프트웨어 인터럽트ISR은 소프트웨어적으로 수행할 수 있으며, NVIC_ISPRx의 해당 bit에 1을 쓰거나, NVIC_STIR에 인터럽트 번호를 쓰면 software interrupt를 수행할 수 있다.
-
9. System control block (SCB)SCB는 인터럽트의 상태, vector table offset 변경, priority group 설정, system exception의 priority level 설정 및 제어와 관련이 있는 블록이다.
-
10. 추가실험추가실험을 통해 fault exception 처리, interrupt race condition 해결, unaligned memory access exception 처리 등을 실험하였다. 이를 통해 프로세서의 다양한 예외 상황 처리 방식을 이해할 수 있었다.
-
1. 주제2: 인터럽트 pending 동작인터럽트 pending은 인터럽트 요청이 발생했지만 아직 처리되지 않은 상태를 의미합니다. 이 경우 CPU는 현재 실행 중인 프로그램을 중단하고 인터럽트 서비스 루틴(ISR)을 실행하지 않습니다. 대신 인터럽트 요청을 기록하고 있다가 CPU가 해당 인터럽트를 처리할 수 있는 상황이 되면 ISR을 실행합니다. 이를 통해 CPU는 중요한 작업을 중단하지 않고도 다양한 입출력 장치의 요청을 효과적으로 처리할 수 있습니다.
-
2. 주제4: NVIC 레지스터NVIC(Nested Vectored Interrupt Controller)는 ARM Cortex-M 프로세서에서 인터럽트를 관리하는 핵심 부품입니다. NVIC 레지스터는 인터럽트 관련 설정을 제어하는 데 사용됩니다. 여기에는 인터럽트 우선순위, 활성화/비활성화, 보류 상태 등의 정보가 포함됩니다. NVIC 레지스터를 적절히 설정하면 CPU가 인터럽트를 효과적으로 처리할 수 있습니다. 또한 중첩 인터럽트 처리를 지원하여 복잡한 시스템에서도 안정적으로 동작할 수 있습니다.
-
3. 주제6: EXTI(External interrupt/event controller)EXTI(External Interrupt/Event Controller)는 외부 입력 신호를 감지하여 CPU에 인터럽트를 전달하는 기능을 수행합니다. EXTI는 GPIO 핀의 상태 변화(상승, 하강, 레벨)를 감지하고 이를 인터럽트로 변환합니다. 이를 통해 CPU는 외부 장치의 이벤트를 신속하게 처리할 수 있습니다. EXTI는 다양한 트리거 모드를 지원하며, 이를 통해 사용자는 자신의 요구사항에 맞는 인터럽트 동작을 구현할 수 있습니다. 따라서 EXTI는 임베디드 시스템에서 매우 중요한 기능을 수행합니다.
-
4. 주제8: 소프트웨어 인터럽트소프트웨어 인터럽트는 프로그램 코드 내에서 명시적으로 발생시키는 인터럽트입니다. 이는 하드웨어 인터럽트와는 달리 CPU가 직접 제어할 수 있는 인터럽트입니다. 소프트웨어 인터럽트를 활용하면 프로그램 실행 중에 특정 작업을 즉시 처리할 수 있습니다. 예를 들어 디버깅, 예외 처리, 시스템 콜 등에 소프트웨어 인터럽트를 사용할 수 있습니다. 또한 하드웨어 인터럽트와 조합하여 복잡한 시스템을 구현할 수 있습니다. 따라서 소프트웨어 인터럽트는 임베디드 시스템 개발에 매우 유용한 기능입니다.
-
5. 주제10: 추가실험인터럽트 관련 실험을 통해 다양한 기능과 동작 원리를 이해할 수 있었습니다. 특히 NVIC 레지스터 설정, 인터럽트 우선순위 조절, EXTI 활용 등의 실험은 인터럽트 처리에 대한 깊이 있는 이해를 돕습니다. 또한 소프트웨어 인터럽트와 SCB 레지스터 활용 실험을 통해 프로세서 제어 기능을 익힐 수 있었습니다. 이러한 실험들은 실제 임베디드 시스템 개발에 큰 도움이 될 것입니다. 향후 추가적인 실험을 통해 인터럽트 처리 최적화, 실시간성 향상 등 더 심도 있는 주제를 다루면 좋을 것 같습니다.