운영체제의 역할은 크게 5가지로 나눌 수 있다임베디드 운영체제는 임베디드 시스템에서 동작하는 펌웨어의 일종이다임베디드 운영체제를 포함하는 임베디드 시스템의 소프트웨어 전체를 펌웨어라고 부른다RTOS는 realtime operating system, 실시간 운영체제를 의
임베디드 시스템에 맞는 컴파일러가 필요하다arm용 컴파일러 / x86용 컴파일러 / mips용 컴파일러우리 pc환경은 일반적으로 x86이다컴파일을 실행하는 환경과 컴파일의 결과물이 다른 환경인 경우 사용하는 컴파일러를 크로스 컴파일러라고 한다gcc는 리눅스와 각종 오픈
arm 코어에 전원이 들어가면 가장 먼저 리셋 벡터에 있는 명령을 수행한다리셋벡터는 메모리 주소 x00000000이다arm 코어는 전원이 들어오면 x00000000에서 32bit를 읽어 그 명령을 수행한다우리가 할 일은 x00000000에 명령어를 넣어주는 것이다우선

부팅 부팅이란? 시스템에 전원이 들어가고 모든 초기화 작업을 마친 후 idle 상태에서 대기하기 까지 시스템에 전원이 들어가고 arm 코어가 리셋 익셉션 핸들러를 모두 처리한 뒤 본격적인 C 코드로 진입하기 직전까지 보통은 전자가 일반적이나, 우리는 후자를

UART는 Universal Asynchronous Receiver/Transmitter의 약자이다우리가 qemu를 통해서 에뮬레이팅하고 있는 RealViewPB에서는 PL011이라는 UART 하드웨어 모듈이 붙어있다역시 이 하드웨어 모듈 또한 arm 인포센터에 데이터
UART로 입력 받기 출력은 출력버퍼가 비어있는지 확인하고(TXFE, Transmit FIFO Empty), 비어있으면 레지스터를 통해 출력버퍼로 데이터를 보냈다 입력은 그 반대로, 입력버퍼가 채워져 있는지 확인하고(RXFE, Receive FIRO Empty), 데이
사람이나 외부 시스템 같은 외부와 상호작용은 인터럽트를 통해 처리된다스마트폰 화면의 터치, 볼륨 버튼으로 음량 조절 등UART를 예시로보면 아래 순서대로 동작한다UART 하드웨어는 인터럽트를 발생시킴이를 처리하기 위해, UART 하드웨어와 인터럽트 컨트롤러를 연결시킴인

임베디드 시스템에서 타이머는 목표 카운트 레지스터와 측정 카운트 레지스터를 조합해서 만든다목표 카운트 레지스터에 목표하는 값을 지정한다측정 카운트 레지스터의 값은 증가 혹은 감소한다두 레지스터 값이 같아지면 인터럽트를 발생시킨다RealViewPB에서는 SP804라는 타
RTOS의 Task는 리눅스 같은 범용 OS의 프로세스와 같은 의미이다Task는 우선순위를 갖는다현재 진행 중인 Task가 UART 인터럽트에 의한 Task보다 우선순위가 높다면 UART Task는 기존 Task가 끝날 때 까지 기다려야 한다반대로, 모든 입력에 대한
스케줄러는 지금 실행중인 태스크 다음에 실행할 태스크가 무엇인지 골라주는 역할을 수행한다우선 가장 간단하게 라운드 로빈 방식으로 구현해보자i번째 task 다음으로 i+1번째 task를 실행이 알고리즘을 이후에 컨텍스트 스위칭에 적용하면 된다선점형(preemptive)실

컨텍스트 스위칭 우리는 태스크의 컨텍스트를 태스크의 스택에 저장하고있다 따라서 컨텍스트 스위칭을 다음 과정으로 진행된다 현재 동작하고 있는 태스크의 컨텍스트를 스택에 백업 다음 동작할 태스크의 컨텍스트 블록을 스케줄러에서 받음 2에서 가져온 태스크 컨텍

어떤 임베디드 시스템에서 사용자가 버튼을 누른 상황을 가정하자버튼에 연결된 스위치가 전기신호를 발생시킨다컨트롤러는 전기 신호를 인식한다물리적 전기신호를 소프트웨어적 인터럽트인 IRQ나 FIQ를 발생시킨다IRQ나 FIQ 핸들러에서 인터럽트 컨트롤러의 레지스터를 읽고 어떤

이벤트만으로는 많은 정보를 보낼 수 없다이벤트와 함께 데이터를 보내기 위해서는 메시징 기능을 이용해야 한다메시징 기능은 메세지를 어떻게 관리할지 결정하는 것에서 시작한다. 우리는 큐를 사용할 것이다메세지 큐는 3개를 만들 것이다메세지 큐는 front, rear를 ind
동기화는 어떤 작업을 atomic operation으로 만들어 주는 것을 의미한다해당 작업을 원자처럼 쪼갤 수 없는 것을 의미한다해당 작업이 끝날 때 까지 컨텍스트 스위칭, 멀티 코어에서는 다른 코어가 끼어드는 일이 일어나지 않는 것과 같다atomic한 작업을 crit