임베디드(정확히 임베디드 시스템, embedded system)란, 기계나 기타 제어가 필요한 시스템에 대해 제어를 위한 특정 기능을 수행하는 컴퓨터 시스템으로 장치 내에 존재하는 전자 시스템이라고 정의할 수 있습니다.
좁은 범위로는 흔하게 사용할 수 있는 가전제품이나 공장 제어 시스템 등이 대표적이며, 넓은 범위로 본다면 스마트폰이나 PC 또한 임베디드 시스템에 포함된다고 볼 수 있다.
임베디드는 크게 하드웨어(HW)와 소프트웨어(SW)로 구분된다.
HW는 눈에 보이고 만질 수 있는 기계장치를 의미하고, SW는 HW를 작동시키는 코드와 프로그램을 의미한다.
임베디드는 한 개 이상의 메인 처리 코어로 제어되는 데, 이 코어는 마이크로컨트롤러(Micro Controller Unit)나 DSP(Digital Signal Processor)로 많이 사용한다.
임베디드 개발자는 이름에서부터 알 수 있듯이, 임베디드 시스템을 개발하는 개발자를 지칭하는 이름이다.
임베디드 개발자에게는 반드시 몇 가지 능력이 필요하다. 자신이 부족하다고 생각되는 것은 자기개발을 통해 성장시켜야 한다.
1) 회로 구성 및 파악
임베디드 시스템은 하드웨어를 직접 제어하는 프로그램이기 때문에 하드웨어가 어떤 회로로 구성되어 있는지 파악하는 것은 필수이다. 상황에 따라서 직접 원하는 회로를 구성해야 할 때도 있으므로 회로 관련 능력은 필수라고 할 수 있다.
2) 전자, 전기 기초 지식
전자, 전기 분야 지식은 1번 능력과 연결되는 것으로, 회로를 잘 다루기는 위해서는 전자 지식이 필요하다. 예를 들어, 전원이 과전압이라면 회로가 망가지거나 심한 경우 화재가 발생할 수도 있다.
3) 깊은 프로그래밍 언어 능력
특히 C언어와 C++, C#은 C계열 언어라고 불리우며, 임베디드 개발자가 주로 사용하는 언어이다. 요즘은 Python도 자주 사용하지만, C계열 언어를 대체하지는 못하고 있다. C언어와 C++ 언어는 프로그래밍 용도, C# 언어와 Python 언어는 GUI(Graphic User Interface) 개발 용도로 사용한다.
임베디드 소프트웨어는 얼핏 들으면 매우 어렵게 느껴질 수 있다. 하지만 쉽게 임베디드 소프트웨어를 경험해볼 수 있게 해주는 도구가 있다. 바로 '아두이노' 이다.
아두이노는 AVR 사의 ATmega328이라는 MCU를 장착하여 MCU를 간단한 코딩으로 사용할 수 있게 해주는 제품이다. 오픈소스이며, 관련한 영상도 어렵지 않게 찾을 수 있기 때문에 많은 사람들이 간단한 DIY 물품을 만들 때 주로 사용한다.
! 위의 모든 설명은 개인의 경험과 지식을 기반으로 작성된 것을 알려드립니다.