임베디드는 라는 영역을 학습하기 위해서는 보기보다 많은 영역의 기술을 습득해야 한다.
하지만 여러가지의 기술들을 모두 전문가 수준으로 익히려면 엄청난 시간과 노력이 들어 갈것이다. 따라서 임베디는 영역에서 소프트웨어, 즉 임베디드 소프트 웨어 엔지니어가 되기 위해 알아 두어야 할것을 정리해 보도록 할것이다.
기본적으로 임베디드 엔지니어링 영역에서는 전기 전자이 영역을 빼놓을 수는 없다. 일반 적인 플랫폼 소프트웨어 개발 과는 다르게 임베디는 소프트웨어는 하드웨어와 밀접한 관련이 있고, 이 하드웨어는 기본적으로 전기로 작동 하는 경우가 많기 때문에, 이진수 혹은 16진수 표기법, 비트 연산 등 알아 두어야 할 것들이 있다.
기본적으로 전기력 이라는 것은 원자 주위를 도는 전자에 인해 발생하는데, 이 원리를 인위적으로 발생시켜 우리가 사용하는 장치등에 전원을 공급한다. 이때 트렌지스터라는 장치가 들어 오는 전류의 흐름에 따라 전류가 흐르는 상태에는 1 아닐때는 0을 표시한다. 이 말인즉 전류의 흐름에 따라 2진수를 표현하는 소자라는 것이며, 반도체 또한 기본적으로 이런 원리로 작동한다.
그리고 이런 2진법의 경우의 수를 조합해 연산을 하고 그 결과를 산출해 내는 것이 CPU 이다.
정리해 보자면,
CPU 는 수많은 트렌지스터가 집약되어 있는 계산을 할 수 있는 장치이고,
임베디드 시스템에서 많이 사용되는 MCU 는 이 CPU 와 메모리, 저장장치 , 입출력 장치들을 집약해 한 칩에 때려박은 것이다.
예를 들면 임베디는 하드웨어 설계에 범용적으로 사용되는 STM ARM core 등도 STM 이라는 회사가 ARM 이 만든 CPU 의 설계도를 가져와서 코어를 설계한뒤, 메모리, 입출력 장치등을 하나의 칩으로 만든 것이다.
그렇다면 임베디드 시스템 / 또는 임베디드 소프트웨어 등은 다른 시스템 엔지니어링 과는 어떠한 차이점이 있을까??
우선 임베디드 장치와 범용 컴퓨터의 가장 큰 차이점은 목적이다. 일반적으로 사용하는 범용 컴퓨터는 그 목적에 따라 사용 방법이 여러 가지이지만, 임베디드 장치 는 그 목적이 뚜렸하다. 즉. 특정한 기능을 위해 설계되는 경우가 많다.
임베디드의 핵심적인 컨셉은 하드웨어오 소프트웨어가 서로 조합을 이루어 특정한 목적을 수행하는 시너지 효과를 내는것이고, 시스템을 하드웨어에서 구현하면 단점들이 많이 발생함으로 이를 소프트웨어로 구현하는 경우도 대다수 이다.