본문 바로가기
반응형

시스템 반도체/Arm24

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.
Arm SWAP Instruction ( 메모리 접근, SWP, MESI protocol, LDREX, STREX ) Memory access 중에 swap instruction을 보자. SWAP Instruction swp r0, r1, [r2] 이런 식으로 사용하는데, 동작은 2가지로 나눠 볼 수 있다. 1. r2가 가지고 있는 주소의 데이터를 r0에 저장하고 2. r1의 값을 r2의 메모리 값에 저장한다. 즉 swapping 동작을 수행한다. 이런 동작이 왜 필요할까? 자원을 공유하기 위해서이다. 굉장히 중요한 동작인데 예를 들어, 하나의 프린터를 여러 컴퓨터가 공유한다고 할 때, 동시에 사용할 수 없기 때문에 사용 가능한지 안 한지 계속 확인해야 한다. 이런 부분을 확인하려면 메모리에 "Lock"이라는 부분을 확인해야 한다. 즉, Lock의 정보를 불러와서 확인하고 업데이트해야 하기 때문에 STR, LDR을 사용.. 2022. 4. 7.