Module 3 Embedded System HW 및 SW 의 구성 요소 정정화 교수 (한양대학교)
3장. Embedded System HW 및 SW 의 구성 요소 n n n Embedded System 이란? 하드웨어 구성 요소 소프트웨어 구성 요소 Embedded System의 실례 Embedded System의 산업 구조 Copyrightⓒ 2004 2
3장. Embedded System HW 및 SW 의 구성 요소 n Embedded System 이란? n 하드웨어 구성 요소 소프트웨어 구성 요소 Embedded System의 실례 Embedded System의 산업 구조 n n n Copyrightⓒ 2004 3
3장. Embedded System HW 및 SW 의 구성 요소 정의 및 필요성 n 정의 ¨ 마이크로프로세서가 내장되어 있고, 마이크로 시스템을 구동하 여 특정한 작업을 처리하기 위하여 프로그램이 내장되어 있는 시 스템 n n n '내장형 시스템‘ 소형화 & 저전력 구현 필요성 특정한 업무를 효과적으로 수행 ¨ 가격대 성능비의 최대화 ¨ Copyrightⓒ 2004 4
3장. Embedded System HW 및 SW 의 구성 요소 Embedded System의 구성 요소 n 일반적으로 하드웨어(hardware) 부분과 소프트웨어(software) 부 분으로 구분 n 구성 요소 Embedded H/W : 프로세서/컨트롤러, 메모리, I/O, 네트워크 ¨ Embedded S/W : 커널, 시스템 S/W, 응용 S/W ¨ Micro Processor OS - Kernel Micro Controller Device Driver Memory Application H/W S/W Embedded System Copyrightⓒ 2004 5
3장. Embedded System HW 및 SW 의 구성 요소 Embedded System의 특징 n Embedded system의 등장 초기 낮은 연산능력(4/8/16 bit microprocessor) 언어 : assembly language 순차적으로 동작하는 응용소프트웨어 ¨ ¨ ¨ n Embedded system의 현재 ¨ ¨ 높은 연산능력(32/64 bit microprocessor) 언어 : C/C++ language ¨ 운영체제(operating system) 사용 n n n 멀티태스킹 네트워킹 PC H/W Vs. Embedded system H/W 항목 PC Embedded System 프로세서 고성능 탑재 최소한의 성능 탑재 메모리 대용량 메모리 최소한의 메모리 사용 보조기억장치 다양함 (HDD, ODD, DVD 등) 거의 사용 안함 주변장치 다양함 (키보드, 마우스, 스피커 등) 필요한 장치만 사용 Copyrightⓒ 2004 6
3장. Embedded System HW 및 SW 의 구성 요소 Embedded System & 실시간 시스템 n Embedded System의 역사 1950년대 통신 장비 제어를 위해 등장 ¨ 1970년대 후반부터 표준화된 대량 생산이 가능 ¨ 1990년대 초반까지 군사용 제어, 산업 기기 제어 등의 목적으로 많이 사용 ¨ 1990년대 후반부터 컴퓨터 산업과 정보 가전 기기의 발전으로 첨단 산업으로 재등장 ¨ n Embedded System의 실시간성 Embedded system의 특성상 실시간이라는 요소를 만족해야 함 ¨ Embedded system이 실시간 적인 요소가 있기 때문에 실시간 시스템이라고 봐도 무방함 ¨ Copyrightⓒ 2004 7
3장. Embedded System HW 및 SW 의 구성 요소 실시간 시스템 (Real-Time System) n 실시간 시스템이란? ¨ 특정 요구에 대한 응답이 정해진 시간 내에 처리할 수 없을 때 문제가 발생하는 시스템. ¨ 마감시간(deadline)이내에 적시성(timeliness)을 가지며 인터럽트 발생시 예측 가능한 방식으로 반응해야 함. n n n Timeliness의 정의 : 열악한 환경 하에서도 데드라인(deadline) 이내에 정확한 출력 값을 산출 해 내는 것. Deadline의 정의 : 응답에 요구되는 시간의 한계 값 실시간 시스템의 분류 ¨ Hard Real-Time system : 제어작업이 deadline을 어기는 경우 시스템에 심각한 영향 을 주는 time-critical 속성을 지닌 시스템 예) 항공기, 우주 왕복선, 자동차 등 ¨ Soft Real-Time system : Deadline을 넘는 시간 지연이 발생하더라도 시스템의 에러 가 되지 않는 시스템 예) 컴퓨터, 정보기기, 네트워크 관련기기 등 Copyrightⓒ 2004 8
3장. Embedded System HW 및 SW 의 구성 요소 Embedded System을 설계/개발 고려사항 n Real-Time, Reactive ¨ ¨ n Small Size, Low Weight ¨ n Embedded 운영체제는 안정성 있고, 신뢰할 수 있게 설계되어야 함. Harsh Environment ¨ n 각 기기의 특성에 맞도록 가볍고 효율적으로 설계되어야 함. Safe, Reliable ¨ n 최악의 상황에서도 정해진 시간 내에 동작 인터럽트나 폴링에 대한 즉각적인 동작 불안정한 환경에서도 오류 없이 안정적으로 동작되도록 설계되어야 함. Cost Sensitivity ¨ 저가의 비용으로 효율적인 시스템을 설계하여야 함. Copyrightⓒ 2004 9
3장. Embedded System HW 및 SW 의 구성 요소 Embedded System 구조도 Copyrightⓒ 2004 10
3장. Embedded System HW 및 SW 의 구성 요소 Embedded System HW 및 SW 의 구성요소 n Embedded System 이란? n 하드웨어 구성 요소 n 소프트웨어 구성 요소 Embedded System의 사용예 Embedded System의 산업 구조 n n Copyrightⓒ 2004 11
3장. Embedded System HW 및 SW 의 구성 요소 하드웨어 구성도 하드웨어 부분 Copyrightⓒ 2004 12
3장. Embedded System HW 및 SW 의 구성 요소 Microprocessor n Embedded system의 핵심 PC에 비해 저전력이 요구됨 ¨ RISC Vs. CISC ¨ n n ¨ RISC 구조가 CISC 구조에 비해 명령어 구조가 간단함 Pipeline의 적용이 쉬운 RISC 구조가 저전력, 고성능 ARM core n 강력한 성능, 저전력을 위한 구조 ¨ n n Pipeline, Dynamic voltage scaling, RISC 고성능 ARM core 전용 bus : AHB, ASB, AHB net-list 형태로도 제공함 현재 임베디드 시스템에서 주로 사용되는 CPU DSP의 이용 디지털 신호처리가 많이 사용되는 임베디드 시스템 ¨ 디지털 신호처리 시 뛰어난 성능 ¨ Teak DSP ¨ Copyrightⓒ 2004 13
3장. Embedded System HW 및 SW 의 구성 요소 Memory n Embedded System에서 메모리의 선택 운영체제와 응용 소프트웨어의 중요도와 크기에 따라 선택 ¨ 메모리의 주요 역할 : 프로그램과 데이터 저장 ¨ n 메모리의 종류 ¨ 비휘발성 메모리 n n ¨ ROM (Read Only Memory) PROM (Programmable Read Only Memory) EPROM (Erasable Programmable Read Only Memory) FLASH 메모리 휘발성 메모리(RAM) n n SRAM DRAM ¨ Copyrightⓒ 2004 SDRAM, DDR-RAM 14
3장. Embedded System HW 및 SW 의 구성 요소 Communication Network n Embedded system에서의 communication network Heterogeneous/Homogeneous components 간의 통신 ¨ 표준 on-chip network 규격을 사용하면 embedded processors들과 CPU/signal processors들 및 여러 개의 peripherals들로 구성된 So. C design 개발을 쉽고 저렴하게 구축할 수 있음 ¨ n 일반적인 On-chip-network 종류 Point-to-Point ¨ 2 D-Mesh ¨ Crossbar ¨ BUS ¨ Copyrightⓒ 2004 15
3장. Embedded System HW 및 SW 의 구성 요소 Bus : Example n AMBA Bus ARM사에서 공개한 표준 on-chip bus 규격으로 So. C design을 구성하는 기능 블럭들의 연결 방법과 운영 방식들을 상세히 설명함 ¨ ARM core 에 최적화 ¨ 임베디드 시스템에서 주로 사용되는 ARM core 와 pair 로 많이 사용된다. ¨ AHB, ASB, APB ¨ Copyrightⓒ 2004 16
3장. Embedded System HW 및 SW 의 구성 요소 입출력장치 n Embedded system의 입출력 형태 ¨ n 외부 입력에 반응하여 정해진 작업을 실행하며 지정된 출력을 발생 Embedded system의 입력방법 폴링 (Polling) : 명령어를 사용하여 입력 핀 또는 값을 계속 읽어서 변화를 알아내는 것 ¨ 인터럽트 (Interrupt) : CPU 자체가 하드웨어적으로 그 변화를 체크하여 변화시 일정한 대처 ¨ 를 하는 것 n Embedded system 입출력장치 W-LAN UWB 직렬포트 RS 232 C규격에 맞추어서 몇 m 떨어진 곳의 주변장치들과 통신 마우스 키보드 입출력장치 병렬포트 시리얼보다 더 근접한 위치의 주변장치들과 입출력 함 마이크 USB IEEE 1394 400 Mbps까지의 전송속도 최대 63개의 주변장치 최대 12 Mbps까지 전송속도 최대 127개의 주변 장치들을 연결 Copyrightⓒ 2004 17
3장. Embedded System HW 및 SW 의 구성 요소 UWB Standardization (802. 15. 3 a) : MB-OFDM vs DS-CDMA n DS-CDMA ¨ ¨ n Motorola, Xtreme. Spectrum, Parthus. Ceva 주도함 Dual-Band CDMA PSK에 기반함 Modulation : MBOK + B(Q)PSK CDMA 방식으로 8 Piconets 지원 MB-OFDM ¨ ¨ MB-OFDM Alliance (Intel, TI, Time-Domain) 주도함 Multi-Band OFDM 기반함 Modulation : 128 -point IFFT Support 4 Piconets on Multi-Band Hopping Copyrightⓒ 2004 Mode 1 : 3 -Bands Low Band High Band 3 4 5 6 7 8 9 10 11 ; Mode 2 : 7 -Bands 18
3장. Embedded System HW 및 SW 의 구성 요소 Multi. Band-OFDM vs WLAN IEEE 802. 15. 3 a MB-OFDM UWB IEEE 802. 11 a WLAN Madatory 55, 110, 200 Mbps 6, 12, 24 Mbps Optional 80, 160, 320, 480 Mbps 9, 18, 36, 48, 54 Mbps Constellation /Modulation QPSK OFDM BPSK OFDM (for 6, 9 Mbps) QPSK OFDM (for 12, 18 Mbps) 16 -QAM OFDM (for 24, 36 Mbps) 64 -QAM OFDM (for 48, 54 Mbps) IFFT/FFT Size 128 (= 27) 64 (= 26) Data 100 48 Pilot 12 (Dedicated Tones) + 10 (Guard Tones) 4 Total Bandwidth (Minimum Sampling Rate) 528 MHz X 3 (528 Msps) 20 MHz (20 Msps) Bandwidth of Subcarrier (∆F) 4. 125 MHz (= 528 MHz / 128) 0. 3125 MHz (= 20 MHz / 64) Occupied Bandwidth 507. 375 MHz (= ∆F X (100+12+10+1)) 16. 5625 MHz (= ∆F X (48+4+1)) IFFT/FFT Period 242. 42 ns (= 1/∆F) 3200 ns (= 1/∆F) Cyclic-Prefix or Zero-Padding Duration 60. 61 ns (= 242. 42 ns / 4) 800 ns (= 3200 ns / 4) Guard Interval (for Band-Switching) 9. 47 ns (= 242. 42 ns X (5/128)) - OFDM Symbol Duration 312. 5 ns (= 242. 4 ns + 60. 6 ns + 9. 5 ns) 4000 ns (= 3200 ns + 800 ns) Data-Rate Number of Subcarriers Error Correction Code Coding Rate Scrambling Copyrightⓒ 2004 Basic ‘K = 7’ (64 States) Convolutional Code 1/3 with G 0 = 1338, G 1 = 1458, G 2 = 1758 (Unused Directly) 1/2 with G 0 = 1338, G 1 = 1718 (for mandatory 6, 12, 24 Mbps) S(x) = x 15 + x 14 +1 with four initial states S(x) = x 7 + x 4 +1 with one initial non-zero state 19
3장. Embedded System HW 및 SW 의 구성 요소 입출력장치 n Wireless LAN 사용주파수 : 2. 4 - 2. 48 GHz ¨ IEEE 802. 11 a ¨ IEEE 802. 11 b ¨ IEEE 802. 11 g ¨ n UWB ¨ ¨ ¨ IEEE 802. 15. 3 a 저전력(수백 m. W) 초고속(~1 Gbps) 통신 가능 근거리 무선 통신(WPAN) 간섭을 일으킬 확률이 매우 낮다는 것 대용량의 데이터를 고속으로 전송 Copyrightⓒ 2004 20
3장. Embedded System HW 및 SW 의 구성 요소 Embedded System HW 및 SW 의 구성요소 n Embedded System 이란? 하드웨어 구성 요소 n 소프트웨어 구성 요소 n Embedded System의 실례 Embedded System의 산업 구조 n n Copyrightⓒ 2004 21
3장. Embedded System HW 및 SW 의 구성 요소 소프트웨어 구성도 n Embedded software 의 계층화된 구조 Diagnostic and application layer MMI/GUI Host Application Message Manager Error Handling Task Controller Memory Allocation State Machine Diagnostics Application Program Interfaces Stack Protocol Display Services File Manager Alarm Services Library Event Manager Data I/O Kernel Services Device Drivers RTOS layer Hardware Copyrightⓒ 2004 22
3장. Embedded System HW 및 SW 의 구성 요소 Embedded OS & RTOS n Embedded system 운영체제 상용 RTOS Embedded OS Wind. River사- Vx. Works Windows CE ISI사- p. SOS Embedded Linux VRTX Embedded Java Qplus Hard Real-time 지원 Copyrightⓒ 2004 Soft Real-time 중심 23
3장. Embedded System HW 및 SW 의 구성 요소 Embedded OS의 기본 요소 n Kernel, 멀티 태스킹, Scheduler, 선점(Preemptive), Semaphore, Deadlock, Priority Inversion, Interrupt service, Mutual exclusion… n 임베디드 리눅스 커널 구조 ¨ 메모리에 상주하여 시스템 구동에 필요한 환경을 만들고 관리하 는 소프트웨어 ¨ 작은 의미의 OS 자체 ¨ 시스템 내의 모든 리소스(H/W, S/W) 관리 ¨ 응용 프로그램에게 서비스제공 Copyrightⓒ 2004 24
3장. Embedded System HW 및 SW 의 구성 요소 커널의 역할 및 구조 Copyrightⓒ 2004 25
3장. Embedded System HW 및 SW 의 구성 요소 커널 모듈 프로그램의 기본 구조 #include <linux/kernel. h> /*커널에서 수행될 때 필요한 헤더 파일 */ #include <linux/mocule. h> /* 모듈에 필요한 헤더 파일 */ #include <linux/errno. h> /* linux 커널의 에러 코드 헤더 파일 */ Int init_module() { /* 모듈이 설치될 때 초기화를 수행하는 코드 */ …………. . } Void cleanup_module() { /* 모듈이 제거될 때 반한 작업을 수행하는 코드 */ ………. . } Copyrightⓒ 2004 26
3장. Embedded System HW 및 SW 의 구성 요소 Device Driver n 디바이스 드라이버 정의 물리적인 하드웨어 장치를 다루고 관리하는 소프트웨어 ¨ 커널의 일부분 ¨ 주번호(major number) ¨ n ¨ 부번호(minor number) n n 같은 메이저 번호를 공유하는 장치에서 특정 장치를 나타내는 숫자 디바이스 드라이버의 용도 ¨ n 디바이스에 고유하게 주어지는 번호로 장치와 연관된 driver를 찾는데 사용 응용프로그램에서 하드웨어장치를 이용해서 데이터를 직접 읽고 쓰거나 제어해 야 하는 경우에 디바이스 드라이버를 이용 디바이스 드라이버의 구성 ¨ 함수와 자료구조의 집합 Copyrightⓒ 2004 27
3장. Embedded System HW 및 SW 의 구성 요소 Device Driver n 디바이스 드라이버 구성도 User Level User Program File System Buffer Cache Network Subsystem BSD socket Kernel level Character Block Network Device Drivers Transport (TCP, UDP) Network(IP) Device Interface Hardware level Copyrightⓒ 2004 Hardware(hdd, floppy, printer etc) 28
3장. Embedded System HW 및 SW 의 구성 요소 Device Driver Overview Linux Kernel Device Interface Table Boot code blkdevs[] int code X_open() X_release() X_read() X_write() X_ioctl() X_int() X_init() Y_open() Q_open() Y_release() Q_read() Y_read() Q_ioctl() Y_write() Q_write() Y_ioctl() Q_close() Y_int() Y_init() Interrupt Z_open() O_open() Z_release() O_read() Z_readl() O_ioctl() Z_write() O_write() Z_ioctl() O_close() Z_int() Z_init() X_controller Set of Registers dev 1 Copyrightⓒ 2004 chrdevs[] dev 2 dev 3 29
3장. Embedded System HW 및 SW 의 구성 요소 Device Driver 종류와 특징 드라이버 종류 설명 문자 드라이버 디바이스를 파일처럼 취급하고 접근하여 직접 읽기/쓰기를 수행 데이터 형태는 스트림 방식으로 전송 EX) 콘솔, 키보드, 시리얼 포트 드라이버등 블록 드라이버 디스크와 같이 파일 시스템을 기반으로 일정한 블록 단위로 데이 터 읽기/쓰기를 수행 EX) 플로피 디스크, 하드 디스크, CDROM 드라이버 등 네트워크 드라이버 네트워크의 물리 계층과 프레임 단위의 데이터를 송수신 EX) 이더넷 디바이스 드라이버(eth 0) Copyrightⓒ 2004 30
3장. Embedded System HW 및 SW 의 구성 요소 디바이스 드라이버 흐름도 디바이스 드라이버의 동작과정 (커널 프로그램) 드라이버 테스트 프로그램 (사용자 프로그램) 커널 내 모듈 적재 디바이스 열기 1. call 디바이스 열기 2. return 드라이버의 동작(read/write) 3. call Dev_Write( ); Dev_Read () 디바이스 닫기 4. return 5. call 6. return 커널 내 모듈 제거 Copyrightⓒ 2004 Write( ); to Dev Read ( ); to Dev 실패시 종료 디바이스 닫기 종료 31
3장. Embedded System HW 및 SW 의 구성 요소 디바이스 드라이버 코드 n init_module( ) ¨ n cleanup_module( ) ¨ n 커널 모듈이 적재될 때 호출되는 함수 insmod 커널 모듈이 제거될 때 호출되는 함수 rmmod file_operation 및 연관된 함수 정의 ¨ Keypad의 경우는 open, release, ioctl, read 사용 ¨ n open 디바이스를 사용하기 위해 해당 디바이스를 여는 함수 ¨ 디바이스를 사용하는 응용 프로그램의 수를 저장 ¨ n release 해당 디바이스가 응용 프로그램에 의해서 더 이상 사용되지 않을 때 호출 ¨ 디바이스를 사용하는 응용 프로그램의 개수를 감소 ¨ n ioctl ¨ n 디바이스에 종속적인 명령을 만들 수 있도록 하는 함수 read keypad로부터 읽혀진 데이터 값을 커널 메모리 영역으로부터 사용자 영역으로 복사하는 역할을 수행 copy_to_user( ) 이용 ¨ Write의 경우는 copy_from_user( ) 이용 ¨ Copyrightⓒ 2004 32
3장. Embedded System HW 및 SW 의 구성 요소 디바이스 드라이버 모듈 동작 원리 register_chrdev(major, *name, *fops) init_module() { { insmod my_drv. o MAJOR == 0; chrdevs[] 자동할당 register_chrdev() MAJOR != 0; chrdevs[major]; } } my_drv_open() { request_irq() } device_struct my_drv_fops my_drv_release() { free_irq() } chrdevs[] my_drv_fops 0 1 my_drv_open 2 my_drv_release my_drv_read() { copy_to_user() } 3. . my_drv_write 255 my_drv_write() { copy_from_user() } cleanup_module() { rmmod my_drv Copyrightⓒ 2004 unregister_chrdev() } register_chrdev(major, *name) { } 33
3장. Embedded System HW 및 SW 의 구성 요소 key_init( ) 1. 2. 3. 4. 5. 6. 7. static int __init key_init(void) { int result; int ret; unsigned long immr; printk(KERN_WARNING "key: key module is loading. . . n"); result = register_chrdev(key_major, "key_dd", &key_fops); device driver 등록 if(result < 0){ 8. printk(KERN_WARNING "key_dd: can't get major %dn", key_major); return result; 9. 10. } asm("mfspr %0, 638": "=r"(immr): ); immr &= 0 x. FFFF 0000; ((immap_t *)immr)->im_siu_conf. sc_siel |= 0 x 08000000; ((immap_t *)immr)->im_siu_conf. sc_siumcr &= 0 x. FFFFEFFF; ((immap_t *)immr)->im_siu_conf. sc_simask |= 0 x 08000000; ((immap_t *)immr)->im_siu_conf. sc_sipend |= 0 x 08000000; 11. 12. 13. 14. 15. 16. 17. interrupt handler 18. 19. ret = request_8 xxirq(keypad_irq, keypad_irq_handler, SA_SHIRQ, "key_dd", NULL); 20. if(ret) { printk(KERN_WARNING "Cannot request IRQ 0n"); result = -EFAULT; 21. 22. } keyport = (unsigned char *)ioremap(0 x 20000000, sizeof(char)); inter = (unsigned short *) keyport; 23. 24. 25. return result; 26. 27. Memory Address 지정 } Copyrightⓒ 2004 34
3장. Embedded System HW 및 SW 의 구성 요소 key_cleanup() 1. static void __exit key_cleanup(void) 2. { 3. free_irq(keypad_irq, NULL); 4. iounmap(keyport); 5. unregister_chrdev(key_major, "key_dd"); 6. IRQ 해제 memory 해제 device driver 해제 } Copyrightⓒ 2004 35
3장. Embedded System HW 및 SW 의 구성 요소 key_fops 1. struct file_operations key_fops = { 2. ioctl : key_ioctl, 3. open : key_open, 4. read : key_read, 5. release : key_release, 6. }; Copyrightⓒ 2004 36
3장. Embedded System HW 및 SW 의 구성 요소 key_open & key_release n key_open 1. int key_open(struct inode *inode, struct file *filp) 2. { 3. MOD_INC_USE_COUNT; 4. return 0; 5. } n key_release 1. int key_release(struct inode *inode, struct file *filp) 2. { 3. MOD_DEC_USE_COUNT; 4. return 0; 5. } Copyrightⓒ 2004 37
3장. Embedded System HW 및 SW 의 구성 요소 key_read 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. static ssize_t key_read(struct file *file, char *buffer, size_t count, loff_t *offset){ int i, size, tmp; 읽어 들일 배열의 개수 printk(" count is %dn", count); size = strlen(key_buff); 현재 메모리의 입력된 개수 printk(" size is %dn", size); if(size < count){ copy_to_user(buffer, &key_buff, size); 사용자 메모리 영역으로 복사 for(i=0; i<size; i++) 초기화 key_buff[i] = '