brunch

You can make anything
by writing

C.S.Lewis

by 이경종 Jun 16. 2020

Ch9-1. 부팅 프로세스

임베디드 디바이스의 개발에서 가장 중요한 것이 뭘까요?

오랜 경력의 개발자들도 이 질문에는 선뜻 대답하지 못 할 겁니다.

그럼 질문을 바꿔서 임베디드 디바이스에서 우선적으로 필요한 것은 뭘까요?

제목을 보고 눈치챘겠지만 정답은 일단 닥치고 켜지는 것(Booting)입니다.


뭐가 됐든 일단 전원을 연결했을때 켜져야 무슨 작업이라도 할 수 있겠죠.

하드웨어 개발자는 각 회로의 연결상태만 정상이고, 각 모듈에 전원만 정상적으로 들어온다면 일단은 할일 다한겁니다. 하드웨어는 설계가 거의 다고, 소프트웨어는 물론 설계도 중요하지만 구현(코딩)이라는 단계에서도 만만찮은 시간이 소요되지요. 하드웨어 제작은 장비로 하니, 하드웨어 개발자들은 초기 브링업(HW Bringup)만 끝나면 일단은 손 털게 됩니다. 소프트웨어도 설계만 끝장나게 정형화시킬수 있다면 구현도 컴퓨터가 자동으로 해주는 유토피아를 꿈꾸는 사람들이 많으나 아무리 양보하고 양보해도 임베디드의 세계에서는 아직은 꿈나라같은 이야기입니다.


각설하고, 보드 브링업(Board Bringup)은 고철과 같은 디바이스(Target Board)에 불이 켜지고 삐릭삐릭 뭔가 동작하는 상태로 만드는 초기 작업을 가리키는 용어입니다. 이 단계에서는 소프트웨어개발자와 하드웨어개발자가 같이 붙어서 작업을 진행합니다. 문제없이(다시 말해 매뉴얼에서 하라는대로) 소프트웨어를 올렸는데도 불구하고 디바이스는 야속하게 아무런 반응이 없는 경우가 태반이지요. 전원은 들어가고, 소프트웨어도 정상 다운로드되었는데 디바이스는 아무런 반응이 없습니다. "왜 안켜져!" 전문용어로 다시 말하면 콜드 부팅(Cold Booting)에 실패한 겁니다.


콜드 부팅 VS 웜부팅(Warm Booting)

콜드 부팅은 밤에 자서 아침에 일어나는 사람과 같습니다. 완전히 리셋된 상태입니다. 다시 씻고, 옷을 입고 출근해야 합니다.

웜 부팅은 책상위에서 잠깐 졸다 일어난 겁니다. 그냥 바로 일하면 됩니다.

부팅 프로세스라 하면 통상 콜드 부팅을 말합니다.

콜드부팅과 웜부팅 사이에도 물론 다른 유형이 있을수 있습니다. '미지근한' 부팅이 있을수 있겠네요. 완전한 콜드부팅도 아니고, 소프트웨어적으로만 처리되는 웜부팅도 아닌 하드웨어/소프트웨어 모두 관여하는 중간 형태의 부팅 타입이 있을수 있죠. 이런 부팅 타입은 수동대기모드(절전모드라고도 하는..Passive Standby)에서 사용될 수 있습니다.


통상 리모컨이나 본체의 전원버튼을 누르면 디바이스는 스탠드바이 모드로 들어갑니다. 기기에 따라 다 다르지만, 리모컨 눌러서 전원이 아예 내려가는 경우는 없습니다. 물론 마이컴(MICOM)같은 걸 써서, 본체의 전원을 완전히 내리는 기기들도 있습니다만, 이 글에서는 기기의 프로세스(SoC)가 관여하는 부팅유형만 살펴보도록 하겠습니다.


스탠바이 모드는 크게 능동대기 모드(Active Standby)와 수동대기 모드(Passive Standby) 이렇게 2가지로 구분됩니다. 즉, 세트가 꺼지고 켜지는 것은  Standby On/Off(Passive, Active) AC On/Off 이렇게 가능하니 아래와 그림으로 보면 되겠네요.



수동대기모드(Passive Standby)는 앞서 얘기했듯이 절전모드입니다. 약한 절전모드라면 하드웨어와 CPU의 대다수의 블록이 살아있는 상태로 전력소모는 많겠지만 그만큼 빠르게 깨어날수 있습니다. 최대 절전모드에서는 하드웨어 대부분의 전원이 내려가거나 Sleep mode로 들어갑니다. CPU로 멀티코어인 경우 1개정도를 남겨두고 모두 꺼지게 되죠. 정말 시스템이 최소한으로 돌아가는 상태거나 거의 돌아가지 않는 상태입니다. 다시 깨어나는데는 시간이 오래 걸리겠죠. 꺼졌던 하드웨어 블록들을 다시 깨워서 재초기화를 해야 하니깐요.

수동대기모드를 구체적으로 구현하는 방식은 대표적으로 STR이 있습니다.


Suspend-To-RAM(STR)은 메모리(RAM)에 실행중이던 컨텍스트를 저장해놓고, 다시 부팅할때 불러와서 사용합니다. 빠른 부팅이 가능합니다. Suspend-To-Disk(STD)는 메모리대신 HDD나 Flash와 같은 디스크에 저장하는 것입니다. STR에 비해 느리겠죠. 디스크가 메모리보다 느리니깐요. 일단은 이런 것들이 있다 정도만 상식으로 알아두고 넘어가시면 되겠습니다.


다음번에 실제 콜드부팅과정에서 소프트웨어 내부적으로 어떤일들이 벌어지는지 알아보도록 하겠습니다.



   도서 링크


작가의 이전글 Ch6-1. 파일시스템 개요
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari