본문 바로가기
C++ 200제/코딩 IT 정보

ARM Processor 소프트웨어 구조와 경성 실시간 시스템

by vicddory 2018. 10. 28.

ARM Processor 소프트웨어 구조와 경성 실시간 시스템


ARM Processor 소프트웨어 구조

ARM 시스템은 구동을 위해서 4가지 전형적인 소프트웨어 컴포넌트가 요구된다. 초기화 코드(부트로더 : Boot Loader)는 하드웨어에 전원이 인가된 이후 운영체제가 실행될 수 있는 상태로 만들어주는 역할을 한다.


이 코드는 일반적으로 메모리 컨트롤러와 프로세서 캐시를 셋업하고, 일부 디바이스를 초기화시켜 주며, 운영체제 없이 초기화 코드 기반의 응용 프로그램이나 디버그 프로그램을 사용할 수 있도록 돕는다.


초기화 코드는 운영체제 이미지에게 제어권을 넘겨주기 전에 많은 태스크를 처리하는데 이 태스크들은 초기의 하드웨어 설정 코드, 진단 코드, 부팅 코드의 세 단계로 구분할 수 있다.

초기의 하드웨어 설정 코드는 이미지를 부팅할 수 있도록 타겟 플랫폼을 설정하는 일을 담당한다.

타겟 플랫폼의 일반적인 설정 과정 외에, 아래 그림과 같이 메모리 시스템은 메모리맵을 재배치하는 작업을 수행해야 한다.


초기화 코드 수행 단계 - 리맵 전 후[초기화 코드 수행 단계 - 리맵 전 후]


메모리 리맵핑 이후 계속해서 부팅과정을 수행한다는 것은, 이미지를 로드한 후 그 이미지로 제어권을 넘겨준다는 뜻이다.


또, 이미지를 로딩한다는 것은 코드와 데이터를 포함하여 모든 프로그램을 RAM으로 복사하는 것에서 부터 변수를 포함한 데이터 영역을 RAM으로 복사하는 것까지를 말한다. 일단 부팅이 되고 나면, 시스템은 프로그램 카운터를 이미지의 시작 위치를 가리킨 채 제어권을 넘긴다.


이렇게 제어권이 넘어오면 운영체제는 주변 장치, 메모리 처리 시간 등과 같은 시스템 리소스를 셋업한다.


ARM 프로세서는 다양한 운영체제를 지원하는데, 운영체제는 실시간 운영체제(RTOS)와 플랫폼 운영체제 2가지로 분리할 수 있다. RTOS는 이벤트에 대한 반응시간을 실시간으로 보장해야 한다.


실시간 시스템 중 경성 실시간 시스템

경성 실시간 시스템(Hard real-time)에서의 RTOS는 반드시 주어진 입력에 대해 제한 시간 내에 처리해야 하며, 그렇지 못할 경우 치명적인 문제가 발생하게 된다.


일반적으로 RTOS를 구동하는 시스템은 일반적으로 보조저장장치를 가지고 있지 않다. 반면 플랫폼 운영체제는 보조 기억 장치를 가지고 있어서 규모가 크고 실시간성을 필요로하지 않는 응용 프로그램을 관리하기 위하여 메모리 관리 장치를 필요로 한다.


ARM 프로세서 내부의 메모리 구성[ARM 프로세서 내부의 메모리 구성]


대표적으로 리눅스(Linux)가 플랫폼 운영체제에 속한다. 위 그림은 ARM 프로세서 내부의 메모리 구성이다. ARM 프로세서는 모바일 기기, 제어장치, 네트워크, 소형기기, 이미지 관련 등 다양한 응용 분야에서 사용되지만, ARM 프로세서는 고성능을 요하는 제품에는 잘 사용되지 않는다.


이러한 응용 시스템은 고가의 소량 생산 제품이기 때문에, ARM 프로세서를 설계할 때 이러한 유형의 응용 프로그램들은 고려하지 않는다.


ARM Processor 소프트웨어 구조와 경성 실시간 시스템


댓글