3. 발표자 소개
유 명 환 funfun.yoo@gmail.com
• 엑세스 주식회사 연구소장
• 미래부 소프트웨어 마에스트로 멘토
• 오픈스택 한국 커뮤니티 네트워크 분과장
• 오픈소스포럼 페이스북 그룹지기
• 만물상(IoT) 페이스북 그룹지기
• 주로 서울시 구로동에 서식
• 현재 ARM 프로세서 기반 클라우드 서버 및 사물인터넷 관련 프로젝트 진행 중
• 국내 최초 납땜 가능한 IoT 해커톤 개최 : 드림엔터 IoT 해커톤 (2014.12.20~21)
NEX-D 아카데미 1차
21. 사물인터넷, 왜 뜨는가?
사물인터넷의 전제 조건
1. 사물이 24시간 내내 인터넷에 접속할 수 있어야 한다!
: USN, M2M 시절엔 사물이 인터넷에 접속하려면 비용(Cost)이 많이 필요했다!
2. 사람도 24시간 내내 인터넷에 접속해 있어야 한다!
: USN, M2M 시절엔 사람이 인터넷에 접속하려면 컴퓨터가 필요했다!
NEX-D 아카데미 1차
22. 사물인터넷, 왜 뜨는가?
사물인터넷의 전제 조건
1. 사물이 24시간 내내 인터넷에 접속할 수 있어야 한다!
: 사물이 인터넷에 접속하기 위한 비용(Cost)이 점점 내려가고 있다!
2. 사람도 24시간 내내 인터넷에 접속해 있어야 한다!
: 스마트 폰의 등장 이후 사람은 24시간 내내 인터넷에 접속해 있다!
NEX-D 아카데미 1차
30. Embedded System
NEX-D 아카데미 1차
Embedded System Embedded Software
PC Printer
Purpose General Specific
Optimal
Spec.
X O
Extensible
Spec.
O X
PC
SW Engineer
Printer
SW Engineer
Target
(Service)
Application
(Service)
Appliance
Starting
Point
When CPU is
Alive
When CPU is
Dead
Programming
Language
C, C++, Java,
Script
Languages,…
C
Key Point
Service Protocol,
(OS) Library, API,
File Management
CPU Protocol,
Address, Bit Operation,
Memory Management
31. Embedded SW 특징
NEX-D 아카데미 1차
임베디드
SW
CPU 바로 위에서 실행되는 SW è 무한루프
CPU에 의해 시작되는 SW è Header 無
디바이스를 제어하는 SW è 레지스터 설정
임베디드 SW = 회로도 + 데이터시트 + 소스
32. 임베디드 시스템 성공 여부?
NEX-D 아카데미 1차
임베디드 시스템 성공의 50% 이상을
“설계” 가 좌우한다!
37. 플랫폼 구성요소 (1) : CPU
NEX-D 아카데미 1차
CPU = CPU Core + CPU Peripheral
— CPU Core : 연산 처리를 담당
— CPU Peripheral : (연산 처리 결과에 따른) H/W 제어를 담당
마이크로프로세서(Microprocessor) 마이크로컨트롤러(Microcontroller)
CPU Core
CPU Core
CPU
Peripheral
CPU
Peripheral
38. 플랫폼 구성요소 (1) : CPU
NEX-D 아카데미 1차
hello.chello.c
hello.hexhello.hex
BSSBSS
STACKSTACK
. . . . . .
Loader
CPUMemory
Latch
Register Bank
ALU
Reg.
Reg.
Reg.
CPU I/O Pin
CPU Core CPU Peripheral
LED
DATADATA
TEXTTEXT
Compiler
11
22
33
39. 플랫폼 구성요소 (1) : CPU
NEX-D 아카데미 1차
8051 Core8051 Core
PIC Core
AVR CoreAVR Core
8비트 기반의 SoC(System on Chip) : ex) CC2430 = 8051 + CC2420
8비트 범용 프로세서 시장 장악
--> ISP(In-System Programming), JTAG support
--> Open Source Cross-Compiler(GCC)
--> RTOS(Real-Time OS) support :
ex) uC/OS-II, TinyOS, Nano Qplus, FreeRTOS
C 언어를 가장 잘 지원해주는 프로세서!
8-bit CPU8-bit CPU 16-bit CPU 32-bit CPU32-bit CPU
40. 플랫폼 구성요소 (1) : CPU
NEX-D 아카데미 1차
ARM CoreARM Core PPC CorePPC Core MIPS CoreMIPS Core x86 Corex86 Core
ARM7 CoreARM7 Core
ARM9 CoreARM9 Core
ARM11 CoreARM11 Core
AU1200 CPU
AU1250 CPU
POS, Kiosk TerminalPOS, Kiosk Terminal
Net Book (ATOM)Net Book (ATOM)
— PMP(Portable Multimedia Player)
— STB(Set Top Box)
16비트를 대신할 저가형 32비트 솔루션
Cortex-M3
— 저전력, 확장성 등을 앞세워 32비트 시장을 점령
— PC와 마찬가지로 멀티코어(Multi-Core) 등장
— PC와 유사한 고 성능 + DSP 기능 추가
— 범용 운영체제(OS) 시장의 견인차 역할 : ex) iPhone, RAZR2
Cortex-A8
46. 플랫폼 구성요소 (2) : OS
NEX-D 아카데미 1차
OS를 왜 써야만 하는가?
— 첫 번째 이유: 같은 자원에 동시 접근하려는 태스크가 많을 경우
— 두 번째 이유: 우선순위가 확실하게 보장되어야 하는 경우
운영체제(OS)
非 실시간 운영체제(Non-RTOS) 실시간 운영체제(RTOS)
¡ Linux, Windows, Windows CE
¡ Multi-Process
¡ 커널 + 파일 시스템 + TCP/IP 프로토콜 스택 = Heavyweight
¡ 주로 응용 프로그램이 많이 필요한 경우에 사용
¡ VxWorks, pSOS, eCOS, MicroC/OS-II, TinyOS
¡ Multi-Thread
¡ 커널 (+ 파일 시스템 + TCP/IP 프로토콜 스택) = Lightweight
¡ 주로 정확한 시간 제어가 필요한 경우에 사용
“Real-Time” : 즉시, 대기 시간이 없는
ð 원하는 시간 내에 원하는 결과를 얻을 수 있다!
47. 플랫폼 구성요소 (2) : OS
NEX-D 아카데미 1차
운영체제(OS)
非 실시간 운영체제(Non-RTOS) 실시간 운영체제(RTOS)
void task_start(void *data)
{
......
for (;;)
{
......
}
}
int main(void)
{
OSInit();
OSTaskCreate(task_start, (void *)0,
(void *)&task_start_stk[OS_TASK_DEF_STK_SIZE - 1],
0);
OSStart();
return 0;
}
int sum(int a, int b)
{
return (a + b);
}
int main(void)
{
int a = 10, b = 20;
int sum;
sum = sum(a, b);
printf(“sum = %d n”, sum);
return 0;
}
48. 플랫폼 구성요소 (2) : OS
NEX-D 아카데미 1차
Firmware, RTOS System Non-RTOS System
FirmwareFirmware User App.User App. FirmwareFirmware
User ApplicationUser Application
OS (Kernel)OS (Kernel)
Hardware (Device)Hardware (Device)Hardware (Device)Hardware (Device)
50. 플랫폼 구성요소 (2) : OS
NEX-D 아카데미 1차
¡ Linux, Windows
¡ 프로세스(Process)들마다 독립된 메모리 영역
¡ 프로세스의 生死 여부가 다른 프로세스에게 영향을 미치지 않는다!
¡ User Level 영역과 Kernel Level 영역으로 구분된다!
¡ VxWorks, pSOS, eCOS, MicroC/OS-II, TinyOS
¡ 쓰레드(Thread)들이 일부 영역(Data, BSS)을 서로 공유
¡ 쓰레드의 生死 여부가 다른 쓰레드에게 영향을 미친다!
¡ User, Kernel Level 영역의 구분이 없다!
Multi-Process (Non-RTOS) Multi-Thread (RTOS)
Process
“Text” Section
“Data” Section
“BSS” Section
………
“Stack” Section
Process
“Text” Section
“Data” Section
“BSS” Section
………
“Stack” Section
Process
“Text” Section
“Data” Section
“BSS” Section
………
“Stack” Section
Process
“Data” Section
“BSS” Section
………………………………
“Text” Section “Text” Section“Text” Section
“Stack” Section “Stack” Section“Stack” Section
Task1 Process Task2 Process Task3 Process Task1 Thread Task2 Thread Task3 Thread
57. 플랫폼 구성요소 (2) : OS
NEX-D 아카데미 1차
Paradigm Shift !!!
• 작은 플래시 용량에 최적화 된 BSP
• 최소한의 기능만 보유한 커널
• 모든 SW는 전용 컴파일러로 별도 빌드 후 포팅
• 넉넉한 SD 카드 기반의 범용 운영체제 : ex. Debian, Ubuntu
• PC 기능의 대부분을 제공하는 커널
• 모든 SW는 PC 와 동일한 방법으로 개발 혹은 설치
: ex. $ sudo apt-get install gimp
58. 플랫폼 구성요소 (2) : OS
NEX-D 아카데미 1차
Paradigm Shift !!!
특정 임베디드 시스템
범용 시스템
59. 플랫폼 (3) : Tool
NEX-D 아카데미 1차 : Tech : 임베디드 시스템
61. 플랫폼 구성요소 (3) : Tool
NEX-D 아카데미 1차
# include <stdio.h>
int main(void)
{
printf(“Hellon”);
return 0;
}
# include <stdio.h>
int main(void)
{
printf(“Hellon”);
return 0;
}
a.out (Executable ELF)a.out (Executable ELF)
gcc (GNU C Compiler)
hello.o (Relocatable ELF)hello.o (Relocatable ELF)
hello.c (C Source Code)
컴파일
링킹
# 처리
‚ C 문법 검사
라이브러리 호출 루틴 추가
‚ CPU, 메모리 등 정보 추가
62. 플랫폼 구성요소 (3) : Tool
NEX-D 아카데미 1차
/*
* FILE : HELLO.C
*/
#include <stdio.h>
int main()
{
printf(“Hello! n”);
return 0;
}
/*
* FILE : HELLO.C
*/
#include <stdio.h>
int main()
{
printf(“Hello! n”);
return 0;
}
Hello.hex
Memory
HDD
Hello.hex
Memory
Hello.hex
Flash Compile
‚ HW Programming
ƒ Execute
PC (Computer)
Target Board
63. 플랫폼 구성요소 (3) : Tool
NEX-D 아카데미 1차
( VMware or VirtualBox ) + Ubuntu
64. Beyond the Embedded, into the Ubiquitous
유 명 환, funfun.yoo@gmail.com
NEX-D 아카데미 1차 : Tech : 임베디드 시스템