본문 바로가기

CS/[Embedded]Embedded System Software

[Embedded]What is Embedded System?(~H/W)

**개인 공부를 기록하는 글이다 보니 오류가 있을 수 있습니다. 부족한 부분 많은 지적 해주시면 감사드리겠습니다**

Definition of an Embedded System

임베디드 시스템은 일반적인 general-purpose computer(일반적으로 우리가 사용하는 PC)와 다르게 특정 목적을 위한 function을 수행하는 computer system 혹은 computiong device를 말한다.

 

일반적인 PC는 문서작업, 그래픽 멀티미디어 작업 등 필요한 소프트웨어 설치하면 원하는 다양한 작업을 모두 진행할 수 있다.

하지만 임베디드 시스템은 특정한 목적을 위해 설계되는 것으로 범용의 목적이 아닌 정해진 용도에만 국한된 기능을 제공해 주는 시스템이다.

 

이는 SW(OS)를 포함하여 설계 되거나 SW(OS)를 포함하지 않고 설계 되는데

하드웨어로만 구현이 되면 빠른 속도를 지원하겠지만 기능의 수정과 확장에 제약이 있을 것이고 그럴 경우 많은 비용과 시간이 들게 된다.

반면 SW와 함께 개발된다면 비용도 많이 줄일 수 있고, 기능의 수정과 확장에 용이하게 된다.

 

따라서 대부분의 임베디드 시스템은 HW. SW가 모두 포함된 형태로 개발이 된다,

SW(OS)가 포함된 경우의 임베디드 시스템 소프트웨어 구조도는 다음과 같다.

 

 

보는 것과 같이 임베디드 application을 이용하여 sensing 과정을 진행하며 data collection을 하고

이후 sensing 과정을 얻은 data를 특정 목적의 function에 넣어 처리를 하고

나온 결과를 토대로 activate 하는 구조로 이루어져 있다.

 

Embedded System 의 특징 

 

특징은 위와 같다.

- special purpose를 위한 optimal design을 필요로 하며,

- small size, light weight를 필요로 하기 때문에 코드 최적화가 필요하며,

- low power를 필요로 하며,

- 작은 메모리에 sw를 올려야 하는 작업이 필요하므로 극한 환경(메모리 등 자원이 제한된 환경)에서의 개발이 중요하며,

- safety-critical operation, 즉 모든 function에 대해 모든 경우에 대해 error check를 하여야 하며(주로 wrapper function으로 다룸),

- 많은 embedded system들은 위에 언급하였듯이 메모리, 파워를 제한하며 low cost를 중요시 해야 하는 특징이 있다.

 

그렇다면 Ebedded의 구성은 어떻게 이루어 질까?

 

구성-Components (H/W)

임베디드 시스템의 HW 적 구성은 다음과 같다.

1. processor : program의 instruction을 처리해 주는 역할

2. memory : program 정보, data 를 저장하는 역할

3. Peripheral device : 주변기기와 연결하여 사용하게 해주는 역할

4. Network device : 다른 기기와 통신할 수 있게 해주는 역할

 

일반적인 PC와 임베디드 시스템의 HW를 비교해보면 다음과 같다.

processor에 대해 비교해 보면

pc는 높은 성능을 내는 Processor인데 반해

embedded system는 높은 성능은 필요 없고, 최소한의 특정 목적을 수행할 정도의 성능만 내면 된다.

 

memory에 대해 비교해 보면

pc의 경우 큰 용량을 갖고 있는데 반해,

embedded system는 마찬가지로 최소한의 특정 목적을 수행할 정도의 용량만 가지면 된다.

 

auxiliary storage는 

pc의 경우 HDD, SSD 등 보조 기억 장치를 사용 하는데,

embedded system는 주로 사용하지 않는다. (size와 무게가 중요한 요소이기 때문)

 

peripheral device는

pc의 경우 키보드, 마우스, 스피커, 프린터 등 여러 다양한 주변 기기를 연결하여 사용 가능한 반면,

embedded system는 정말 필요한 경우에만 주변 기기를 연결하여 사용한다.

 

