220be6fe1e2e2196dddd5dddb881a24f.ppt
- Количество слайдов: 61
제 1 장 임베디드 시스템 서론 (Embedded Systems Introduction) 이병권
Part I: 임베디드 시스템 개요 이병권
목차 q 임베디드 시스템이란? q 임베디드 시스템 구성 요소 q System-on-chip 개요 q 프로세서 q 버스와 인터페이스 q 입출력 q 저장장치 q 네트워킹 Embedded System Intro. -3
임베디드 시스템이란? 임베디드 시스템 특수 목적 하드웨어 구성 기술 운영체제 기술 Embedded System Intro. 특수 목적 목적 지향의 재구성 네트워킹기술 응용 소프트웨어 기술 -4 일반 시스템 구성 기술
임베디드 시스템 종류 q 고전적 의미의 임베디드 시스템 v 제어용 시스템 Ø 제어 목적의 기능에 초점을 맞춘 간단한 하드웨어 Ø 펌웨어 수준의 소프트웨어나 간단한 실시간 운영체제 기반 소프트웨어 Ø 고정되어 있는 운용 소프트웨어 q 다양화된 임베디드 시스템 v 정보 가전 시스템 Ø 인터넷 및 가전 제어 기능이 부가된 댁내 시스템 v 이동 단말기 Ø 이동 통신 단말기 및 각종 이동형 컴퓨팅 환경 v 고수준의 제어 시스템의 일반화 Ø 기존의 일부 목적 전용의 시스템을 탈피하여 보다 일반화된 시스템을 채용하고 목적 에 맞게 소프트웨어를 교체하는 방향으로 정착 Embedded System Intro. -5
임베디드 시스템 구성 요소 q 임베디드 시스템 하드웨어 v 주 프로세서 v 제어 목적의 장치용 인터페이스 q 임베디드 시스템 소프트웨어 v 임베디드 운영체제 Ø 실시간 운영체제, 임베디드 시스템에 적용된 일반 운영체제 v 시스템 제어용 응용 소프트웨어 q 개발 환경 v 교차 개발 환경 v 개발 호스트 시스템 v 개발 타겟 시스템 Embedded System Intro. -6
임베디드 시스템 하드웨어 구성 요소 q 임베디드 시스템 프로세서 v 기본적으로 일반 시스템 프로세서 기술에서 출발 v 임베디드 시스템 목적에 맞게 System-on-chip으로 구성 v 일반 시스템에 사용되는 대부분의 프로세서 코어가 실제적으로 임베디드 시스템에 서도 사용 q 버스와 인터페이스 v 프로세서와 메모리 시스템 등 시스템 내부의 데이터 흐름을 위한 통로 v 버스의 종류 Ø 일반 시스템 버스 Ø 발전된 시스템 버스 표준: PCI, PCMCIA, USB 등 q 외부 장치 v 입출력 장치 Embedded System Intro. -7
System-on-Chip q 하나의 칩에 프로세서, 메모리, 그리고 각종 입출력 제어기를 포함한 소형 기기 를 위한 프로세서 패키지 q 복잡, 다양한 기능을 가지는 임베디드 시스템 발전의 중요한 계기 q So. C의 예 v Intel XScale 기반 프로세서, TI OMAP, Freescale MX 1 등 Embedded System Intro. -8
System-on-Chip의 발전 q 기본 So. C 단계 v Processor core + basic I/O (UART) + SRAM q 초기 이동 단말기용 So. C 단계 v Processor core + LCD controller + memory controller + various I/O interfaces q 확장된 기능을 위한 복합 So. C 단계 v Initial handheld So. C + multi-media accelerator + camera interface + other special functions q 다중 프로세서 코어 So. C v Generic purpose processor core + DSP core Embedded System Intro. -9
이동 단말기를 위한 So. C의 예 Dragonball MX 1 XScale-based PXA 26 x OMAP Embedded System Intro. -10
주요 프로세서 코어 q x 86 q ARM q IBM/Motorola Power. PC q MIPS q Hitachi Super. H q Motorola 68000 q Intel XScale Embedded System Intro. -11
x 86 q 개요 v Intel사에 의해 배포되는 386, 486, Pentium 계열의 프로세서들 v AMD사와 National Semiconductor사에서도 호환 프로세서들을 제공함 v 최근에 386 계열의 프로세서 코어와 PC의 기능 요소들을 System-on-Chip으로 통 합하는 경향이 나타남 Ø 예: National Semiconductor사의 Geode family, ZF Micro Devices사의 ZFx 86 v PC 시장과 달리 임베디드 시스템 시장에서는 ARM, MIPS, Power. PC 프로세서들에 비해서 점유율이 낮음 v 리눅스 커널이 원래 x 86 플랫폼에서 처음으로 개발되었기 때문에 x 86 프로세서 기 반 임베디드 시스템에 친화적임 (커널을 수정할 필요가 거의 없음) q 참고문헌 v “Intel Architecture Software Developer’s Manual” Volume 1, 2, 3 by Intel v “The PC Handbook” by J. Choisser & J. Foster Embedded System Intro. -12
ARM q 개요 v “Advanced RISC Machine”의 약어로서 ARM Holdings사에 의해서 유지, 추진되는 프로세서 패밀리 Ø ARM Holdings사는 직접 프로세서를 생산하지 않고 ARM 코어 설계만을 제공함. Intel, Toshiba, 삼성 등 프로세서 제조사는 ARM Holdings 사에 라이센스 비용을 지 불하고 ARM 코어 설계를 가져다가 System-on-Chip 형태로 패키징하여 판매. v 모든 ARM 프로세서들은 동일한 명령어 집합을 사용하므로 binary code 수준의 호 환성 존재 Ø 그러나 어떤 보드의 프로그램을 다른 보드에서 항상 실행할 수 있지는 않음 v 2003년 현재 10종의 ARM CPU들, 16종의 플랫폼들, 200종의 보드들에 리눅스가 이식되어 있음 Ø 대표적 예: Intel사의 SA 1110 Strong. ARM CPU와 Assabet 보드 Embedded System Intro. -13
ARM q 개요 (계속) v ARM 보드가 폭넓게 사용되고 있기 때문에 각종 프로젝트들이 ARM을 지원함 Ø RTAI 프로젝트에서 ARM 리눅스 커널에 hard real-time 기능을 지원하며, Strong. ARM RTLinux 이식판도 http: //www. imec. be/rtlinux/ 에서 제공됨 Ø Blackdown 프로젝트에서 Java를 지원 v JTAG 디버거가 폭넓게 사용되고 있기 때문에 커널 디버거는 없음 q 참고문헌 v http: //www. arm. linux. org. uk/ v “ARM Architecture Reference Manual” by David Seal v “ARM System-on-Chip Architecture” by Steve Furber v 개별 ARM 프로세서 제조사의 매뉴얼을 참고할 것 Embedded System Intro. -14
IBM/Motorola Power. PC q 개요 v IBM사의 POWER (Performance Optimization With Enhanced RISC) 아키텍쳐를 기반으로 IBM, Motorola, Apple사가 공동 개발한 프로세서 Ø 예: Apple사의 Mac 컴퓨터에서 사용 v 관련 회사들은 초기에 “Power. PC Reference Platform (PRe. P)”에 합의하여 보드를 개발하였으나 이후에 표준 플랫폼을 “Common Hardware Reference Platform (CHRP)”으로 교체함 v i 386, ARM과 함께 리눅스가 가장 잘 지원하는 아키텍쳐 중의 하나 v PPC 리눅스 커널은 RTLinux, RTAI에 의해 지원되며, Java, Open. Office 와 같은 다 양한 소프트웨어가 이식되어 있음 q 참고문헌 v http: //penguinppc. org/ , http: //www. linuxppc. org/ v “Power PC Microprocessor Common Hardware Reference Platform: A System Architecture Guide”, Morgan Kaufmann Publishers v “Power. PC Microprocessor Family: Programming Environments for 32 -bit Microprocessors” Embedded System Intro. -15
MIPS q 개요 v “Computer Architecture: A Quantitative Approach” 책으로 널리 알려진 John Hennessy 교수가 직접 개발한 프로세서로서 “Microprocessor without Interlocked Pipeline Stages” 프로젝트의 약어를 의미함 v SGI사에서 판매한 워크스테이션 및 서버들, Nintendo의 64 -bit 시스템, Sony사의 Playstation 1 & 2 등을 통해서 명성을 얻었음 v MIPS Technology사는 ARM Holdings사처럼 CPU 코어를 라이센스 형태로 제 3자 에게 판매함 v ARM과 달리 다양한 명령어 집합 구현들이 존재함 Ø 32 -bit MIPS 구현: IDT, Toshiba, Alchemy, LSI사 Ø 64 -bit MIPS 구현: IDT, Toshiba, LSI, NEC, QED, Sand. Craft사 v MIPS에 대한 리눅스의 지원은 i 386과 Power. PC와 비교할 때 제한적임 Ø 리눅스 배포사 중에서는 Debian과 Red Hat 7. 1만이 MIPS 이식판를 지원 Ø PDA 및 개발 보드 제조사들은 MIPS 보드를 많이 지원함 Ø Java 지원이 잘 안 되고, RTAI 프로젝트만 hard real-time 기능 지원 v 최근에 NEC의 VR 칩을 기반으로 만들어진 프로세서에 많은 개발자들이 리눅스를 이식하고 있음 (http: //linux-vr. org/ ) Embedded System Intro. -16
MIPS q 참고문헌 v http: //www. linux-mips. org/ v “See MIPS run” by Dominic Sweetman v “MIPS Architecture for Programmers” Volume 1, 2, 3 by MIPS Technology Inc. Embedded System Intro. -17
Hitachi Super. H q 개요 v Hitachi사에서 8 -, 16 -bit H 8 마이크로콘트롤러를 향상시키면서 개발한 프로세서 로서 내부적으로 32 -bit 데이터를 조작하지만 외부로는 다양한 버스 폭을 제공함 v 이후에 Hitachi사와 STMicroelectronics사(SGS-Thomson Microelectronics)에 의 해서 공동 설립된 Super. H사는 ARM Holdings사, MIPS Technologies사처럼 프로 세서 라이센싱을 추구 v Hitachi사의 제품들, Sega Saturn, Dreamcast 게임 콘솔과 같이 소비자 지향 임베 디드 시스템에서 널리 사용됨 v 리눅스는 MMU가 없는 SH-1, SH-2 계열의 프로세서들을 지원하지 않고, MMU가 있는 SH-3 계열부터 일부 지원함 Ø 7707, 7708, 7709 SH-3 프로세서 Ø 7750, 7751, ST 40 SH-4 프로세서 Ø SH-5 프로세서에는 현재 리눅스 이식이 진행중 (http: //www. superh- software. com/linux/ 참고) Embedded System Intro. -18
Hitachi Super. H q 개요 (계속) v 커널 이외에 SH 프로세서에 대한 지원은 현재로서는 제한적 Ø 커널 디버거는 있지만, Java 지원은 없음 Ø SH-4 프로세서에 RTLinux가 이식되었으나 FSMLabs에 의해 배포되는 공식 Open RTLinux에는 아직 포함되지 않음 (ftp: //ftp. aandd. co. jp/pub/linuxsh/rtlinux/current/ ) q 참고문헌 v http: //linuxsh. sourceforge. net/ , http: //www. m 17 n. org/linux-sh/ v Super. H RISC engine SH-3/SH-3 E/SH 3 -DSP Programming Manual v Super. H RISC engine SH-4 Programming Manual Embedded System Intro. -19
Motorola 68000 q 개요 v 리눅스에서는 m 68 k로 지칭하며, 리눅스 커널은 다수의 MMU 내장 프로세서들, 커 널 2. 5에서는 MMU 없는 프로세서들도 지원함 v Atari, Apple, Amiga사 제품들과 HP, Sun, Apollo사의 워크스테이션들에서 폭넓게 사용되었으며, 임베디드 시스템 시장에서도 관심이 높았으나 현재에는 ARM, MIPS, SH, Power. PC에 밀려 관심 저하 v 리눅스 커널은 위에서 언급한 시스템들을 모두 지원하며 Motorola와 BVM의 VME 시스템(뒷장의 “VME 버스” 참고)도 지원함 v 최근에 MMU 내장 m 68 k 프로세서들이 거의 사용되지 않기 때문에, 리눅스 소프트 웨어 지원은 상당히 부족함 Ø Java, hard real-time, Open. Office 모두 지원되지 않음 v Debian 배포판만이 가장 많은 지원을 하고 있음 q 참고문헌 v http: //www. linux-m 68 k. org/ v 68000 Family Programmer’s Reference Manual v M 68000 8 -/16 -/32 -Bit Microprocessors User’s Manual Embedded System Intro. -20
Intel XScale Microrchitecture Efficiency Enhancement ARMv 4 T ARMv 5 TE DSP Enhancement Enhanced MAC ARMv 5 TE Power Management Performance Monitor Debug & More Embedded System Intro. -21 XScale
버스와 인터페이스 q 세부목차 v ISA v PCI v PCMCIA v PC/104 v VME v Compact. PCI v SCSI v USB v IEEE 1394 (Fire. Wire) v GPIB v I 2 C Embedded System Intro. -22
ISA q 개요 v “Industry Standard Architecture”의 약어로서 PC-AT 아키텍쳐를 위해서 설계된 버스 v 물리 주소 공간으로의 매핑과 같은 기능이 부족함에도 불구하고 PC 환경에서 큰 성 공을 거둠 v ISA 디바이스들은 x 86 명령어 집합이 이미 제공하는 I/O 포트 프로그래밍에 의해서 조작 가능함 Ø 커널은 디바이스 드라이버들이 해당 디바이스를 사용할 수 있도록 (버스 활성화와 같 은) 별도의 작업을 해 줄 필요가 없음 Ø 디바이스 드라이버들은 지정된 포트에 in/out 어셈블리 함수를 사용하여 해당 디바이 스를 곧장 접근함 v 임베디드 시스템에서 Plug and Play (PNP) 기능을 필요로 할 경우에는 ISA 대신 Compact. PCI, PCMCIA, USB 등을 사용함 v Extended ISA (EISA)는 대중화에 실패하고 PCI 버스에 의해서 추월되었음 q 참고문헌 v “ISA System Architecture” by Anderson and Shanley Embedded System Intro. -23
PCI q 개요 v “Peripheral Component Interconnect”의 약어로서 현재 가장 크게 성공한 버스이 며 PCI Special Interest Group (PCI-SIG)이 spec을 관리함 v i 386에서 ISA의 대체 버스로서 개발되었지만, PPC와 MIPS 아키텍쳐에서도 사용 v ISA와 달리 커널은 디바이스 드라이버들이 해당 디바이스를 사용할 수 있도록 PCI 버스를 활성화하는 작업을 미리 수행해야 함 Ø PC에서는 BIOS가 PCI 활성화를 수행해주기 때문에, 커널은 BIOS의 PCI 관련 테이 블을 검색하기만 하면 됨 Ø 커널은 디바이스 드라이버들이 해당 디바이스를 접근할 수 있도록 API와 접근 정보 를 제공함 v 리눅스의 PCI 버스 지원은 비교적 완전하다고 할 수 있음 q 참고문헌 v “PCI System Architecture” by Shanely and Anderson Embedded System Intro. -24
PCMCIA q 개요 v “Personal Computer Memory Card International Association”의 약어로서 PCMCIA 표준을 제정하는 기구와 버스 이름을 동시에 지칭함 v 초기에 제시된 16 -bit 카드 표준 이후에 32 -bit Card. Bus 표준과 USB Card. Bay 명 세 표준을 제시함 v PCMCIA를 통해서 Compaq사의 i. PAQ에서 무선 랜 카드를 사용할 수 있으며, 다른 시스템에서는 Compact. Flash 카드와 같은 영구 저장 장치를 사용할 수 있음 v 리눅스 커널의 PCMCIA 지원은 두 갈래로 진행중임 Ø David Hinds가 관리하는 Linux PCMCIA 프로젝트 ü http: //pcmcia-cs. sourceforge. net/ ü i 386 아키텍쳐는 완벽하게, PPC는 부분적으로 지원하며, 다른 종류의 아키텍쳐 에 대한 지원은 미미함 Ø 공식 커널 버전에 제공하는 PCMCIA 지원 ü 위 프로젝트에서 이미 지원하는 PCMCIA 카드 중 일부만을 지원함 ü 현재로서는 David Hinds의 패키지를 사용하는 것이 좋음 q 참고문헌 v “Linux PCMCIA Programmer’s Guide” by David Hinds Embedded System Intro. -25
PC/104 q 개요 v 거친(rugged) 실행 환경을 가진 임베디드 시스템에서 ISA의 대체 버스로서 사용할 수 있도록 PC/104 Consortium에서 제안한 표준 v ISA와 동일한 전기적 신호를 가지며, ISA의 기계적 명세의 단점을 보완하여 확장성 과 견고성을 향상시킴 Ø 카드 삽입을 위해 ISA가 “slot”을 사용하는 것과 달리, PC/104는 “pin connector”를 사용함 v PCI가 대중화되자, PCI 신호와 호환성 있는 PC/104++ 버스가 제안됨 v 신호 차원에서 PC/104가 ISA와 동일하고, PCI/104++가 ISA 및 PCI와 동일하므로, 이론적으로 소프트웨어 차원에서 이들 버스를 지원하기 위해 추가의 작업이 요구되 지는 않음 v 그러나, 리눅스가 모든 PC/104, PC/104++ 디바이스를 지원하지는 않음 Embedded System Intro. -26
VME q 개요 v Motorola사의 VERSA backplane 버스를 기반으로, Motorola, Mostek, Signetics사 가 개발한 버스로서 VERSA의 전기적 신호와 Eurocard mechanical form factor를 결합함 (“VERSA Module Eurocard”의 약어) v 강력하고 견고한(rugged) 시스템을 구성할 때 많이 사용되며 어떤 표준화 기구에 의해서 좌우되지 않는 개방 표준(open standard)이라는 점 때문에 널리 사용됨 v VME 버스를 통해 각각 자신만의 CPU와 OS를 가진 다수의 VME 보드들을 backplane에 수직으로 삽입함 (pin connector로 연결) v 각 보드가 버스 마스터가 되기 위해서는 중재(arbitration)가 필요하며, VME 보드에 서 실행하는 리눅스는 이를 위해 VME 하드웨어와 상호작용함 v 현재 두 갈래의 Linux VME 프로젝트가 있음 Ø Motorola 68 K 기반 보드들에 리눅스 이식 (http: //www. sleepie. demon. co. uk/linuxvme/) Ø CPU와 무관하게 모든 VME 보드들에 리눅스를 이식하는 VMELinux 프로젝트 (http: //www. vmelinux. org ) Ø 이 밖에도 DENX Software Engineering에서는 PPC기반 보드들에 리눅스 이식 Embedded System Intro. -27
VME q 참고문헌 v “VMEbus International Trade Association (VITA)” web site v “The System Engineer’s Handbook: A guide to building VMEbus and VXIbus systems” by John Black Embedded System Intro. -28
Compact. PCI q 개요 v Ziatech사와 Compact. PCI의 표준을 관리하는 PCI Industrial Computer Manufacture’s Group (PICMG)에 의해서 개발됨 v high performance & high availability 응용 시스템을 위한 플랫폼용으로 사용 v 설계상 장점은 VME 버스를 통해 유명해진 Eurocard form factor를 사용하고 전기 적 신호 차원에서 PCI와 동일하게 만들어 저가의 PCI 칩들을 그대로 사용할 수 있 다는 것 v Compact. PCI는 VME 버스와 유사하게 Compact. PCI backplane에 Compact. PCI 보 드를 수직으로 삽입함 (pin connector로 연결) v 그러나, VME 버스처럼 다수의 버스 마스터를 허용하지 않고 단 하나의 버스 마스터 를 요구함 v 시스템 실행중 Compact. PCI 보드의 삽입과 삭제가 가능하도록 “Hot Swap” 모드를 제공함 Embedded System Intro. -29
Compact. PCI q 개요 (계속) v 리눅스는 기본적인 Compact. PCI 명세를 지원하고 있으며, hot swap 기능은 2. 4 버 전에서 제공함 Ø Linux Hotplugging 프로젝트 (http: //linux-hotplug. sourceforge. net/ ) v 그러나, 리눅스에는 Compact. PCI 보드들을 위한 드라이버가 현재로서 거의 없기 때 문에 고가용성을 추구하는 다양한 상업용 solution들이 등장 Ø Availix사의 HA Cluster, Monta. Vista사의 High Availability Framework Ø High-Availability Linux 프로젝트(http: //linux-ha. org/)가 진행중이며 Compact. PCI 에만 제한되지는 않음 q 참고문헌 v http: //linux-hotplug. sourceforge. net/ Embedded System Intro. -30
SCSI q 개요 v “Small Computer Systems Interface”의 약어로서 Shugard Associates에 의해서 처음으로 소개된 이후 ANSI, ITIC, NCITS, T 10 등의 표준화 기구에 의해서 표준으 로 정착함 v high-end 워크스테이션 및 서버의 하드 드라이브를 위한 고처리량 인터페이스로 임베디드 시스템에서 많이 사용되지는 않음 Ø Compact. PCI 기반 고가용성 시스템에서는 사용: Compact. PCI backplane에 Compact. PCI SCSI controller를 꽂아서 SCSI 디바이스들을 연결함 v 리눅스 커널 개발자들은 SCSI 관련 코드를 대대적으로 재작성할 계획이 있으므로 SCSI 장착 시스템을 개발할 때 소프트웨어 개발자는 주의가 요구됨 q 참고문헌 v http: //www. torque. net/sg/ , http: //www. andante. org/scsi. html v “The Book of SCSI: I/O for The Millennium” by Gary Field and Peter Ridge Embedded System Intro. -31
USB q 개요 v “Universal Serial Bus”의 약어로서 USB Implementers Forum (USB-IF)에서 spec 관리 v PC의 직렬/병렬 포트 등 저속 인터페이스를 교체할 목적으로 개발된, 사용하기 편 한 고속 인터페이스 v USB 디바이스들은 나무 구조를 형성하여 연결됨 Ø 주보드는 root hub라고 불리며 모든 USB 디바이스들과 non-root hub들이 연결됨 Ø direct USB cabling을 통해서 시스템들을 네트워킹할 수 없다는 단점이 있음 Ø 그러나 일부 제조사는 USB 표준과 달리 USB를 통해서 host-to-host link를 만들어 주는 solution을 제공함. 그리고 USB Ethernet adapter도 있으므로 USB을 이용한 네트워킹이 가능함. Embedded System Intro. -32
USB(Cont. ) q 개요 (계속) v 현재 리눅스는 USB root hub로서의 충분한 기능을 지원하고 있음 Ø USB Stack과 다수의 드라이버들이 제공됨 (http: //www. linux-usb. org/ ) Ø USB 디바이스 제조사들은 리눅스 드라이버 작성에 매우 비협조적임 v 그러나 리눅스 커널이 USB 디바이스로서 동작하게 하는 데에는 지원이 아직 부족 함 Ø Compaq사의 i. PAQ에서는 이미 이 기능을 구현하였으나, 현재 합의된 표준 구현이 없음 q 참고문헌 v USB Specification by USB-IF v “Programming Guide for Linux Device Drivers” by Detlef Fliegl Embedded System Intro. -33
IEEE 1394 (Fire. Wire) q 개요 v Fire. Wire는 Apple사의 트레이드마크로서 나중에 IEEE 1394 표준 형성에 크게 기여 함 v IEEE 1394는 USB와 유사하며 단순한 저가 하드웨어 인터페이스를 통해 고속 전송 을 할 목적으로 개발되었으며, USB보다 훨씬 빠름 Ø 디지털 카메라, 외장 하드 드라이브와 같은 고속 처리 장치들에 적합 Ø 최근 개선된 USB 표준은 처리 속도를 개선하였지만 아직 IEEE 1394에 미치지 못함 v USB와 달리 디바이스들 간의 연결은 daisy-chain 스타일 또는 IEEE 1394 hub를 사 용하여 만들며, SCSI에서 필요했던 termination도 필요없음 Ø USB에서 불가능했던 두 개 이상의 컴퓨터들의 직접 연결도 가능 Ø 고속 네트워킹을 위한 IP over IEEE 1394 구현을 위한 RFC도 있음 v 리눅스의 IEEE 1394 지원은 충분히 성숙하여 다양한 IEEE 1394 디바이스들을 지원 할 수 있음 Ø IEEE 1394 for Linux 프로젝트 (http: //www. linux 1394. org/ ) q 참고문헌 v “Fire. Wire System Architecture” by Don Anderson Embedded System Intro. -34
GPIB q 개요 v “General-Purpose Interface Bus”의 약어로서 HP사의 HP-IB 버스에서 기원하였 으며 IEEE 488 표준임 v 데이터 수집과 분석에 사용되는 많은 디바이스들이 사용하는 인터페이스 v stackable connector를 사용 Ø 컴퓨터와 디바이스 A를 케이블로 연결하고, A의 케이블 connector에 디바이스 B를 연결하기 위한 새 케이블의 connector를 부착할 수 있음 v 리눅스 커널은 GPIB 어댑터를 위한 드라이버를 전혀 제공하지 않지만, Linux GPIB 프로젝트가 진행중임 Ø http: //linux-gpib. sourceforge. net/ 에서 커널 드라이버, 사용자 수준 라이브러리 등 을 제공하며 HP, Keithley, National Instruments사의 하드웨어들을 지원함 q 참고문헌 v “Linux-GPIB User’s Guide” 매뉴얼 Embedded System Intro. -35
I 2 C q 개요 v “Inter-Integrated Circuit”의 약어로서 TV set 내부의 컴포넌트 간 통신을 위해 Philips사에 의해 개발되었으며 현재 다양한 임베디드 디바이스들에서 사용됨 v small-scale 버스로서 임베디드 시스템의 IC 컴포넌트 간에 제한된 양의 데이터 교 환을 목적으로 하는 단순한 직렬 버스 (I 2 C 디바이스들: LCD driver, EEPROM, DSP) v 모든 디바이스들은 두 개의 wire로 연결되는데, 하나는 클럭 시그널 (Serial Clock: SCL)을 위한 것이고, 다른 하나는 데이터 (Serial Data: SDA)를 위한 것임 v wire 상에 있는 모든 디바이스들은 버스 마스터가 될 수 있지만, 통상적인 구현은 단 하나의 버스 마스터만 두는 것임 v 리눅스는 다수의 I 2 C 디바이스들을 지원하며 이것과 관련하여 “System Management Bus (SMBus)”를 지원함 v 하드웨어 모니터용 센서 디바이스들이 I 2 C를 많이 사용하기 때문에 Linux hardware monitoring 프로젝트(http: //www 2. lm-sensors. nu/~lm 78/)에서 I 2 C 관련 지원을 하고 있음 q 참고문헌 v http: //www. semiconductors. philips. com/busses/i 2 c/ Embedded System Intro. -36
입출력 q 세부목차 v Serial Port v Parallel Port v Modem v Data Acquisition v Process Control v Home Automation v Keyboard v Mouse v Display v Sound Embedded System Intro. -37
Serial Port q 개요 v 호스트와 타겟 사이의 통신을 위해 RS 232 직렬 연결이 폭 넓게 사용됨 v RS 232는 단지 하드웨어 인터페이스이며 리눅스 커널은 RS 232 통신을 실제 수행하 는 UART (Universal Asynchronous Receiver-Transmitter) 라는 칩에 대한 드라이 버를 제공함 Ø drivers/char/serial. c : main serial driver v 리눅스에서 직렬 인터페이스에 대한 접근은 터미널 디바이스를 통해서만 가능함 /dev/tty. S 0 ~ /dev/tty. S 191 q 참고문헌 v “Serial Programming HOWTO” v “Advanced Programming in the UNIX Environment” by Richard Stevens Embedded System Intro. -38
Parallel Port q 개요 v 프린터 외에도 하드 드라이브, 스캐너, 네트워크 어댑터 등도 연결 가능 v IEEE 1284는 병렬 포트를 통한 외부 디바이스와의 통신을 정의하는 표준 v PC 스타일의 SBC(Single Board Computer)가 아니라면 임베디드 시스템에서는 병렬 포트는 거의 사용되지 않으며, USB 및 IEEE 1394 발명 후에는 필요성이 더 감소함 v 임베디드 시스템에서는 multibit 입출력용으로 사용할 수 있음 Ø 디버깅 목적으로 LED를 병렬 포트 핀들에 연결하여 시스템 코드의 진행 상태를 LED에 표시할 수 있음 v 리눅스 병렬 포트 드라이버는 3 계층으로 구성됨 Ø low-level driver: 하드웨어 인터페이스 관리 Ø middle-level driver: 아키텍쳐 독립적인 드라이버 Ø high-level driver: line printer 드라이버가 대표적인 예임 (/dev/lp 0 ~ /dev/lp 1) v 병렬 포트 자체는 /dev/partport. X 로 접근할 수 있으며 사용자 공간 병렬 포트 드라이버가 있으 면 사용 가능 (drivers/char/ppdev. c 참고) q 참고문헌 v Linux Parallel Port Homepage (http: //www. torque. net/linux-pp. html) v “The Linux 2. 4 Parallel Port Subsystem” (http: //people. redhat. com/twaugh/parport/) Embedded System Intro. -39
Modem q 개요 v 임베디드 시스템은 POTS (plain old telephone system)와 인터페이스를 하기 위해 모뎀을 사용함 v 이를 통해서 알람 시스템, 현금 지급기, 원격 모니터링 하드웨어 등은 중앙 시스템 에 접속 가능 v 리눅스에서 모뎀은 직렬 포트로 보이기 때문에 일반적으로 UART 드라이버를 통해 서 제어함 v 그러나 리눅스는 최근에 PC 시장에 등장한 Win. Modem을 아직 지원하지 못함 Ø Win. Modem은 주로 Windows 계열 운영체계에서 사용할 목적으로 개발된 모뎀으로 서 최소한의 하드웨어 기능 외에는 모두 소프트웨어 드라이버가 전체 기능을 수행함. 리눅스의 경우 이런 종류의 모뎀을 serial driver를 통해서 동작시킬 수 없음. q 참고문헌 v Win. Modem 지원 프로젝트 (http: //www. linmodems. org/) Embedded System Intro. -40
Data Acquisition q 개요 v 데이터 수집 하드웨어(DAQ)는 transducer라는 하드웨어가 물리적인 현상을 전기적 신호로 바꾼 이후에 이를 sampling하는 하드웨어임 v DAQ는 다양한 형태를 가지고 있어서, 아직 통일된 표준적인 인터페이스가 없음 v 리눅스에서는 Comedi (COntrol and MEasurement Device Interface)라는 프로젝 트를 통해 표준적인 인터페이스를 제공하려고 노력 중 Ø 다양한 DAQ 보드에 대한 디바이스 드라이버와 통일된 API를 제공하는 사용자 라이 브러리 (Comedilib) 및 커널 모듈 (Kcomedilib)을 제공 Embedded System Intro. -41
Process Control q 개요 v DAQ와 함께 프로세스 자동화 시스템(process automation system)의 중요한 요소 이며, 일반적으로 PLC를 사용함으로써 프로세스 제어 수행 v 리눅스에서는 프로세스 제어를 크게 나누어 3가지 방법으로 할 수 있음 Ø 직렬 또는 병렬 포트에 step motor와 같은 외부 하드웨어를 연결하고 직렬/병렬 포트 프로그래밍을 통해서 제어 프로그램 구현 Ø 외부 버스에 프로세스를 제어하는 특수 보드를 연결하고 이 보드의 리눅스 드라이버 를 구현 (Comedi 패키지에서 많은 제어 보드를 지원) Ø 전통적인 PLC를 대체할 수 있는 리눅스 시스템이 현재 개발중임 ü Machine Automation Tools Linux. PLC (http: //mat. sourceforge. net/) 프로젝트 는 PLC 언어 인터프리터, 하드웨어 드라이버, PLC 모듈 동기화 라이브러리, GUI 인터페이스 등을 제공함 Embedded System Intro. -42
Home Automation q 개요 v 주거 자동화(home automation)에 관한 폭넓은 정보는 Dan Hoehnen’s Home Automation Index를 참고할 것(http: //www. homeautomationindex. com) v 주거 자동화에서 자주 사용되는 기술 중 하나인 X 10 Power Line Carrier 기술은 최 근에 특허 유효 기간이 만료되어 많은 업체들이 경쟁적으로 X 10 호환 장비들을 개 발 판매하고 있음 Ø X 10 Power Line Carrier 기술은 가정에 들어오는 전력선(power line)에 짧은 RF bursts를 실어서 통신하는 기술임 Embedded System Intro. -43
Keyboard & Mouse q 키보드 v 일반적으로 임베디드 시스템은 키보드를 장착하지 않지만, 최근에 웹을 사용하는 소비자 위주의 응용에서는 키보드의 유사 형태가 사용됨 v 리눅스에서는 터미널 입출력 시스템을 통해서 키보드 입력을 처리하며, PDA의 경 우 필기체 인식 소프트웨어도 터미널 시스템에 연관됨. v 리눅스의 터미널 입출력 시스템은 다음과 같이 여러 단계의 드라이버들 로 구성됨 Ø 일반 키보드: char/pc_keyb. c, char/keyboard. c, char/tty_io. c Ø USB 키보드: usb/usbkbd. c, input/keybdev. c, char/keyboard. c, char/tty_io. c q 마우스 v 임베디드 시스템에서는 마우스보다는 터치스크린이 널리 사용되며, 이것은 마우스 입력과 동일하게 처리됨 v 마우스 타입마다 마우스 프로토콜이 다르지만, 잘 정의된 API가 이미 제공되고 있음 Embedded System Intro. -44
Display & Sound q 디스플레이 v 임베디드 시스템의 디스플레이는 LED, alpha-numeric LCD로부터 최근에 고해상 도 LCD로 급격히 발전하고 있음 v 리눅스에서는 디스플레이를 일차적으로 터미널 콘솔(console)로 취급하여 문자 출 력에 이용하지만, 보다 정교한 그래픽 인터페이스를 제공하기 위해 X 윈도우 이외 의 윈도우 시스템을 도입 Ø Qt, GTK, Microwindows 등 q 사운드 v 소비자 지향 시스템에서는 사운드가 중요한 요소로 부각 v 리눅스의 사운드 시스템은 아직 많은 개발이 요구되는 부분임 Ø 리눅스의 Open Sound System (http: //www. opensound. com/pguide) 구조는 커널 2. 5 이전 버전의 모든 사운드 카드 드라이버가 사용해 왔지만, 현대적인 오디오 하드 웨어에 부적합하다고 알려짐 Ø Advanced Linux Sound Architecture (http: //www. alsa-project. org/)가 곧 OSS 시 스템을 대체할 것으로 기대됨 Embedded System Intro. -45
저장장치 q 세부목차 v Memory Technology Devices Ø ROM and RAM Ø Disk. On. Chip Ø CFI-compliant flash Ø JEDEC-compliant flash Ø Non-DOC NAND flash Ø Old non-CFI flash v Compact. Flash Embedded System Intro. -46
Memory Technology Devices q 개요 v ROM, RAM, flash, M-Systems사의 Disk. On. Chip (DOC) 등과 같은 모든 메모리 디 바이스들을 포괄적으로 지칭함 v 각 메모리 디바이스들은 고유의 특성과 한계를 가지고 있으며, 이를 임베디드 시스 템에서 사용하기 위해서는 일반적으로 별도의 tool이 요구됨 Ø ROM (Read-Only Memory): power-off 상태에서도 contents 유지, 일반적으로 reprogramming 불가 Ø RAM (Random Access Memory): power-on 상태에서만 contents 유지 Ø flash memory: power-off 상태에서도 contents가 유지되며, reprogramming 가능 v 리눅스 커널은 메모리 디바이스들 사용에 있어 개별적인 tool을 사용하는 것을 피하 고 표준적인 인터페이스를 제공하기 위해 MTD 시스템을 제공 Ø http: //www. linux-mtd. infradead. org/ Embedded System Intro. -47
Memory Technology Devices q ROM and RAM q Disk. On. Chip v M-Systems사에서 제공하는 패키징된 NAND flash product q CFI-compliant flash q JEDEC-compliant flash q Non-DOC NAND flash v NAND flash product로서 가장 인기있는 것은 M-Systems사의 DOC이지만, DOC 와 다른 종류의 NAND flash product들도 사용되고 있음 Ø include/linux/mtd/nand-ids. h 파일 참조 q Old non-CFI flash Embedded System Intro. -48
Compact. Flash q 개요 v ATA-compliant flash device로서 앞에서 설명한 Memory Technology Device와 달리 오직 ATA (IDE) 인터페이스를 통해서만 사용 가능 Ø AT Attachment (ATA): 1986년 Imprimis, Western Digital, Compaq사에 의해서 개 발된 인터페이스 표준. 종종 IDE (Integrated Drive Electronics)라고 불리지만, ATA 가 공식 명칭임. Embedded System Intro. -49
네트워킹 q 세부목차 v Ethernet v IEEE 802. 11 (Wireless) v Ir. DA v Bluetooth Embedded System Intro. -50
Ethernet q 개요 v Xerox PARC research center에 의해 개발된 이후로 현재 가장 광범위하게 사용되 는 네트워크 인터페이스 v 10 Mbps, 100 Mbps, Gigabit Ethernet까지도 존재 v 임베디드 시스템에서 개발 단계에서 많이 사용 Embedded System Intro. -51
IEEE 802. 11 (Wireless) q 개요 v 무선 랜 환경에서 광범위하게 사용되고 있는 무선 통신 표준 v 2. 4 GHz (802. 11 b)와 5 GHz (802. 11 a) 주파수를 사용 v PDA와 같은 사용자 지향적인 임베디드 시스템에서 많이 사용됨 v 리눅스는 802. 11 b를 따르는 하드웨어를 폭넓게 지원하고 있음 Ø kernel build option에서 다수의 onboard 또는 non-PCMCIA bus-attached device 들을 지원 Ø PCMCIA 802. 11 card들은 David Hinds’ PCMCIA 패키지 안에서 지원 v 리눅스에서 ethernet을 위해 사용하던 대부분의 tool을 모두 사용할 수 있음 v 단, identification, encryption keys, signal strength and link quality monitoring 등 을 위해서 추가의 tool의 요구됨 (Jean Tourrilhes’ web site 참조) Embedded System Intro. -52
Ir. DA q 개요 v 1993년 50여개 회사가 연합해 설립한 Infrared Data Association (Ir. DA)에 의해서 개발된 적외선 데이터 통신 인터페이스 v 다른 통신 인터페이스에 비해 훨씬 저렴하다는 것이 큰 장점 v 1 미터 범위 안에서 최대 4 Mbps 까지 전송률 제공 v Ir. DA 통신 내내 두 시스템의 적외선 송출 포트가 마주 보아야 한다(directional pointing)는 제약점이 있음 Ø 그러나, 이 특징은 무선 네트워크에서 흔히 제기되는 보안 문제에 대한 해결책으로 간주되기도 함. 즉, 사용자가 포인팅하는 시스템에만 데이터를 보내줄 수 있다는 특 징은 큰 장점 Embedded System Intro. -53
Linux Ir. DA Subsystem Architecture Applications TCP/IP PPP TTY Ir. LAN Ir. COMM Ir. NET Open. OBEX IAP Tiny. TP Ir. LMP Ir. LAP SIR Ir. TTY Serial Dongles Ir. Port On-board device Ir. PHY Embedded System Intro. -54 Bus-attached device USB Dongle FIR
Linux Ir. DA 구현 q Ir. PHY v 적외선 통신을 수행하는 물리적인 장치. 속도에 따라 다음 3가지로 분류 Ø serial infrared (SIR): up to 115. 2 Kbps, medium infrared (MIR): up to 1. 152 Mbps, fast infrared (FIR): up to 4. 0 Mbps Ø very fast infrared (VFIR): up to 16 Mbps. 향후 개발될 예정 q Ir. TTY v 16550 -UART-compatible Ir. DA ports를 지원함 v 이 드라이버는 리눅스 커널의 serial driver를 이용하며 115200 bps 까지의 속도를 제공 q Ir. PORT v 종국에 Ir. TTY를 대체할 half-duplex serial port driver q Serial Dongles, USB Dongles v Ir. DA port가 없는 시스템의 경우 serial port나 USB에 연결되어 Ir. DA 사용을 가능하 게 하는 장치 q On-board and bus-attached devices v 리눅스는 보드나 버스에 직접 연결된 Ir. DA 장치들도 지원함 Embedded System Intro. -55
Linux Ir. DA 구현 q Ir. LAP v link access protocol layer로서 신뢰성 있는 링크 서비스 제공 v connection-oriented, connectionless 서비스 모두 제공 q Ir. LMP v link management protocol layer로서 Ir. LAP위에서 복수개의 connection들을 제공 v 본래 service discovery capability를 제공하는 Information Access Service (IAS) 기능 포함되나 리눅스에서는 IAP에서 별도로 구현 q Tiny. TP v tiny transfer protocol로서 Ir. LMP connection 위에서 흐름 제어 구현 q IAP v information access protocol로서 IAS (Information Access Service)와 동일 q Ir. COMM v 직렬 또는 병렬 포트로 통신하던 응용들에게 Ir. DA를 사용할 수 있도록 제공된 emulation layer Embedded System Intro. -56
Linux Ir. DA 구현 q Ir. LAN v Ir. DA 위에서 LAN-like connection을 구현 q Ir. NET v Ir. LAN처럼 LAN-like connection을 구현하지만, full network service를 제공하지 않 고 PPP 정도만 올릴 수 있는 thin layer임. v Microsoft’s Windows 2000 Ir. DA 스택에서 처음 소개되었고 리눅스도 이를 따라서 구현하였음. 하지만 Ir. DA 표준이 아님. q Open. OBEX v Ir. OBEX라는 HTTP-like service를 구현 v http: //soruceforge. net/projects/openobex/ 참고 Embedded System Intro. -57
Bluetooth q 개요 v Ericsson이 Intel의 도움을 받아 개발한 근거리 무선망 통신 기술 v 현재 Bluetooth SIG는 Ericsson, IBM, Intel, Nokia, Toshiba를 포함하여 1900여개 의 회원사들로 구성됨 v 일부 PDA나 핸드폰에서는 이미 Bluetooth를 지원 v 2. 4 GHz 주파수 대역과 spread spectrum frequency hopping 기술을 사용 v piconet이라고 불리는 Bluetooth 디바이스의 통신망 안에서 디바이스들 간에 통신 수행 v 컴퓨터와 주변 장치 간의 케이블을 대체하는데 널리 사용될 수 있고(cable replacement 역할), 시스템에 주변 장치를 아주 쉽게 연결할 수 있다(wireless USB 역할)는 점에서 크게 각광받음 Embedded System Intro. -58
Linux Blue. Z Bluetooth Subsystem Architecture Applications TCP/IP PPP RFCOMMd SDPd L 2 CAP HCI core HCI-USB HCI-UART Bluetooth hardware Embedded System Intro. -59 HCI-VHCI
Linux Blue. Z 구현 q HCI-USB v USB-attached Bluetooth device를 말함 q HCI-UART v serial interface에 연결된 Bluetooth device를 말함 q HCI-VHCI v 테스팅을 위한 가상 Bluetooth device를 말함 (Virtual HCI). q HCI core v HCI hardware device driver 위에서 상위 수준 프로토콜과의 동작을 가능하게 함 q L 2 CAP v Logical Link Control and Adaptation Protocol로서 link multiplexing, packet segmentation and reassembly, quality of service를 책임짐 q RFCOMMd v Bluetooth device간에 serial 통신을 구현. Blue. Z에서는 pseudo-TTY를 이용하여 daemon process 형태로 구현하였고, 그 위에 PPP 탑재가 가능함. q SDPd v Service Discovery Protocol로서 daemon process 형태로 구현. Bluetooth device 간에 서비스를 서로 advertise하고 발견하기 위해 사용됨 Embedded System Intro. -60
휴식시간입니다. 감사합니다. 수고하셨습니다. Embedded System Intro. -61
220be6fe1e2e2196dddd5dddb881a24f.ppt