**개인 공부를 기록하는 글이다 보니 오류가 있을 수 있습니다. 부족한 부분 많은 지적 해주시면 감사드리겠습니다**
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 이므로 사용자가 자유롭게 내용을 읽고 쓸 수 있는 기억장치 이다.
EPROM은 위와 같은 기기로 지우고 작성하는 과정이 매우 번거롭다는 단점이 있다.
EEPROM은 EPROM에 비해서 지우고 작성하는 과정이 비교적 편리하다.
추가로 이렇게 ROM에 프로그래밍 하기 이전에 debugging을 하는 과정이 있는데 emulation이라고 한다.
Emulation 과정을 거친 후에 에러 발생 여부를 체크한 후에 ROM에 프로그래밍을 하는 것이다.
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에 대해 살펴보자.
'CS > [Embedded]Embedded System Software' 카테고리의 다른 글
[Embedded] Android Application Components, Android Intents (0) | 2023.06.13 |
---|---|
[Embedded] Android Runtime Walkthrough 안드로이드 실행 과정 (0) | 2023.06.11 |
[Embedded] Android Architecture (0) | 2023.06.10 |
[Embedded] Cross Development Environment (0) | 2023.05.24 |
[Embedded]Interrupt Handling (0) | 2023.05.03 |