Seminar/공개소프트웨어 대회

임베디드 플랫폼 강의 - 유명환

MB Brad KWON 2012. 8. 4. 21:57

Platform : CPU + OS + Tool

ex) Android : ARM + Linux + Ubuntu, Eclipse

 

32bit core : ARM(임베디드 시장에서 1인자), x86(PC 시장에서 1인자), MIPS(셋탑박스 용으로 많이 쓰임), Power PC(네트워트 용)

 

구글TV 초창기에는 x86 ATOM을 썼으나 지금은 ARM으로 바뀜.

 

Embedded = Cost saving

 

C : First CPU independent high level language

 

JCO : Java 개발자 협의회(김병곤 회장)

 

ARM을 사용한 서버를 이용하여 전력 소모량을 줄이는 동향 -> 영국의 칼스?? => HP, Dell

저장 공간으로 사용하는 서버의 스펙은 낮게 사용해도 상관없다.

 

CPU : CPU Core(연산처리) + CPU Peripheral(하드웨어 제어)

 

임베디드 시스템 <=> 범용 시스템

 

CPU안의  general purpose register : 어셈블리로만 접근가능하다. 단순히 입출력만 가능.(주소가 없기 때문에 C로 접근을 못 함.)

 

파일시스템 : 하드에서 파일의 주소를 찾기위한 문법 => 소프트웨어가 해석하는 영역이기 때문에 기계가 이해하는 메모리에 올려야 CPU가 데이터를 가져와 인식 가능

 

8bit CPU중에 C를 가장 잘 지원해주는  AVR Core => 8bit 범용 프로세서 시장 장악

8051 Core SOC에서 가장 많이 사용. 인텔에서 공개했기 때문이다.

 

안드로이드 앱은 불안전한 코드이기 때문에 main함수가 없음.

앱마다 달빅과 프레임워크부분이 들어감. 속도를 내기 위해서 스태틱으로 만듬.

안드로이드 장점 : 구세대의 기술을 융합해서 만들어낸 새로운 모바일 플랫폼이기 때문에 잠재적 개발자가 많아서 앱의 확보가 용이하고 개발자가 새롭게 배워야 하는 기술이 없어 접근이 용이하다.

 

RTOS OS가 아니라 펌웨어이기 때문에 어플리케이션을 만들 때, OS를 같이 컴파일을 한다. 시간 제약이 엄격하다.

RTOS에서 제공하는 시스템콜이 없으면 프로그래밍을 할 수 없다.

 

스택이 가변적인 영역이기 때문에 실행중인 데이터의 저장은 스택에 저장한다. 운영체제의 스케줄러가 스택의 사이즈를 잡아주기 때문에 우리가 잡아줄 필요가 없다. 하지만 RTOS에서는 어플리케이션에서 스택의 사이즈를 잡는다.

 

소프트웨어 라이센스에 대해서 잘 알아야 한다. 외부에서 엄한 것을 가져다 쓰지 않았을 경우, 안드로이드 앱은 기본적으로 APL이다.

XML코드를 자바로 바꿔주는 ANT라는 코드가 아파치 재단에서 나왔기 때문에 APL이 적용된다.

 

Hardware Abstraction Layer : 임베디드 리눅스는 디바이스 드라이버가 커널에 들어있다. 안드로이드는 유저영역에 있다. 안드로이드에서 유저가 장치에 접근하기 편하도록 드라이버를 유저영역으로 끌어 올렸다. 그리고 JNI를 이용해서 커널과 유저를 잇는 계층을 만들었다. 유저영역으로 드라이버를 끌어올리면 커널에 있을 때보다 업그레이드가 용이하다.

 

하드웨어와 소프트웨어 시장에서 '오픈 소스' 열풍이 거세다.

ex) 페이스북에 'Like' 버튼을 누를 때, 로그 데이터의 통계로 공통분모를 뽑아 압축하고 빅데이터를 관리하는 기술이 오픈 소스이다.

 

시스템 모듈 : Eddy 모듈로 소프트웨어를 개발하고 하드웨어 개발을 동시에 진행이 가능하게 하여 개발기간을 줄일 수 있다. Eddy가 돌아가는 베이스보드를 따로 만듬. Eddy는 초기부터 이클립스를 지원하기 때문에 윈도우뿐만 아니라 리눅스, 맥으로도 개발이 용이하다.

BSP 다운로드 환경 => WWW, FTP