..PAGE:1Embedded SystemARM & LinuxJune 13, 2003Choi, Yong WunComputer Design..PAGE:2Content일반적인 개발 환경대표적인 Embedded ProcessorARM ProcessorSA-1110 Block DiagramSA-1110 Functional DiagramPipeline 구조레지스터 구조Status RegisterProcessor ModeExceptionsReal-Time Operation SystemEmbedded LinuxReal-Time Extensions of Embedded LinuxConclusionReferenceComputer System Design..PAGE:31. 일반적인 개발 환경Host-target development environment그림 1 임베디드 시스템 개발 환경Computer System Design..PAGE:42. 대표적인 Embedded Processor임베디드 RISC 프로세서 = 저 가격, 저 소비 전력, 고성능32비트 프로세서가 50%에 가까운 시장 점유율을 차지ARM (Intel Strong ARM Xscale, TI DSP), MIPS, PowerPC임베디드 아키텍쳐의 변천소비전력과 동작 주파수의 상황32비트 임베디드 프로세서별 출하량Computer System Design..PAGE:53. ARM ProcessorARM Architecture Revisions각각의 칩은 적용된 아키텍처 버전에 따라 다르다.적용된 기술에 따라 코어 명 뒤에 이니셜이 붙는다.ARM7 TDMI는 T = Thumb(코드사이즈를 줄이기 위해 32비트 명령어를 16비트로 압축하는 방법), D = Debug, M = Multiplication(32비트 하드웨어 곱셈 기), I = In circuit EmulationARM7에서는 3단, ARM9에서는 5단, ARM10에서는 6단, ARM11에서는 8단 파이프라인을 제공한다. (Intel 계열의 Strong ARM은 5단, Xscale은 7단 파이프라인 구조를 갖는다)Multiple Load Store 아키텍처를 지원모든 명령어가 단일 클럭에 수행되지 않는다.프로그램 코드 공간을 줄이고, 데이터 처리율을 향상Computer System Design..PAGE:6ARM Processor(계속)150MIPS@133MHz400MIPS@300MHz220MIPS@200MHz53MIPS@59MHzPerformance
Embedded System(ARM & Linux)Preface얼마 전부터 임베디드 시스템 쪽으로 관심을 갖고 공부를 해오던 중에 마침 이런 기회가 있어 그동안 공부하면서 모았던 자료를 바탕으로 간단하게나마 임베디드 시스템에 관하여 소개하려고 한다. 공부하면서 느낀 점은 자료가 턱없이 부족하고 주변에 같이 공부하는 사람이 만치 않다는 것이다. 나름대로는 원인이 생소한 분야이고, 공부하기 어렵고, 혼자서 공부하기는 돈이 많이 들고, 시장이 급하게 변한다는 것 때문이라 생각한다. 이런 기회를 살려 임베디드 시스템에 관심은 있으나 어디서, 어떤 식으로 접근을 해야 할지 몰라서 못하는 사람들에게 간략하게나마 소개를 하려고 한다.근래에 IT산업 분야에서 많이 보이고, 들리는 말이 Embedded와 SOC이다. 이 두 단어는 내장된 시스템을 구현한다는데 공통분모를 가지고 있다고 생각한다. 이번 기회를 통해서 다소 생소하게 생각되는 Embedded System에 대하여 간략히 소개하고, 국내·외 현황과 국가 정책, 그리고 Embedded System에 사용되는 대표적인 프로세서를 언급하고, 시장에서 가장 많이 쓰이고 있는 ARM Processor의 Architecture를 살펴보고 Embedded System에 사용되는 Real-Time OS와 가장 급부상 하고 있는 Embedded Linux에 대하여 간략히 살펴보기로 한다. 각각의 주제는 하나하나가 방대한 분량이기 때문에 제한된 페이지에 모든 내용을 기술할 수는 없다고 생각되고, 핵심만을 요약해 의미를 전달하려고 노력할 것이다.Contentspreface ------------------------------------------- 0Ⅰ. Embedded System이란 무엇인가? -------------------- 1Ⅱ. 국내외 산업 동향 ---------------------------------- 21. 국외 현황 -------------------------------------------- 22. 국내 현황 군사·산업용이나 반도체 제조장비 분야에서 주로 이용되어 왔기 때문에 특정 분야의 전문가들의 전유물처럼 여겨졌다. 그러나 최근 디지털 시대의 도래와 정보기술의 발전에 따라 디지털 TV, 디지털 카메라, 스마트 폰, PDA, Internet Appliance등 일반 소비자들이 사용하는 제품에 독자적인 CPU와 운영체제가 탑재 되면서 임베디드 시스템이 그 적용 범위를 점차 넓혀가고 있다.가장 일반적인 임베디드 시스템 개발환경은 아래와 같이 구성된다.그림 1 임베디드 시스템 개발 환경다음 장에서는 현재 임베디드 시스템 시장이 어떤 식으로 활성화 되어가고 있는지를 알아보겠다.Ⅱ. 국내·외 산업동향1. 국외 현황미국에서는 군사 과학용 임베디드 S/W를 21세기 핵심 분야로 선정하고 매년 4천억 이상을 연구개발에 투자하고 있으며, 유럽의 경우 군사 교통용 임베디드 S/W에 '99년부터 7년간 3조8천억, 영국의 경우 Embedded S/W센터 구축을 목표로 하고 있다. 일본의 경우 총무성 주도로 Ubiquitous 네트워크 개발을 추진 중 이며, 84년부터 TRON(The Real-time Operating System Nucleus)협회에서 표준 임베디드 OS를 개발하여 일본 내 가전제품에 적용 중이다. 현재 일본 내 정보가전에 약 40%의 시장을 점유하고 있다. 또한 리눅스 전문 업체인 몬타비스타 소프트웨어는 일본 독자 운용체계(OS)인 트론과 리눅스를 융합해 새 OS를 만들기로 하고 개발에 착수했다.그림 2 세계 Post-PC 시장동향미국의 경우는 프로세서, OS, 프로토콜 등 전 분야를 점유하고 있으며, 유럽의 경우 개발도구, 브라우저 등에 일부 업체가 존재하고 있다. 임베디드 OS의 경우 전통적인 RTOS의 시장 점유 하락으로 임베디드 OS시장에서는 마이크로소프트와 임베디드 리눅스가 시장선점을 위해 치열한 각축을 벌일 것으로 예상되며, 마이크로소프트는 WinCE 3.0을 내세워 데스크탑 시장에서의 독점을 임베디드 시장에서도 유지하려고 하고 있는데, 기존의 데스크탑용한 단순 솔루션 개발에 그치고 있다. 최근 PDA, 라우터 등에 일부 임베디드 리눅스를 탑재한 국산 제품이 시판중이나 아직 대부분 외국산 임베디드 S/W가 사용되고 있으며, 마이크로소프트는 웹 서비스 지원을 위한 임베디드 소프트웨어 플랫폼으로 닷넷 콤팩트 프레임워크를 개발하여 국내 임베디드 소프트웨어 시장을 적극 공략하고 있다. 막대한 초기 개발 투자비용과 단기적으로 낮은 투자 회수율 등으로 인하여 국내 대기업은 원천기술 확보보다는 외국기업 등과의 전략적 기술 제휴를 추진하고 있어서 장기적으로는 국내기술의 공동화 및 경제적 손실이 우려되고 있어 정부 주도의 기술 개발 및 표준화가 필요한 상황이라 판단된다. 실제 삼성 애니콜의 경우 현재 사용되고 있는 외국산 임베디드 소프트웨어를 국내 기술로 대체할 경우 1억 9천만불의 수입대체 효과를 기대할 정도로 국산 임베디드 S/W개발이 절실한 실정이다. 이를 위해 정부는 임베디드 리눅스 컨소시엄(ELC Korea)에 삼성, ETRI등이 참여하여 PDA용 임베디드 S/W 플랫폼 표준화가 진행 중이나 아직 구체적인 실적인 부족한 상태이다.3. 국가 정책정부는 "세계최초의 'Embedded, Everywhere' 국가구현"이라는 슬로건 아래 2007년까지 임베디드 S/W세계 2대 강국도약을 목표로 하고 있다. 이는 조립과 제조 위주의 선진국 Catch Up 전략에서 원천기술을 확보하고 세계표준을 주도하는 Leading전략으로의 전환을 꽤함으로써 우리나라의 강점인 유무선 통신, 가전, 자동차등에 국산 임베디드 S/W를 적용하여 World-Best상품으로의 생산 유도에 있다. 이를 위해 『임베디드 S/W 기술센터』를 설립하여 임베리드 리눅스 기반 표준 플랫폼 등 핵심기술을 개발하고 동시에 전략적인 국가 표준화를 추진하고 있다.그림 3 임베디드 S/W 핵심기술 개발 로드맵임베디드 S/W의 핵심 기술 개발 및 표준화 추진에 따른 미래 첨단 정보서비스 제공에 필요한 다양한 임베디드 시스템에 공통으로 탑재되어 최적의 성능을 지원할 수 요구된다.그림 6 소비전력과 동작 주파수의 상황이러한 임베디드 프로세서 시장은 불과 3,4년 전만 하더라도 8비트 프로세서가 주류를 이루었다. 그 뒤를 4비트와 16비트가 이었고, 32비트는 상당히 적은양이 출하되고 있었다. 그러나 매출은 32비트가 압도적으로 많았기 때문에 업체들은 32비트 생산에 주력, 지금 현재는 32비트가 50%에 가까운 시장 점유율을 기록하고 있다.그림 7 임베디드 RISC 프로세서의 연간출하량그림 8 32비트 임베디드 프로세서별 출하량대표적인 임베디드 프로세서를 살펴보면 ARM, MIPS, Motolora, IBM PowerPC가 주류를 이루고 있다. Intel과 TI 사는 각각 strong ARM, Xscale, DSP칩을 생산하고 있지만 핵심이 되는 코어부분은 ARM Core를 사용하기에 여기서는 언급하지 않겠다.그림에 나타나듯이 현재 임베디드 프로세서 사장에서 막강한 세력을 자랑하는 회사는 ARM사 이다. 98년까지만 하더라도 모토로라의 68K와 MIPS가 시장의 선두를 다투었지만 99년에 노키아가 자사의 GSM 모델의 셀룰러폰에 ARM을 채택함으로써 극적으로 업계 선두로 올라 지금현재 이동전화기 시장에서의 점유율이 70%를 상회하는 독보적인 입지를 지키고 있다. ARM 프로세서에 대한 내용은 다음 장에서 다루기로 한다.Ⅳ. ARM Processor1. ARM Processor의 발전 과정ARM사는 아키텍쳐, 프로세서 코어 및 시스템 코어를 라이센스 해주는 IP 회사이다. 앞에서도 언급했지만, ARM 프로세서는 임베디드 프로세서 부분에서 업계 1위로 대부분의 핸드폰, PDA, 네트웍 장비 등에 내장되어 있다. ARM 코어의 종류와 발전 과정을 아래의 그림에 나타내었다.그림 9 ARM Architecture RevisionsARM의 일반적인 코어 패밀리는 ARM7, ARM9, ARM10, 그리고 가장 최근에 ARMv6을 기반으로 한 ARM11이 있고, Intel에서 나온 StrongARM과 Xscale이 있다. 위의 그림에서 나타레지스터 구조그림 14 ARM's visible registersARM의 레지스터는 user mode 16개, 시스템 모드 15개의 총 31개의 레지스터를 갖는다. 또한 6개의 상태 레지스터를 갖고 있다. 일반적인 프로세서에서 PC(Program Counter)는 사용자가 손대지 못하는 것에 반해 ARM은 r15가 PC를 나타낸다. 이렇게 함으로서 사용자가 r15를 일반 레지스터로 쓸 수 있도록 하였다. 반면에 PC에 사용가가 임의의 값을 쓸 경우 오동작하거나 수행을 멈출 수도 있다. 이렇게 한 이유는 부족한 H/W 자원을 최대한 활용하고, 사용자가 유동적인 프로그래밍을 수행할 수 있도록 한 것이다.또한 r13이 Stack Pointer를 나타낸다. ARM에는 스택을 위한 별도의 PUSH, POP 명령이 없다. r14는 Link Register이다. ARM에는 별도의 CALL, RET 명령이 없고, BL(Branch with Link) 명령을 사용한다.4. AMBA(Advanced Microcontroller Bus Architecture)ARM프로세서 코어는 빠른 속도로 캐쉬와 인터페이스를 하기위한 최적화된 버스 인터페이스(AMBA)를 가진다.AMBA의 구조를 살펴보면 AHB, ASB, APB로 구성되고 각각은 아래와 같이 연결된다.그림 15 AMBA-based system· AHB(Advanced High-performance Bus)는 고성능 시스템 모듈에 연결되어 사용된다. 이것은 Burst Mode의 데이터 전송과 분산 처리에 이용된다.· ASB(Advanced System Bus)는 고성능 시스템 모듈에 연결되어 사용된다. 이것은 Burst Mode의 데이터 전송에 이용된다.· APB(Advanced Peripheral Bus)는 저성능 병렬 장치의 인터페이스를 제공한다.Ⅴ. Real-Time Operating System먼저 실시간 시스템에 대하여 정의를 내리면 많은 사람들이 단순히 응답 속도가 빠른 시스템이라고 말하는데, 정확한 정의는 주어진 요
1. TCP/IP1. TCP/IP 개요TCP/IP는 문자 그대로는 전송제어프로토콜 (Tramission Control Protocol) 인터넷 프로토콜(Internet Protocol)을 의미한다.ISO의 7계층 구조에 의하면 TCP는 계층4에 그리고 IP는 계층3에 해당되는 프로토콜의 이름이다. 그러나 보통 우리가 TCP/IP라고 말하면 이는 계층3, 계층4 프로토콜만 얘기하는 것이 아니라 TCP/IP프로토콜 조합(protocol suit)을 의미하는 경우가 대부분이므로 여기에는 ISO의 계층5,6,7 에 해당하는 여러가지 응용 프로토콜과 계층3, 계층4에 있는 또다른 프로토콜까지가 포함된다.다시 말하면 오늘날 인터넷을 움직이는 통신 소프트웨어의 뼈대가 되는 모든 프로토콜을 말하며 이는 우리가 앞장에서 설명한 망구조 (Network architecture)에 해당된다. 따라서 TCP/IP와 인터넷을 따로 떼어놓고 생각하는 것은 불가능하다.인터넷은 TCP/IP를 뼈대로 한 거대한 네트워크요 서비스이다. 우선 TCP/IP의 등장배경부터 생각해보기로 하자.1960년대 후반과 1970년대 초의 네트워크는 각기 다른 네트워크에 속하는 사용자들이 자원을 공유하도록 지원하지 않았다. 네트워크 관리자들은 보안상의 문제로 사용자들이 자원에 마음대로 접근하는 것을 꺼려하였고 어떤 정보 시스템의 사용자가 자신의 사용 범위를 다른 네트워크로 확대하도록 하는 것이 매우 어려운 상태였다.이러한 기간 동안 자원을 여러 사용자들이 공유하는 것이 좋다는 점을 점차 인식하게 되었다. 최종 사용자 응용 프로그램이 서로 상호 접속되기 위해서는 네트워크 관리자가 아닌 전자 우편 (Electric Mail)이나 파일 전송(File Transfer)같은 응용의 표준화가 뒤따라야 했다.TCP(Transmission Control Protocol)와 IP(Internet Protocol)는 이러한 문제를 해결하기 위해서 개발되었다. 네트워크를 서로 접속하는 필요성은 이와같이 자원의 공유측면과 정보의 교켰다. 이때부터 하이퍼텍스트 응용기술은 많은 연구가 이루어져 실질적인 활용분야가 늘어났다. 인터넷 확산기인 1991년에 들어 하이퍼텍스트는 세계적인 문서표준으로 자리잡는 계기를 마련했다. 팀 버너스 리(Tim Berners Lee)는 월드 와이드 웹에서 하이퍼텍스트를 사용할 수 있도록 함으로써 현재 인터넷 문서와 같은 형식으로 모든 문서들을 개작하였다.9. Hypermedia하이퍼미디어는 하이퍼텍스트의 확장된 개념으로, 정보의 저장과 관리를 위해 그래픽, 음성, 영상등이 결합되어 있는 정보를 말한다. 하이퍼미디어는 사용자가 자의로 선택하는 대화형 구조를 가지고 있어, 인간이 주제와 내용을 연결하는 방식과 일치할 수 있는 작업환경을 갖추고 있어야 한다.하이퍼미디어에서 각각의 주제는 주제와 관련된 정보를 쉽게 찾을 수 있는 방향으로 연결되어야 하며, 단순히 텍스트라는 하나의 정보매체뿐만 아니라 글, 소리, 영상, 그림 등과 같은 다양한 정보매체를 비순차적인 방법으로 접근할 수 있도록 표현해야 한다.10. HyperlinkHTML이 갖고 있는 장점은 문서 내부의 다른 부분이나 다른 문서들과 텍스트나 이미지 사이에 링크를 만들 수 있다는 점이다.브라우저에서는 이러한 텍스트나 이미지 부분을 색채나 밑줄 등을 이용하여 그곳이 하이퍼텍스트 링크(Hypertext Link)인 것을 나타내 준다. HTML에서 하이퍼텍스트와 관련된 유일한 태그는 앵커(Anchor)를 의미하는 태그이다.11. Plug-in플러그인은 웹 브라우저의 일부로서 쉽게 설치되고 사용될 수 있는 프로그램을 말한다. 넷스케이프 브라우저를 통해 사운드나 동영상을 재생하거나, 기타 다른 기능들을 수행해주는 추가 프로그램들을 다운로드하여 설치하고, 또 정의할 수 있도록 한 것이 그 시초가 되었다. 이러한 프로그램들은 처음에는 헬퍼(helper) 응용프로그램들이라고 불렸다. 그러나, 이러한 응용프로그램들은 브라우저와는 별개로 실행되었으며, 이를 위해 새로운 창을 여는 것이 필요했다. 이에 비해 플러그인 프로그램은 욕심에서 개발자는 그 서버 업체 만이 제공하는 특성들을 사용할 것이다.따라서 개발된 응용 프로그램은 투명성이 없어지고, 따라서 이식성(portability)도 상실하게 된다.프로그램이 이식성을 갖도록 개발하는 것은 새로운 기술을 활용하고, 저렴한 경비를 추구하고, 또한 업체가 파산할 경우를 대비하는데 필수적이다.Sybase의 개방형 서버(open server) 접근 방식을 사용하면 떨어진 곳에 있는 서버의 프로그램코드를 다른 여러 종류의 데이터베이스 관리 시스템(DBMS), 데이터 모델, 또는 프로세서에 사용할 수 있다. Sybase가 사용한 RPC(remote procedure call)를 개방형 서버에 있는 절차나 프로그램을 불러내는 메시지로 해석할 수 있다.ASK사의 Ingres Star는 UNIX와 MVS에 분산 탑재된 분산 데이터베이스(distributed database)를 지원하기 위하여 다이나믹SQL을 제공한다. 따라서 Ingres Windows 4GL로 구축되고 DOS와 UNIX를 오퍼레이팅 시스템으로 사용하는 클라이언트가 UNIX상의 Ingres와 MVS상의 DB2를 플랫폼으로 구축된 데이터베이스 서버의 데이터를 검색할 수 있다. 한편 Ingres 사의 Intelligent Database엔진은 분산 데이터베이스 환경에서 SQL명령을 수행할 때, 원거리에 위치한 서버로 부터 검색되어 전송되는 레코드의 숫자가 가장 적게 되도록 검색을 최적화 시켜준다. 이러한 최적화 기능은 분산 데이터베이스 환경에서 다이나믹 명령(dynamic request)을 수행하는 경우, 성능에 결정적인 영향을 미친다.클라이언트/서버 모델은 필요에 따라 정보를 임의로 검색할 수 있도록 해준다. 따라서 최적 화된 다이나믹 SQL과 분산 데이터베이스 기능은 제2세대 클라이언트/서버 시스템을 성공적으로 구축하는데 필수적이다. 제1세대 클라이언트/서버 환경은 기업의 운용 업무를 어느 정도 안정되고 정확하게 구현할 수 있는가에 초점을 두었다. 제2세대 클라이언트/서버환경에서는 데한 이유로 데이터 베이스가 방대하거나 사용자가 많은 경우는 파일 서버 모델을 사용할 수 없다.데이터베이스 서버 모델의 강력한 기능도 효과적으로 사용치 못하면 기대한 효과를 볼 수 없다. 예를 들어 데이터베이스 초심자가 불필요한 레코드를 거의 걸러 주지 못하는 primary key로 SQL의 SELECT를 서버 데이터베이스에 대해 사용하면, 사용자에게 필요 없는 많은 데이터가 클라이언트로 전송될 것이다.경우에 따라, 이러한 전송 작업이 네트워크에 주는 통신량의 부담은 막대하다. 예를 들어 사용자가 필요로 하는 10여 개의 레코드를 위해 수십만 개의 레코드가 네트워크를 통해 클라이언트로 전송될 수도 있다.사용하는 명령의 형태에 따라 10여 개의 레코드 또는 수십만 개의 레코드가 네트워크를 통해서 오게 되다. 그러나 사용자가 이러한 전문적인 측면을 모두 이해하여 시스템을 효과적으로 사용하리라고 기대할 수는 없다. 클라이언트의 사용자들의 대부분 SQL에 대한 깊은 지식이 없는 일반 직원들이기 때문이다. 따라서 DBMS를 선정할 때는 단순이 업무 처리 속도 이상의 기능을 조사하는 것이 대단히 중요하다.트렌젝션(transaction)서버 모델은 이러한 문제를 해결해 준다. 즉 여러 개의 관계형 연산자(relational operator)로 구성된 검색 명령들을 하나의 패키지로 만들어 트렌젝션 서버로 보낸 후, 그 곳에서 수행시킬 수 있다. 이러한 방법을 사용하면, 강력한 SQL명령문들이 모두 서버에서 수행되고, 최종 검색 결과 만 클라이언트로 보내진다. 결과적으로 네트워크의 통신량은 최소량으로 줄어든다.(이러한 클라이언트/서버 모델을 지원할 수 있도록 ,여러 제품들은 서버의 SQL 개발용 도구로 개선되었다.)클라이언트/서버 모델에서 On-line Transaction Processing(OLTP)을 하기 위하여는 DBMS 제품이 view, triggers, stored procedures 등의 기능을 제공해야 한다. Oracle, Sybase, Ellipse, Ingre제를 해결하기 위해서인터넷에 연결된 모든 컴퓨터들은 외부 사용자가 공개된 파일에 접근할 수 있도록 annonymous라는 사용자 계정을 마련해 놓고 있다.2 FTP 실행UNIX 운영체계르 통하여 FTP를 실행하기 위한 명령어들을 설명하도록 하겠다. FTP를 실행하기 위해서는 먼저 "ftp"라는 명령어를 입력해야 한다. "ftp"입력 후 그림에서와 같이 open 명령어에 이어서 자신이 접속하기 원하는 FTP 사이트 주소를 입력한다.ftp 명령어 다음에 접속을 원하는 컴퓨터의 주소를 직접 입력을 해도 접속이 가능하다.해당 FTP 사이트와 접속이 되면 사용자 아이디와 비밀 번호를 입력하라는 메시지가 나타나게 되는데, "NAME"에는 "annonymous"라고 입력한다. password"에는 자신의 사용자 이름을 입력하면 된다.사용자 이름과 비밀 번호 입력을 마치면 사용자는 시스템으로부터 제한적인 디렉토리 즉, 공개 파일이 있는 디렉토리 내에서의 파일 전송과 전달을 할 수 있게 된다. 원하는 정보에 대한 검색이나 복사를 한 후 "bye" 명령어를 입력함으로써 해당 시스템의 사용을 종료할 수 있다.3 파일의 형태◈ ASCII인터넷에서 사용되는 가장 일반적인 파일의 형태는 ASCII 텍스트 파일이다. 이들 파일은 단순한 형태의 텍스트만을 포함하고 있는 것이 보통이다. ASCII 파일은 서로 다른 기계로 이동되더라도 특별한 변환이 필요 없다는 장점이 있으며, 일반적으로 "*.TXT"나 *.doc 와 같은 확장자를 가지고 있다.FTP를 사용할 때는 디폴트(default)로 ASCII 텍스트 전송 모드가 설정되어 있으므로 별도의 모드를 설정할 필요는 없다.◈ 이진파일 (Binary File)Binary 모드는 기본적인 영숫자와 같은 문자 이외에 특수 문자와 제어 문자를 포함하는 파일을 전송하기 위해 사용되는 모드이다.여러 가지 워드 프로세서 즉, �澎邦犬� MS-WORD 등으로 작성된 파일들은 각 워드 프로세서만의 고유한 형식, 폰트 및 기타의 특성에 관한 정보가 파일에 포함다.