본문 바로가기
IT

소프트웨어와 하드웨어의 기본 동작 원리

by 제가이버 2020. 10. 24.
반응형

임베디드 시스템이란 무엇인가? (4편)


소프트웨어와 하드웨어의 기본 동작 원리

처음 컴퓨터 전원 버튼을 누른 순간 컴퓨터 보드 안에 이미 내장되어 있던 BIOS 프로그램이 실행되어 부팅 순서를 결정하고 부팅 가능한 운영체제가 선택됨과 동시에 해당 운영체제가 부팅하기 시작한다.

 

부팅이 끝난 운영체제 상에서 원하는 애플리케이션을 실행시키기 위해 마우스로 더블 클릭하는 순간 운영체제는 해당 애플리케이션을 메모리에 상주시킨 뒤 이를 실행시키게 되며 이때 만약 USB 같은 외부 디바이스들을 제어할 필요가 있을 경우 이를 제어하게 된다.


임베디드 시스템 역시 이와 마찬가지다. 전원이 들어감과 동시에 이미 내장되어 있던 부트로더가 실행되고, 이후 해당 임베디드 리눅스나 윈도우 CE 같은 운영체제가 실행되는, 이와 같은 소프트웨어와 하드웨어의 동작 원리에 대해 개발자는 이들이 실행되는 구조를 그려가며 반드시 이해해야만 할 것이다.

<그림 7> 밥솥용 임베디드 리눅스 소스 개발과정

하드웨어 개발

필자의 생각에 이는 모든 개발자들에게 해당되는 사항은 아니라고 본다. 자신의 전공 분야에 따라 전문적으로 개발하는 분야가 다른 만큼 소프트웨어 개발자들은 하드웨어 개발 방법에 관해 사실 몰라도 된다. 그러나 하드웨어를 개발하는 방법을 몰라도 된다는 얘기가 하드웨어를 몰라도 된다는 얘기는 아니다.


아무리 컴퓨터상에서 소프트웨어를 전문적으로 개발하는 사람이라 할지라도 해당 컴퓨터의 하드웨어 사양(스펙)을 모른다면 어찌 원하는 성능을 얻을 수 있겠는가?


이런 관점에서 보면 어떤 개발자라도 하드웨어에 대해 기본적으로 알아야 하겠지만 임베디드 개발자의 경우엔 소프트웨어 전문 개발자들보다 조금 더 깊이 알아둘 필요가 있다. 그래야 개발자가 원하는 대로 하드웨어를 제어할 수 있을 테니까.

 

프로그래밍 언어

이는 사실 언급할 필요도 없는 사항일지 모른다. 전쟁에 참여하는 군인이 총을 놓고 간다면 어찌 되겠는가? 그러나 필자가 겪어 본 바에 따르면 총을 놓고 가는 군인들이 더러 눈에 보여 굳이 언급을 하고자 한다. 요즘에 가끔 TV 를 보면 정말 화려한 가수나 연예인들이 많이 보이는 데 이는 눈에 보이는 것만을 쫓고 있는 요즘 세태가 반영되어 그런 듯 싶어 썩 반갑지가 않다. 이는 개발에서도 그대로 적용되는 데, 요즘 보면 결과가 바로 눈에 보이는 언어들에 사람들이 몰리며 이에 대한 책들도 많이 나오고 있다. 그러나 이들 중 C 언어부터 차근차근 밟아 나가는 사람들은 그리 흔하지 않은 건 왜일까?

 

어떤 프로그래밍 언어이든 하나는 확실하게 알고 있어야 한다. 그래야 확장이 가능하기 때문이다. 그러나 이런 언어들은 공부에 대한 결과가 바로 눈에 띄지 않기 때문에 중도에 포기하는 개발자들이 많다. 이는 영어를 공부하는 것으로 생각해보면 알 수 있다. 영어에는 왕도가 없다지 않은가. 그저 묵묵히 최선을 다해 습득하는 것 그 길뿐이다. 프로그래밍 언어 역시 마찬가지라고 생각된다. 조급해 하지 말고 묵묵히 습득하다 보면 어느새 늘어 있는 자신의 실력에 놀랄 때가 반드시 있을 것이다.

 

 

 


[ 임베디드 시스템 산업 인력 현황 ]


매년 대학에서 배출되는 임베디드 소프트웨어 개발인력이 업체에서 필요로 하는 인력에 비하여 매우 부족하다.

향후 5 년간 임베디드 소프트웨어 개발인력의 수급 부족이 약 1 만 2000 명으로 예상되고 있다. 임베디드 시스템 개발자는 단순 프로그래밍 차원을 넘어 하드웨어, 소프트웨어 지식을 겸비하고 프로젝트 관리 능력을 갖춘 시스템 아키텍트 수준의 인력을 요구하는데, 이러한 인력이 절대 부족하다. 그만큼 개발자로서 매력 있는 분야라 할 수 있다.


1990 년대에 마이크로소프트의 윈도우 기반의 PC 시대를 지나 2000 년대에는 포스트 PC, 즉 임베디드 시스템의 시대라고 해도 과언이 아니다. 앞으로 멀지 않은 장래에 임베디드 시스템인 포스트 PC 에 대한 기존의 PC 시장의 비율이 55 대 45 로 전망할 만큼 임베디드 시스템 산업이 뜨겁게 성장하고 있다. 임베디드 시스템은 사회간접자본(SOC)으로 대표되는 32 비트 RISC CPU 가 내장된 반도체 사업, 임베디드 OS, 그리고 다양한 애플리케이션 소프트웨어 산업이 어우러지는 복합적인 시스템 산업이 될 것이라 생각한다.

 