이런 것들로 보아 embedded system는 필요한 요소만 최소한으로, 효율적으로 사용하는 것을 중요시 하는 것을 알 수 있다. 

Component(H/W) - Processor

processor 는 CPU라고도 하며, system에서 연산을 처리하는 부분으로, 사람으로 치면 뇌에 해당하는 가장 중요한 부분이다.

 

processor의 속도는 clock rate, bus width에 의해 결정된다.

clock rate가 빠를 수록 bus width가 클수록 빨라진다.

 

PC의 processor의 종류로는 intel core, AMD(RYZEN)이 있다.

embedded system는 기능 복잡성과 시스템 크기에 따라 다르게 존재하여 많은 제품이 여러 회사에서 개발, 배포된다.

 

임베디드 시스템 Processor는 그 중에서도, 크게 두가지로 구분하는데 Micro-processor, Micro-controller로 구분한다.

 

Micro-processor : includes only CPU core (data and control section).

오직 CPU core 만 존재하는 processor인 것이고

 

Micro-controller : includes CPU core, various types/sizes memory and various peripheral devices

CPU core를 포함하여 memory, peripheral device도 함께 포함하여 존재하는 Processor 인 것이다.

 

작은 기기일 수록 한 칩에 많이 넣어야 하는 micro-controller의 경우가 더 많다.

 

Component(H/W) - Memory

Memory의 주 역할은 말 그대로, program들과 data를 저장하는 것이다.

Memory의 종류는 크게 두가지로 나뉜다.

1. volatile memory : 휘발성 메모리, 전원이 꺼지면 데이터 소실

2. non-volatile memory : 비휘발성 메모리, 전원이 꺼져도 데이터 유지

 

Volatile Memory - RAM(Random Access Memory)

Random Access Memory 이므로 사용자가 자유롭게 내용을 읽고 쓸 수 있는 기억장치 이다.

휘발성 메모리 이므로 전원이 켜져야 저장이 가능하며, 컴퓨터가 켜지는 순간부터 CPU는 연산을 하고 동작에 필요한 모든 내용이 전원이 유지되는 내내 이 기억장치에 저장된다.
'주기억장치'로 분류되며 보통 램이 많으면 한번에 많은 일을 할 수 있다.
 
RAM도 종류가 두가지 있는데
 
DRAM은
 
Dynamic RAM으로 계속 refresh를 해줌으로서 기록된 내용을 유지한다.
속도가 SRAM 보다 느리며, 구조가 간단하여 집적도를 높일 수 있어, large capacity로 제작이 가능하다.
가격이 싸며 전력 소비가 적다는 특징이 있다.
 
SRAM은
 
Static RAM으로 refresh가 필요 없이 전력만 유지되면 내용이 유지된다.
속도가 DRAM 보다 빠르기 때문에 빠른 속도를 필요로 하는 cache memory로 사용되고, 구조가 복잡하여 공간을 많이 차지하므로 capacity를 크게 제작하기 어렵다는 특징이 있다.
가격이 비싸며, 메모리가 많이 필요하지 않은 곳에는 여전히 메인 메모리로도 쓰이며, 임베디드에서는 SRAM을 내장한 칩도 흔하다.
 
 
Non Volatile Memory - ROM(Read Only Memory)
 
Read Only Memory 말 그대로 읽기만 할 수 있는 Memory로 수정이 불가능하다.
 
ROM 종류로 3가지가 있는데 다음과 같다.
 
PROM (Programmable Read Only Memory, OTP)
EPROM (Erasable Programmable Read Only Memory)
EEPROM (Electrically Erasable Programmable Read Only Memory)
 
 
 
PROM 은 one-time memory로 한 번 쓰여지면 다시 지울 수 없는 메모리이고,
EPROM과 EEPROM은 데이터를 지우고 다시 쓸 수 있는 메모리인데 각각 UV, 전기를 이용하여 지운다는 방법의 차이가 있다.
EPROM Eraser, Programmer 이다.

 

 

EPROM은 위와 같은 기기로 지우고 작성하는 과정이 매우 번거롭다는 단점이 있다.

