
ARM 코어는 처음 0x00000000 에 위치한 Exception Vector Table 을 통해서 Reset Vector 를 실행한다. 이 메모리 값은 수정할 수 있다. 하지만 여기서는 수정하지 않을 것임. (어떻게 하는지도 모른다.)해당 Exception 이 발생
Reset vector 는 메모리 0에 위치하고 있다.Reset Exception handler 에서 가장 먼저 해야할 일은 메모리 맵을 설정해주는 작업이다. 동작 모드 별 할당된 스택 주소를 각 동작 모드 SP 에 설정해야한다. 그 후, C 언어 main() 함수로
ARM 콘솔 입출력용 UART 하드웨어 모듈, PL011.Datasheet: https://developer.arm.com/documentation/ddi0183/latest/UARTDR : Data Register, R/W이러한 UART Register 를
UART 인터럽트의 흐름은 다음과 같다.UART Interrupt -> Interrupt Controller -> ARM CPU -> Exception Handler 인터럽트를 처리하기 위해서는 먼저 인터럽트 컨트롤러를 초기화하고 사용하는 코드를 작성하여야 한다. 그

Realview PB 에는 SP804 라는 타이머 하드웨어를 가지고 있다. https://developer.arm.com/documentation/ddi0271/latest/SP804 의 경우 측정 카운터가 감소하여 카운터가 0이 되면 인터럽트를 발생시키는 방
Task? Linux 혹은 Windows 의 프로그램 혹은 프로세스로 봐도 됨. RTOS 에서는 Task 라고 부르는 것. Task Context Block 개별 태스크 자체를 추상화하는 자료 구조를 의미. 태스크는 운영체제에서 동작하는 프로그램 그자체이다. 태스크
kernel/task.c단순 ++ 연산을 통해 다음으로 스케줄링할 태스크의 ID를 구한다. % 나머지 연산을 통해 sAllocated_tcb_index, 즉 현재 할당된 태스크의 총 갯수보다 스케줄링할 태스크의 ID가 높아지는것을 방지한다. ARM 환경에서 컨텍스트(프
인터럽트 핸들러의 구체적인 기능을 태스크로 옮기는것이 더 바람직하다. 이를 위해서 인터럽트와 태스크 간의 연결 매체가 필요한데, 이때 사용하는것이 이벤트이다.이벤트를 bitmap 형태로 만들어 Event Flag 개념을 구현한다. kernel/event.h 1 2