임베디드 시스템은 컴퓨터가 등장한 이후 공장 자동화 분야에 CPU 가 사용되면서부터 시작했다고 해도 과언이 아닐 정도로 오랜 역사를 가지고 있다. 그리고 2000 년을 기점으로 임베디드 시스템의 트렌드 변화가 일어나고 있다. 임베디드 시스템이 기존의 체계에 변화를 촉진하고 있으며 전체 산업영역으로 급속히 확산되고 있다.


이러한 임베디드 시스템의 범위 및 분야가 광범위한 체계를 갖추고 있기 때문에 이에 종사하는 개발자가 되기 위해서는 많은 시간이 필요하다. 그래서 다른 영역에 있는 개발자와 입문자가 쉽게 접근하는 데 어려움이 있다는 것이 문제가 된다. 하지만 이를 효율적이고 체계적으로 학습하여 빠르게 개발자가 되기 위한 방법론을 제시하는 것이 이 글의 목적이라고 할 수 있다.


모든 분야의 일이 마찬가지지만, 임베디드 시스템 관련 개발 분야만큼 실무를 바탕으로 하는 분야도 많지 않을 것이다. 임베디드 분야는 보드를 설계하고 이 보드에 개발 환경을 구축하고 부트 코드를 작성하고 OS 를 포팅하고 디바이스 드라이버를 작성하고 애플리케이션을 작성하는 등의 일련의 작업들을 하는 것을 의미한다.

 

 

임베디드에 거는 기대감과 희망

이 글에서는 임베디드 시스템을 32비트 CPU 기반 임베디드 하드웨어 시스템, OS, 미들웨어, 애플리케이션의 계층 구조를 가지는 임베디드 시스템에 대하여 살펴보고 이들을 개발하기 위해서는 어떤 식으로 접근해야 할지 살펴보았다.


‘무어의 법칙’에서 말해주듯 하드웨어 사양들은 하루가 다르게 변화하고 있고, 이보다 더 빠른 속도로 소프트웨어 환경은 급변하고 있다. 그리고 이러한 환경에서 다양한 분야가 생겨나고 또 사라져 가고 있다. 이런 광속의 시대를 살면서 과연 우리의 개발자들은 어디에 서야 할 것인가에 대해 오랜 기간 개발자의 길을 걸어온 사람들은 누구나 고민하고 있으리라 생각된다. 과연 이 땅의 개발자들은 어디로 가야 하는가?

 

필자는 임베디드라는 분야에 우리가 서야 할 길이 있다고 확신하고 있으며, 이를 다양한 개발 경험과 강의 현장에 서 몸소 느끼고 있다. 그러나 아직 인식이 많이 되어 있지 않기에 어찌하면 이 분야에 쉽게 접근할 수 있을지를 생각해봤다.


앞서도 언급하였지만 임베디드는 우리가 이제껏 접해왔던 컴퓨터 환경과는 그 운용 방법이나 개발 방법 등 모든 면 에서 다르다 할 수 있다. 하지만 그 속내를 들여다보면 우리가 이제까지 등한시했던 기본적인 내용들을 다시금 돌아보고 숙지한다면 결국 개발이라는 방법 자체가 아닌 개발 과정의 흐름은 동일하다는 사실을 이해하리라 생각한다.


CPU, 프로그래밍 언어, 컴파일러와 같은 기본 개발 분야에 있어서 이미 선진 유럽과 미국을 우리가 뛰어 넘기란 사실상 불가능해 보인다. 그러나 이제 막 꽃을 피우기 시작한 임베디드라면 기대해도 좋을 희망이 있지 않을까? 뛰어난 임베디드 개발자들이 무수히 쏟아져 나오길 마음 속으로 간절히 기도하며 글을 맺는다.

 


저자 | 박철

정리 | 조규형

 

 


 

 

PC와 임베디드는 개발환경이 다르다!

프로그래밍은 잘하는데 하드웨어를 잘 몰라도 임베디드 시스템 개발자가 될 수 있을까? 전자공학을 전공했는데 임베디드 시스템 소프트웨어 프로그램을 잘할 수 있을까? 임베디드 

jehyeon-lab.tistory.com

 

 

임베디드 시스템의 변화, 하드웨어의 필요성

임베디드 시스템이란 무엇인가? 우리가 흔히 쓰는 대부분의 기기들은 임베디드로 구성되어 있다. 전기회로에서 단순한 마이컴을 거쳐 부가기능이 있는 임베디드가 사용되기 까지 우리는 개발

jehyeon-lab.tistory.com

 

 

임베디드,펌웨어 개발자가 되고싶어요. 임베디드시스템 SW 개발과정

우리가 흔히 쓰는 스마트폰, 네비게이션, IoT 제품들을 구동시키기 위해서는 하드웨어도 준비가 되야하지만, 그것을 작동시킬 소프트웨어가 필요하다. 소프트웨어 개발자는 웹 개발자, 앱 개발

jehyeon-lab.tistory.com

 

반응형

댓글