본문 바로가기
반응형

시스템 반도체48

Arm Interrupt Handling ( 인터럽트, Nested Interrupt ) Interrupt (Exception) Handling SW에서 볼 때는 중간에 어떤 인터럽트가 일어나는지 알 수 없다. 왜냐면 그냥 쭉 실행되는 것처럼 보이기 때문이다. 그렇다면 HW에서 어떻게 동작하는지 알아보자. 위에 1번에서 일어나는 일은 다음과 같다. 1. exception mode일 때의 CPSR를 SPSR에 저장한다. (CPSR과 SPSR은 같은 구조를 갖기 때문) 2. exception mode일 때의 PC값을 lr( r14 )에 저장한다. 3. CPSR의 mode bitv(i bit or f bit = 1)를 변경하여 해당 exception mode로 변경한다. ( interrupt 처리 중에 다른 interrupt는 받지 않겠다는 의미다. IRQ모드로 바뀌면 i bit가 1로 변경되고 .. 2022. 5. 31.
Arm Interrupt Vectors Tables (인터럽트 벡터 테이블, IVT) Interrupt (Exception) Vectors Tables 2022.05.31 - [내가 하는 전자공학/Arm] - Arm Interrupt & Exception ( 인터럽트, 예외, 차이점 ) Arm Interrupt & Exception ( 인터럽트, 예외, 차이점 ) 이번에는 Interrupt와 Exception에 대해 알아볼까 한다. 사실 이 두 개는 혼용하여 사용하거나 대동소이하다. 굉장히 중요한 개념이니 천천히 알아보자 Interrupt 먼저 interrupt란 뭔지 알아보자 interrupt는 wpaud16.tistory.com 이전 포스팅을 보면 테이블이 생긴 이유를 알 수 있다. 간단히 말하면 Interrupt 혹은 Exception 동작이 발생되면 ARM에선 Vectors tab.. 2022. 5. 31.
Arm Interrupt & Exception ( 인터럽트, 예외, 차이점 ) 이번에는 Interrupt와 Exception에 대해 알아볼까 한다. 사실 이 두 개는 혼용하여 사용하거나 대동소이하다. 굉장히 중요한 개념이니 천천히 알아보자 Interrupt 먼저 interrupt란 뭔지 알아보자 interrupt는 간단히 말해서 동작하고 있던 걸 다른 동작으로 바꾸는 것이다. 모든 I/O는 interrupt를 발생시키는데 I/O의 출력이 CPU에 연결돼 있다. 종류로는 hardware interrupt (하드웨어)와 software interrupt(소프트웨어)가 있다. 아래서 더 알아보자 interrupt는 Privilege mode에서 돌아간다. Privilege mode란, 일종의 특권을 가진 상태에서 돌아간단 의미다. 막강한 권력을 가졌다고 보면된다. 예를 들면 리눅스에서 .. 2022. 5. 31.
Arm Thumb ( blx, bx, Thumb2, IT명령어, if then ) 먼저 Thumb의 종류에는, Thumb과 Thumb2가 있다. Thumb은 2byte 명령어고, Thumb2는 2byte, 4byte로 명령어를 2개로 나눴다. CPSR 레지스터에 J, T bit가 있는데 이게 01로 set 되면 thumb 모드로 바뀐다. Thumb은 뭘까?? Arm 명령어를 Thumb 명령어로 바꾸는 것이다. 바꾸는 이유는 더 짧은 실행 시간과 code density 즉, 코드 사이즈 줄이기 때문이다. 이렇게 바꾸는 걸 Interworking이라 부른다. 굳이 긴 명령어가 필요없고 thumb이 지원하는 선에서 동작 가능하다면 변환해서 동작한다. 어떻게 서로 전환할까?? BLX(Branch link) , BX를 이용하여 함수 이름이나 레지스터를 뒤에 적어줘서 바꾼다. 예를 들어보자, 하.. 2022. 4. 26.
Arm UART ( TxFIFO, RxFIFO, Baud rate ) 모든 I/O device (GPIO, UART, Timer...)는 크게 3가지 종류의 레지스터를 가지고 있다. 1. Configuration (or control, mode) Register - UART을 통해 CPU와 노트북이 서로 데이터를 주고받는데. 정의해야 할 부분들이 있다. 가령 속도는 얼마로 할지 어떤 패킷 format을 사용할지와 같은 Configuration를 서로 정의해야 한다. 이런 정보가 Configuration register들에 들어있다. ex) control reg.. 2. Data Register - 데이터를 저장하는 레지스터이다. ex) TxFIFO, RxFIFO.. 3. Status Register - 상황에 따라 달리 세팅되어 동작을 관리한다. CPU는 이 레지스터를 읽.. 2022. 4. 14.