EEPROM은 EPROM에 비해서 지우고 작성하는 과정이 비교적 편리하다.

 

추가로 이렇게 ROM에 프로그래밍 하기 이전에 debugging을 하는 과정이 있는데 emulation이라고 한다.

Emulation 과정을 거친 후에 에러 발생 여부를 체크한 후에 ROM에 프로그래밍을 하는 것이다.

 
하지만 요즘 임베디드 시스템이 non-volatile memory로 ROM은 거의 사용하지 않는다.
그 이유는 만약 ROM으로 작성된 프로그램이 version update가 진행된다면, 내장되어 있는 칩들을 다시 다 꺼내 erase, write 과정을 진행해야 하는데, 이 과정이 매우 비효율이게 되는 것이다.
 
version update 가 거의 필요 없는 시스템에는 사용해도 괜찮겠지만, 그렇지 않은 경우에는 적절하지 않은 것이다.
따라서 가전제품이나 라디오 카세트 등에는 ROM이 여전히 많이 사용된다.
 
그렇다면 ROM 의 단점을 대체할 것은 무엇일까?
 
바로 Flash Memory(플래시 메모리) 이다.
 
 
Non Volatile Memory - Flash Memory
 
Flash memory는 EEPROM으로부터 발전한 형태의 Memory 이다. 따라서 마찬가지로 전기적 처리로 erase/write를 진행한다.
과거에는 펌웨어를 PROM EPROM에 주로 저장했다면, 요즘은 플래시 메모리에 주로 저장하고 있고, 업데이트가 과거에 비해 자유로워 졌다.
 
EEPROM에 비해 저렴하고, block 단위로 erase/write를 할 수 있고,  read access 속도가 빠르다.(write 는 느림)
또한 HDD 보다 충격에 강하여 각종 portable electronic devices, game console 시장에서 많은 인기를 얻었다.
 
 

Component(H/W) - Peripheral device

외부 input에 대해 반응하고, 특정 task를 수행하도록 하는 device을 의미하는데 

예시는 다음과 같다.

input device는 keyboard, mouse 등 신호를 입력하여 주는 특징이 있고,

output device는 led, 7-segment 등 동작을 수행하여 주는 특징이 있다.

 

사용자의 입력을 processor 가  polling/interrupt 방식에 의해 감지할 수 있는데,

 

polling : 하드웨어의 변화를 지속적으로 읽어 들이며 이벤트의 수행 여부를 주기적으로 검사하여 해당 신호를 받았을때 이벤트를 실행하는 방식이다.

 

interrupt : Interrupt는 하드웨어의 변화를 감지하여 외부로부터의 입력을 CPU가 알아채는 방법이다.

 

둘의 차이를 비교한 표는 다음과 같다.(출처 : https://seonggyu.tistory.com/26)

그렇다면 이런 peripheral device를 main device와 연결을 하여 통신을 해야 하는데 interconnection 방법으로

Serial Port, Parallel Port 방법이 있다.

사진은 다음과 같다.

Serial Port 는 9/25핀이 규격이고 매우 단순한 구조이고 

비트 단위로 정보를 주고 받는 직렬 통신의 인터페이스이기 때문에 속도가 매우 느리다는 특징이 있다. 

비트를 하나씩 정보를 주고 받으므로 마우스와 같은 기기에 사용이 되었다.

 

Parallel Port는 serial interface 보다 가까운 연결에 사용되었고, printer interface에 주로 사용되었다.

이는 비트 여러개를 한번에 보내는 특징이 있어 속도가 serial 에 비해 빠르다는 특징이 있다.

 

요즘은 주로 모든 port를 USB로 사용한다.

usb의 발전 역사는 다음과 같다.

추가로 apple에서 개발하였던 port도 있는데 다음과 같다.

Component(H/W) - Network device

시스템과 주변 기기 간에 통신하기 위한 device 이다.

 

wired / wireless로 나뉘며 다음과 같다.

 

지금까지는 Embedded System 의 HW에 대해 살펴보았고 다음 글에서는 SW에 대해 살펴보자.