X-Hyper320 TKU 기반의 임베디드 시스템 응용과 실습 하이버스(주) - 1 -
목 차 이론편 1. 임베디드 시스템 4p 1.1 임베디드 시스템의 개요 1.2 임베디드 시스템의 활용 1.3 임베디드 시스템의 향후 전망 1.4 임베디드 프로세서 (Marvell Monahans PXA320) 1.5 임베디드 소프트웨어 1.6 임베디드 리눅스 시스템 1.7 임베디드 시스템 개발 환경 2. X-Hyper320TKU 임베디드 시스템 17p 2.1 X-Hyper320TKU의 특징 2.2 X-Hyper320TKU의 구성 2.3 X-Hyper320TKU의 하드웨어 2.4 X-Hyper320TKU의 메모리 맵 2.5 X-Hyper320TKU의 Pin Assign Table 3. X-Hyper320TKU 환경설정 53p 3.1 Overview 3.2 Quick Start 3.3 개발환경 - 2 -
실습편 Chapter 1. 스톱워치 65P Chapter 2. MP3 Player 78P Chapter 3. 산성비 게임 93P Chapter 4. DC 모터 제어 108P Chapter 5. CGI를 이용한 DC 모터 원격 제어 114P Chapter 6. Hmote2420 연동 시리얼 모니터링 134P Chapter 7. Berkeley DB 응용 145P Chapter 8. GTK Painter 163P Chapter 9. PXA Camera 185P Chapter 10. SDL 애니메이션 210P Chapter 11. Qtopia Core-4 포팅 실습 226P Chapter 12. 리눅스 기반의 무선 NAT 라우터 구축 240P - 3 -
제1장 임베디드 시스템 1.1 임베디드 시스템의 개요 임베디드 시스템(embedded system)이란 어떤 시스템에 내장되어 특정한 목적만을 수행하는 컴퓨터의 하드웨어와 소프트웨어가 결합된 고기능의 전자 제어 시스템을 말한다. 임베디드 시스 템의 일반적인 의미는 마이크로프로세서/마이크로컨트롤러를 내장(embedded)하여 원래 제작자 가 의도한 특정한 기능만을 수행하는 장치이다. 임베디드 시스템의 구성을 살펴보면, 임베디드 하드웨어는 임베디드 프로세서/임베디드 컨트롤 러, 메모리, I/O 장치, 네트워크 장치, 센서, 구동기 등으로 구성되어 있고 임베디드 소프트웨어는 운영체제, 시스템 소프트웨어 및 응용 소프트웨어로 구성되어 있다. [그림 1-1] 임베디드 시스템의 구성 임베디드 시스템의 특징은 특정한 기능에 부합하는 최적화(application- specific functionality), 소형, 경량화, 저전력화, 고신뢰성이면서 네트워크를 지원하고 멀티미디어를 지원 하는 시스템으로 실시간 운영이 되는 열악한 환경 하에서도 데드라인(deadline) 이내, 즉 반응에 요구되는 시간의 한계 값에 논리적으로도 결과 산출에 걸리는 시간에서도 적시성(timeliness)을 가지며 외부 자극에도 예측 가능한(predictable) 방식으로 반응하는 시스템으로서 가격에 민감하 고 안전하게 동작할 수 있는 시스템의 특징을 가지고 있다. - 4 -
[그림 1-2] 임베디드 시스템의 특징 실시간 시스템(real time system)의 정의는 정해진 시간 내에 시스템이 결과를 출력하는 시스템 을 말한다. 이는 주어진 작업을 빨리 처리하는 것이 아니고 정해진 시간을 넘어서는 안 된다는 뜻이다. 실시간 시스템의 분류는 하드웨어 실시간 시스템(hardware real-time system)과 소프트 웨어 실시간 시스템(software real-time system)으로 분류된다. 1 하드웨어 실시간 시스템은 정해진 시간(deadline) 내에 즉, 시간 내에 처리하지 않으면 치명 적인 결과를 초래하는 경우에 작업의 결과가 절대적으로 출력되어야 하는 시스템으로 주로 전투 기의 비행제어 시스템, 핵발전소의 제어 시스템, 인공위성의 제어 시스템 등이 이에 해당된다. 2 소프트웨어 실시간 시스템은 정해진 범위를 넘는 시간(deadline) 지연이 발생하더라도 그것이 시스템의 에러가 되지 않는 시스템으로 주로 컴퓨터, 정보기기, 네트워크 관련기기 등이 이에 해 당된다. 임베디드 시스템은 대부분 실시간적인 요소가 내포되어 있고 실시간 시스템이 포함되어 있어야 한다. 1.2 임베디드 시스템의 활용 정보가전 : 세탁기, 오디오, 인터넷 냉장고, HDTV 등 제어분야 : 공장자동화, 가정자동화, 로봇 제어, 공정제어 등 정보기기 : 핸드폰, PDA, 스마트 폰, LBS 등 네트워크기기 : 교환기, Router, 공유기, 홈 게이트웨이 등 게임기기 : 가정용 게임기(PS2, Xbox, PSP), 지능형 장난감 등 항공/군용 : 비행기, 우주선, 로켓, 야전 이동단말(GPS, GIS) 물류/금융 : ATM, RFID, 물류단말, 영업단말 등 차량/교통 : 자동차, ITS 등 사무, 의료 : 전화기, 프린터, Heart pacer, 수술로봇, 증강현실장비 - 5 -
[그림 1-3] 임베디드 시스템의 응용 1.3 임베디드 시스템의 향후 전망 프로세서 대부분의 프로세서가 임베디드 시스템용으로 사용한다. 데이터 처리용량 증가로 인하여 32비트 코어에서 64비트 코어로 발전한다. 고성능의 파이프라인, DSP, 자바 처리 전용 H/W 추가한다. 많은 종류의 마이크로프로세서/컨트롤러들 중에서 응용에 최적인 제품을 찾아내는 것이 설계 에서 매우 어렵고 중요한 작업이다. SOC(System-On-a-Chip) CPU, 메모리, DSP, I/O 등을 하나의 칩으로 만드는 기술로써 CPU칩, 메모리 칩, 주변장치 칩 들을 따로 사용하여 설계한다. 각 칩에 해당되는 회로를 각각의 IP(Intellectual Property 또는 지적재산권)로 확보해서 한 개의 칩으로 설계한다. 수백만 게이트 급의 칩으로 제작된다. [그림 1-4] 임베디드 시스템의 향후 전망 - 6 -
[그림 1-5] 새로운 시대의 가능성 1.4 임베디드 프로세서 (Marvell Monahans PXA320) 임베디드 프로세서는 8비트에서 64비트까지 다양한 종류와 특징을 가지고 있다. 특히 <표 1-1>에서 보는바와 같이 프로세서의 CISC와 RISC별, 제조사별 다양한 종류가 생산되 고 있다. 프로세서 제 조 사 종 류 8051계열 Atmel, Cirrus, intel, TI 등 8051 PowerPC계열 모토로라(현재 ; Freescale) MPC860,850,8260 ARM계열 ARM ARM7, ARM9, ARM10, ARM11 INTEL계열 Intel strongarm, Xscale(PXA255), Bulverde(PXA270) 삼성계열 삼성Korea S3C2410, S3C2440 등 MIPS계열 MIPS MIPS32,MIPS63 등 X86계열 AMD, Intel 등 I386,I686 등 <표 1-1> 임베디드 프로세서의 종류 본 임베디드 시스템에 사용된 프로세서는 Marvell PXA320 32비트 고성능 프로세서로 제작되었 다. PXA320은 기존의 PXA270에 비해 성능 개선, 연장된 배터리 수명을 제공하기 때문에 비디 오와 오디오 능력의 개선을 실현할 수 있게 한다. MusicMax 기술을 채택한 Wireless Intel SpeedStep(R) 은 지능형 전력관리 기능을 제공해 가변적인 전력상태를 가능케 하기 때문에 사 용자들은 배터리 수명에 손상을 주지 않으면서도 핸드셋에서 최고 30시간까지 MP3를 재생할 수 있다. - 7 -
PXA3x0 애플리케이션 프로세서 제품군에 탑재된 Intel VideoMax 기술은 고성능 비디오 능력을 지원하며, PXA3x0 프로세서 제품군의 미래 버전에도 개선된 해상도를 계속 제공할 것이다. 전력 효율적인 비디오 플레이백과 캡처능력은 고해상도 콘텐츠를 가능케 해주며 30fps에서 최고 D1 해상도까지의 풍부한 비디오 품질을 위해 H.264 같은 첨단 코덱을 지원한다. PXA3x0 제품군은 또한 디지털 카메라, 떨림방지 같은 첨단 카메라 효과, 최고 5 메가픽셀까지의 카메라 센서를 지 원한다. Intel XScale 프로세서 기술에서 기대되는 바와 같이, Marvell PXA3x0 프로세서 제품군은 주파수 확장과 범용 컴퓨팅 능력부문에서 시장을 계속 리드해 나가고 있다. 사용자들은 Marvell PXA3x0 프로세서 기반의 휴대전화와 소비자용 핸드헬드 기기들을 체험한 후에는 "624 또는 806Mhz로의 확장성"이라는 것이 즉각적인 반응 (기다리지 않음)뿐만 아니라 배터리 수명의 연장도 의미한다 는 사실을 바로 이해하게 될 것이다. 마벨의 독자적인 구조개선은 운영환경과 범용 애플리케이 션이 높은 주파수로 임무를 신속하게 처리한 후 저전력 소비상태로 효과적으로 축소될 수 있게 한다. 이러한 기능은 Marvell PXA 3x0 프로세서들이 작동이 느린 경쟁제품들에 비해 전체적으로 더욱 훌륭한 전력효율성을 제공한다. 소비자 관점에서 볼 때, 배터리 수명에 손상을 주지 않으면 서 성능이 크게 개선되는 것을 발견한다는 것은 "624 또는 806Mhz로의 확장성"이 2007년에 핸 드헬드 기기의 큰 특징으로 만들어 줄 것이다. PXA3x0 제품군은 사용자들에게 성능이나 배터리 수명에 손상을 주지 않고 옵션형의 안전한 프 레임워크 내에서 이동중에도 웹 브라우징과 고급 뮤직감상 및 최신 비디오 시청을 가능케 해준 다. 무선통신 고객들은 이메일을 검색하거나, WIFI를 통해 액티브 콘텐츠를 열어 보거나, 개인화 된 MIDI 통화연결음과 콜러 ID를 사용해 휴대전화 통화를 하면서 스테레오 블루투스* 헤드셋을 통해 음악을 들을 수 있다. 마이크로소프트*, 리눅스, 팜* 그리고 RTOS 스펙트럼 오퍼링 이용이 가능한 솔루션을 가능케 해주는 플랫폼을 통해서, 기기 개발자들은 고객들의 요구를 충족시키는 체험, 애플리케이션 및 서비스를 선택할 수 있다. 다양한 운영환경을 개발하는 것은 다양한 무선 통신 사업자들의 요구에 대응하는 제조업체들에게 개발작업을 보존하고, 제품의 시장화 시간을 단축시키며, 위험을 줄여준다. ARM* 아키텍처에 따를 경우, 기존의 ARM 기반 애플리케이션은 PXA3x0 제품군에 신속하게 이식될 수 있다. 마벨은 또한 현재 셀룰러 베이스밴드 프로세서인 PXA 800 (사내 코드명칭: 하몬 (Hermon)) 시 리즈를 대량 출하하고 있다. 마벨 애플리케이션과 셀룰러 베이스밴드 프로세서를 업계를 리드하 는 마벨의 스토리지, WLAN, 전력관리, VOIP 및 블루투스 솔루션들과 결합할 경우, 개발자들에 게 다양한 시장부문들의 요구와 가격 포인트를 충족시키는 광범위한 종류의 무선 핸드헬드 기기 들을 개발할 수 있는 종합적인 플랫폼을 제공할 것이다. - 8 -
[그림 1-6] PXA320 Processor Block Diagram CPU 클록 Monahan PXA3x0 최대클록주파수;806MHz ARM구조 v.5te compliant PXA270보다 30% 더 빠른 코어 스피드 시스템 버스의 분리로 병목 현상 제거 LCD 및 mini lcd controller로 2개의 LCD를 필요로 하는 smart phone에 적용 장점 Bulverde PXA27x 624MHz ARM구조 v.5te compliant CPU core ARM11 ARM9 Internal SRAM Application SRAM Touch screen controller External memory Power consumption Camera interface 6(banks) x 128(KB)=768KB 메모리 버스의 병목현상 제거 768KB VGA 또는 그보다 작은 해상도의 저전력 refresh를 위한 Frame buffer touch screen controller 내장 separate x32 external memory interfaces for DDR and for Flash (Intel Flash or Nand) 고성능의 우수한 장치를 위해 조정된 속도와 대역폭 및 Nor, Nand 지원 Enhanced wireless intel speedstep technology 동일 주파수에서 PXA270보다 50%까지 전 력 소비 감소 Enhanced intel quick capture technology 5Mega pixel (2560 x 2048)까지 지원 향상된 카메라 인터페이스 4(banks) x 64(KB) = 256KB 256KB 없음 Single shared external memory interface Wireless intel SpeedStep technology Intel quick capture technology <표 1-2> PXA320과 PXA270 비교 - 9 -
1.5 임베디드 소프트웨어 임베디드 소프트웨어란 임베디드 시스템에 탑재되는 소프트웨어를 말한다. 임베디드 시스템의 응 용 분야가 다양해지면서, 예전에는 단순했던 임베디드 소프트웨어가 점점 더 복잡하고 다양한 기능을 처리하게 되었다. 임베디드 OS를 사용하는 이유는 인공위성이나 미사일 제어 등과 같이 오류에 견고한 시스템이 나 실시간 시스템을 위해 최적화된 운영체제가 필요할 경우이다. 이러한 경우에는 다양한 목적 의 범용적인 운영체제보다는 RTOS(Real Time Operating System)와 같은 임베디드 OS를 사용 한다. RTOS는 표준 하드웨어 환경이 정해져 있지 않다는 점이 윈도우나 유닉스 등 범용 운영체제와 커다란 차이이며, 이는 곧 응용 프로그램뿐 아니라 운영체제 자체에 대해서도 사용자가 환경을 설정해야 하고 때에 따라서는 포팅 노력이 요구된다는 뜻이다. 그리고 시스템의 하드웨어 자원, 특히 메모리 사용에 대해서 많은 제약이 따른다. 예를 들어 일반 OS에서 작동하는 응용 프로그램이 몇 백 KB 메모리를 더 사용한다고 해서 무슨 큰 문제가 되는 것은 아니다. 그러나 임베디드 시스템에서는 메모리를 더 사용하면 그만큼 제품 단가가 올라가고, 특히 이동 환경에서는 제품의 크기와 전지의 사용 시간에도 직접적인 영향을 주게 된다. RTOS는 실시간 처리에 대한 강력한 지원과 통합 개발 및 디버깅 환경을 지원한다. RTOS는 그 종류는 대단히 많이 있다. 대표적으로 화성 착륙선인 패스파인더(PathFinder)와 혼다에서 만든 로봇인 아시모(ASIMO)의 운영체제로 쓰인 윈드리버(WindRiver)의 VxWorks, ISI에서 개발해서 지 금은 윈드리버에 통합된 psos, Mentor Graphics의 VRTX, 윈도우 CE 닷넷, 윈도우 XP 임베디 드, 임베디드 리눅스 등이 있으며 교육용으로 만들어진 uc/os-ii가 있다. 임베디드 시스템의 운영체제(OS) 임베디드 시스템(embedded system)이라는 것은 통상적으로 일반적인 시스템과는 달리 특정한 작업만을 수행하도록 설계되며 초기의 임베디드 시스템은 비교적 아주 단순해서 특별한 운영체 제가 필요 없이 사람이 순차적인 프로그램을 작성해서 실행하도록 되어있고, 중간에 인터럽터가 발생되는 경우에만 그 순차적인 프로그램에서 잠시 벗어나는 정도였다. 이전의 임베디드 시스템 들은 주로 간단하고 단순한 순차적인 작업에 관련되었기 때문에 굳이 운영체제(OS : Operation System)를 사용한다는 것은 낭비가 되었고 그럴 필요조차 없었다. 최근의 임베디드 시스템 분야에서는 그 시스템 자체가 상당히 커지게 되고, 네트워크나 멀티미 디어가 시스템에 기본으로 포함되면서 임베디드 시스템이 해야 할 일들도 많아지고 복잡해졌기 때문에 순차적인 프로그램을 작성하기가 매우 어렵게 되었다. 따라서 임베디드 시스템에서는 운영체제의 개념이 필요하게 되었고 임베디드 시스템의 특성상 실시간(real time)이라는 요소를 만족해야 하였으므로 실시간 운영체제가 임베디드 시스템에 도 입되게 되었다. 지금도 실시간 RTOS를 채택하여 개발 되는 제품들이 점점 늘어나고 있는 추세이며, 이제는 수 많은 임베디드(embedded)시스템에서 그 목적에 맞게 실시간 운영체제와 함께 적절하게 사용되 고 있는 실정이다. 그리고 임베디드 운영체제(embedded operation software)는 크게 아래와 같이 RTOS(Real - 10 -
Time OS)와 GPOS(General Purpose OS)로 분류할 수 있다. Window CE Window CE는 마이크로소프트사에서 개발한 임베디드 시스템용 운영체제이다. 마이크로소프트(이하 MS)는 임베디드 시장에 대한 공략을 위해 1996년 윈도우 CE를 발표했다. MS에서 제작된 기존의 윈도우 인터페이스에 모바일 네트워크 기능을 강화해 가전제품, PDA, 셋 톱박스 등에 주로 사용되고 있다. 적외선 통신, 웹 브라우징 기능 이외에도 편리한 개발환경을 가지고 있으며 UI가 기존의 윈도우와 매우 유사하게 제작돼 있어 대부분의 사용자들은 별도의 학습 없이도 바로 사용이 가능하다. 또한 윈도우 CE 계열의 PDA는 흑백 및 컬러 디스플레이가 가능하며 동영상, WAV, MP3 등 멀티미디어 파일의 재생이 가능하여 PDA의 엔터테인먼트 기기 화를 가져왔다. 또한 PC용의 윈도우 OS나 각종 오피스 프로그램들과 완벽한 호환이 가능해 기존의 데스크톱이 나 노트북에서 가능하던 각종 애플리케이션들을 PDA에서도 그대로 사용할 수 있다는 이점이 있 다. 그러나 제한적인 하드웨어를 가진 임베디드 시스템에 너무 많은 기능을 구현하려 했기 때문 에 느린 실행 속도와 불편한 UI를 초래했다. 이를 개선해 MS는 2000년 4월 윈도우 CE 3.0을 개발하고 기존의 윈도우 CE와는 전혀 다른 것 이라는 것을 강조하기 위해 그것을 포켓PC(PocketPC)라고 명명했다. 포켓PC의 등장으로 기존 윈도우 CE에서 보여주었던 수행속도의 저하와 비효율적인 하드웨어의 활용 등의 문제점들이 보 완됐다. 윈도우 PC는 사운드와 동영상 재생 및 컬러 디스플레이 구현 등 다양한 멀티미디어 기 능을 기본적으로 제공하며 PC와의 호환성이 뛰어나다. 또한 포켓 인터넷 익스플로러를 기본으로 내장해 모바일 인터넷을 실현했다. 게다가 데스크톱과 거의 흡사한 UI를 갖춤으로써 윈도우에 익 숙한 사용자들을 쉽게 끌어들이고 있다. 그럼에도 불구하고 PDA 업계에서 윈도우 CE의 시장점 유율은 팜 OS에 미치지 못했다. 하지만 유명 PDA 업체들이 윈도우 CE 채용 제품들을 대거 출 시함에 따라 점유율은 계속 증가 추세에 있다. 윈도우 CE는 성능이 상당히 우수하며, 특히GUI환경과 많은 어플리케이션을 가지고 있어서 현재 널리 사용되고 있다. 멀티 태스킹 오퍼레이팅 시스템인 Windows CE는 32개에 달하는 동시 프 로세스를 지원하고 각각의 프로세스는 어플리케이션의 단일 개체이다. 또한, 멀티 스레딩 지원은 각각의 프로세스가 다중 실행 스레드를 생성할 수 있게 한다. 스레드(thread)는 다른 부분들과 병행하여 실행되는 프로세스의 한 부분이며 스레드(thread)들은 독립적으로 실행한다. 그러나 각 각의 스레드는 특별한 프로세스에 속하고 같은 메모리 공간을 공유한다. 스레드들의 총 수는 단지 사용 가능한 물리적인 메모리에 의해 제한된다. Windows CE는 최소 의 프로세서 자원에서 스레드 동기화를 실현한다. 그리고, 다른 많은 오퍼레이팅 시스템과는 다 르게 Windows CE 는 스레드와 관련된 작업, 즉 스케줄링, 동기화, 자원관리 등을 다루는 것은 커널을 이용한다. 따라서, 어플리케이션은 다른 스레드 함수들로 프로세스나 스레드의 수행과 완료를 위한 폴(poll) 이 필요하지 않다. Windows CE는 선점형이기 때문에 우선순위가 더 높은 프로세스나 스레드가 선점적인 실행을 해야 한다. 그것은 스레드 스케줄링을 위해 여섯 개 등급인 스레드 우선순위를 기초로 한 시분할 알고리즘을 사용한다. Windows CE 는 선택한 수의 네트워크 스택을 제공한다. 네트워크 통신들은 적외선 통신, 이더넷, 무선 통신을 포함한 여러 가지 하드웨어를 지원한다. 비 록 네트워크 스택이 윈속 인터페이스를 통해 유일하게 접근할 수 있어도 Windows CE 는 또한 내 부적으로 윈속에 사용하고 윈속 연결을 설정하고 관리하는 섬세한 부분을 다루는 여러 가지 상위 - 11 -
레벨의 API들을 제공한다. WinInet API는 FTP와 HTTP 1.0을 포함한 인터넷 브로우징 프로토콜들을 지원한다. 또한Secure Sockets Layer(SSL) 2.0, Secure Sockets Layer(SSL) 3.0 그리고 Private Communication Technology(PCT) 1.0을 포함한 세 가지 보안 프로토콜의 접근을 제공한다. WinInet API는 Common Internet File System(CIFS) 리디렉터를 통한 원격 파일 시스템의 접근을 제공한다. 적 외선 통신을 위해 Windows CE 는 산업 표준 IrDA 프로토콜들을 사용하는 소켓 기반 적외선 통 신이 가능한 윈속에서 확장된 IrSock을 지원한다. Windows CE는 윈속으로써 네트워크 스택과 같은 레벨인 RAS 클라이언트를 제공한다. 인터넷을 위해 개발된 TCP/IP 프로토콜 그룹은 가장 복잡하고 넓게 알려진 네트워크 프로토콜이다. 그것 은 광범위한 시스템에 의해 지원되고 Windows CE 네트워크 스택의 핵심을 형성한다. 많은 윈 도우 기반 이동 장치들은 무선 통신을 사용할 수 있다. 그러나, 전통적인 TCP/IP 스택은 유선 네트워크에서 효과적인 함수에 의해서 만들어지기 때문에 무선 기술에서는 불충분하게 동작 할 수 있다. 그러나, Windows CE TCP/IP 스택은 무선 네트워킹을 위해 설정되게 디자인 되었다. 네트워크 스택의 기반에 있어서 Windows CE 는 시리얼 연결 네트워크와 LAN을 위해 데이터 연결 계층 을 지원한다. 많은 Windows CE 기반 장치들은 모뎀과 같은 시리얼 통신 연결을 사용하여 네트워크에 연결한 다. 시리얼 연결 네트워크를 지원하기 위해 Windows CE 는 많이 사용되는Serial Line Internet Protocol(SLIP)와 Point-to-Point Protocol(PPP)를 구현하였다. Password Authentication Protocol(PAP), Challenge Handshake Authentication Protocol(CHAP)와 Microsoft CHAP의 세 가지 프로토콜들은 시리얼 연결 통신에 사용하고 있다. LAN 연결에 대한 지원은 Windows CE에서는 NDIS((2) NDIS, Network Driver Interface Specification2) 4.0으로 구현하였다. 그러나, 단지 이더넷 미니 포트 드라이버들만 지원한다. 그리고 Windows CE를 여러 가지 다른 플랫폼의 사용자 입력 요구를 받아들일 수 있게 지정할 수 있다. 현재로, 키보드, 입력 패널, 음성 그리고 스타일러스는Windows CE 를 기반으로 한 장치들의 사 용자 입력 방법이다. MS는 윈도우 CE 3.0의 소스 코드를 공개한 후 2002년 초 코드명 탈리스커(Talisker)로 알려졌 던 윈도우 CE 닷넷과 윈도우 XP 임베디드를 공식 발표했다. MS는 윈도우 CE 닷넷을 Non-X86 프로세서 계열이거나 실시간이 요구되는 시스템에 대해서 권고를 하고 있으며 PC 운영체제인 윈도우 XP 프로페셔널의 컴포넌트 버전인 윈도우 XP 임베디드는 네트워킹과 서버 기능을 수행 하는 시스템 개발에 권고를 하고 있다. - 12 -
1.6 임베디드 리눅스 시스템(Embedded Linux System) 리눅스란? 리눅스는 운영체제이다. 운영체제란 하드웨어와 응용프로그램, 혹은 사용자 사이에서 시스템을 제어하고 운영하는 프로그램이다. 엄밀한 의미로 말하면, 리눅스는 프로세스 스케줄링, 가상 메 모리, 파일 관리, 장치 입/출력이라는 기본적인 서비스를 제공하는 운영체제의 커널일 뿐이다. 초기의 리눅스는 핀란드 헬싱키 대학의 교수에 의해 개발된 유닉스 기반의 마이크로 커널 구조 를 가지는 인텔 프로세스에서 동작하는 운영체제인 미닉스(Minix)를 이 대학 학생인 리누즈 토발 즈(Linus Torvalds)가 수정하여 인터넷에 공개한데서부터 출발한다. 그 이후 리눅스는 전 세계의 해커들에 의해서 지속적으로 수정 보완 되면서 급속히 발전하여 왔다. 또한 리처드 스톨만(Richard Stallman)에 의해 창시된 자유 소프트웨어 재단(FSF:Free Software Foundation)과 노선을 함께하여 GNU GPL(General Public License)하에 커널 소스를 공개하여 오늘에 이르고 있다. 이러한 소스 코드 공개에 기초한 자유 소프트웨어 정신에 입각하 여 리눅스는 해커들에 의해 급속한 진전을 이루었으며, 비로소 1994년 5월에 커널 버전(리눅스 커널 버전이 홀수(odd)이면개발 버전, 짝수(even)이면 안정 버전임을 의미한다.) 1.0.0이 발표되 었고 1996년 6월에는 커널 버전 2.0.0이 발표되었다. 그리고 2001년 1월에는 커널 버전 2.4.0 이 발표되었다. 이제 리눅스는 저렴한 중소형 컴퓨터뿐만 아니라 서버급 컴퓨터에 널리 사용되 고 있는 실정이다. 또한, 최근에는 크기를 현격히 줄여 임베디드 시스템에 리눅스가 포팅되어 임 베디드 운영체제로 각광받고 있다. 리눅스는 유닉스 시스템의 표준 인터페이스로 자리잡고 있는 POSIX 표준을 따르고 있으나, 진정 한 자유 소프트웨어를 구현하기 위해 유닉스 소스 코드 사용을 배제하고, 모든 소스를 새로 작 성하였다. 초기의 리눅스는 i386이상의 x86 CPU를 탑재한 PC에서 운영되는 것을 목표로 하였 으나, 현재에는 Macintosh, SPARC, MIPS, Alpha f 머신 등에서 동작하는 최고의 이식성을 자랑 하는 운영체제가 되었다. 리눅스는 진정한 개념의 멀티태스킹이 가능하며, 가상 메모리를 구현하며, 공유 라이브러리, 메 모리 관리, TCP/IP 네트워킹과 유닉스 계열 시스템들이 가지는 특징들을 포함하는 공개 운영체 제인 것이다. 리눅스는 상용 임베디드 OS보다는 실시간적 요소를 충족하지 못하고 윈도우 CE보다는 개발환경 이 좋지는 않지만, 오픈소스에 라이선스 비용이 없기 때문에 커널 크기를 줄여 다양한 임베디드 시스템의 개발에 유리하다. 리눅스는 소스를 공개하는 오픈소스 정책을 따르는 관계로 관련 개발자가 세계 곳곳에 있어 현 지의 응용 프로그램을 개발할 수 있는 개발자 층이 넓다는 것이 다른 OS들과 구별되는 큰 장점 이다. 이에 따라 리눅스를 채용한 임베디드 시스템은 다른 제품에 비해 가격 경쟁력이 우수하고 다양한 응용 프로그램의 개발이 가능할 것으로 기대된다. 임베디드 리눅스는 소스 공개와 아울러 안정성, 신뢰성 및 성능의 확보에 따라 활용도가 급격히 증대되고 있으며, 레드햇, 몬타비스타, 리니오 등이 임베디드 리눅스 개발 및 기술 지원 사업에 주력하고 있다. 임베디드 리눅스 운영체제는 특정 어플리케이션에 맞도록 리눅스 커널을 최적화 한 것이다. 이 는 라이센스비가 무료이며, 커널 소스 또한 공개되며 현재 전 세계의 수 많은 개발자들에 의해 지속적으로 업데이트 되고 있다. 그러나 임베디드 리눅스는 열악한 개발환경에 따른 개발기간에 대한 부담과 라운드로빈 방식의 - 13 -
스케줄링을 하므로 실시간 시스템에는 적합하지 않다는 문제점을 가지고 있다. New Mexico Tech에서 기존 리눅스 커널에 실시간 기능을 추가한 RT-Linux를 개발했으며 또한 오픈소스 진 영에서는 임베디드 리눅스를 기반으로 한 표준화를 통해 시장 확대를 도모중인데, 2000년에 애 질런트, 알카텔, HP, IBM, 윈드리버, ARM, 모토롤라 등이 참여하는 세계 최대 규모의 임베디드 리눅스 컨소시엄(ELC:Embedded Linux Consortium)이 결성되어 임베디드 리눅스 및 실시간 운영체제 API 표준인 EL/IX(Em bedded Linux based on POSIX)를 기반으로 플랫폼 표준화를 추진하고 있다. 임베디드 운영체제 시장은 전통적인 RTOS 중심에서 다기능 임베디드 OS 중심으로 발전하는 추 세에 따라 VxWorks, psos 등의 RTOS의 시장 성장률이 둔화되고 있으며, 전용 실시간 임베디 드 시스템에서 높은 시장 점유율을 보였던 VxWorks, psos, VRTX와 같은 전통적인 RTOS는 2001년을 기점으로 시장 점유율이 하락하고 있다. 2003년에는 임베디드 리눅스, 임베디드 윈도우 CE 및 팜 OS 등의 임베디드 OS 시장이 기존의 RTOS 시장을 능가할 것으로 예측된다. 전통적인 RTOS의 시장 점유 하락으로 임베디드 OS 시 장에서는 MS와 임베디드 리눅스가 시장 선점을 위해 치열한 각축을 벌일 것으로 예상된다. 임베디드 리눅스의 장점 - 산학계에 걸친 수많은 사용자들로부터 지난 수년간 직접 사용되면서 검증된 들로 효율적이고 안정적이며 성숙된 내용을 가진다. - 오픈 소스이기 때문에 소스 코드 자체가 공개되어 있고 이의 공급에 따른 로열티 자체가 없기 때문에 부담 없이 쉽게 자체 개발 아키텍처에 공급할 수 있다. - 리눅스 커널 자체가 태생적으로 모듈 형식의 코드로 이루어져 있어 쉽게 최소, 최적화 가능하 다. - 네트워킹 어플리케이션에 필수적인 TCP/IP, PPP, X.25, HDLC, FDDI 등의 네트워크 코드를 가지며 그 종류에 있어서도 다양하고 무료로 사용할 수 있어 개발에 용이하다. - 네트워킹 디바이스에서 현존하는 거의 대부분의 프로세스에 포팅되어 있고 대부분의 컨트롤러 를 위한 디바이스 드라이버가 제공되기 때문에 그 공급 영역 또한 방대하다 - 사용자뿐만 아니라 개발자 그룹의 크기도 오픈 소스이면서도 개발을 위한 자체 툴과 라이브러 리를 가지고 있는 현대적인 운영체제라는 특성에 맞물려 전세계적으로 거대한 수의 개발자들이 존재한다. 따라서 어플리케이션은 물론 자체 문서도 거의 모든 영역에 대해 상용 운영체제 못지 않게 잘 이루어져 있다. - 이미 PC상에 리눅스 어플리케이션과 커널의 개발에 익숙한 사람들에게 있어 임베디드 리눅스 는 자신에게 익숙한 환경을 제공하기 때문에 쉽게 임베디드 어플리케이션을 개발할 수 있게 해 준다. 또한, 개발 툴은 어떤 운영체제나 아키텍처 상에도 포팅이 되어 있으므로 한번 개발 툴에 익숙해지면 개발 환경에 제약이 없어진다는 장점이 있다. - 실시간(real time)을 지원하여 지금까지 상용 OS에 열세였던 Real Time성을 크게 확보하고 보다 다양한 분야에 공급을 할 수 있다. 임베디드 리눅스의 단점 - 임베디드 리눅스(embedded Linux)위에서 실행될 수 있는 어플리케이션이 상당히 부족한 실 정이다. 따라서 임베디드 리눅스를 OS로 채택하고 이를 확산 시키는 데 걸림돌이 되고 있는 실 정이다. - 14 -
- 임베디드 리눅스(embedded Linux)를 이용하여 장비개발 시 개발환경에 접근하는 데 상당히 어렵다. 커널을 비롯하여 마이크로 프로세스(micro process), 네트워크, 각종 툴(tool) 등을 다루 어야 하는 내용이 방대하므로 단시일 내에 전문적인 개발자 양성에 문제가 있다. 1.7 임베디드 시스템 개발 환경 임베디드 시스템 개발 환경의 개요 임베디드 시스템 개발시 전체 시스템의 가격이나 소비되는 전력을 낮추기 위해 하드웨어 및 소 프트웨어의 많은 제한을 가하게 된다. 따라서 임베디드 시스템에 사용하는 OS는 일반적인 일반 OS보다는 시스템에 특화된 운영체제를 사용한다. 임베디드 시스템을 개발하기 위해선 기본적으로 다음과 같은 요소들이 갖춰져 있어야 한다. 호 스트PC 는 임베디드 시스템 개발을 위한 컴퓨터를 말하며, 타깃PC(Target PC) 은 실제 임베디 드 시스템이 설치된 개발하고자 하는 하드웨어를 말한다. 호스트에는 개발을 위한 개발 툴, 개발 된 응용 프로그램을 임시로 수행해 볼 수 있는 타깃 시뮬레이터, 타깃과 연결되어 타깃에 개발 된 이미지를 업로드하거나 타깃에 반응하는 디버그 에이전트를 통해 원격 디버깅을 할 수 있게 하는 타깃 서버가 설치돼 있다. 또한 타깃에는 호스트에서 만들어져서 설치된 여러 컴포넌트가 존재하는데 타깃을 부팅하기 위한 부트 로더와 커널, 그리고 임베디드 응용 프로그램이 존재하 게 된다. 호스트에 설치된 개발 툴에는 타깃에서 수행될 수 있는 바이너리를 생성하는 크로스 컴파일러가 존재하며 그 밖에 오류를 검색해 주는 디버거 등으로 이루어져 있다. 임베디드 시스템 개발 과정 임베디드 시스템 개발 과정은 대략적으로 부트 로더 개발, 커널 및 파일 시스템 개발, 응용 프로 그램 개발의 세 단계로 볼 수 있다 - 부트 로더 개발 부트 로더는 타깃 보드에 전원이 인가되면 부트 롬으로부터 가장 먼저 수행되는 프로그램이다. 보통 부트 로더는 OS의 커널을 로드하는 순수 로더로서의 기능뿐만이 아니라 현재 레지스터나 메모리 값, 버스 상태 등을 살펴볼 수 있는 모니터 기능, 기초적인 네트워크 모듈을 내장해 네트 워크를 통한 커널을 다운받아서 커널 로드를 할 수 있는 기능을 포괄하고 있다. 부트 로더는 보 통 부트 롬에 내장되어 있으며 부트 로더를 새로 작성하여 타깃에 설치하려면 호스트와 JTAG 인터페이스 혹은 기타 인터페이스를 통하여 설치할 수 있으며 이외의 방법에는 롬 라이터를 이 용하여 롬에 구워서 설치할 수 있다. 대부분 상용 임베디드 OS에서는 부트 롬 부분을 앞서 잠깐 언급한 BSP라 불리는 패키지의 일 부분으로 규정하고 있다. 반면 임베디드 리눅스의 경우는 규격화된 BSP가 존재하지 않으므로 하 드웨어 벤더가 리눅스용 BSP를 제공하지 않을 경우 부트 롬 부분을 각 하드웨어 플랫폼에 맞게 작성해야 한다. - 15 -
- 커널 및 디바이스 드라이버 및 파일 시스템 개발 커널 및 디바이스 드라이버의 개발은 호스트의 임베디드 시스템 개발 툴에서 이뤄진다. 개발을 위해서는 개발자가 먼저 시스템에 대한 하드웨어 사양을 숙지해야 하며 이를 바탕으로 커널 및 디바이스 드라이버를 설정하게 된다. 이렇게 생성된 커널 및 디바이스 드라이버들은 부트 롬과 같이 하나의 이미지 파일 형태로 되어 부트 롬에 저장되거나 별도의 저장 장치에 파일 시스템을 통한 파일 형태로 구현된다. 만일 부트 롬의 용량이 작거나 기타 저장장치가 없는 경우 부트 로 더에서 네트워크 모듈을 통해 별도의 서버로부터 커널을 다운받아 부팅이 진행될 수도 있다. 특 히 부트 롬이나 저장장치의 용량이 제한적일 경우는 커널 이미지 자체를 압축해 저장되는 것이 일반적이다. - 임베디드 응용 프로그램 임베디드 응용 프로그램은 앞에서 구현된 커널과 파일 시스템을 바탕으로 수행된다. 응용 프로 그램의 개발은 커널과 마찬가지 방법으로 호스트에서 생성이 가능하며 호스트에 설치된 개발 툴 의 크로스 컴파일러에 의해 타깃 보드에 맞는 바이너리가 생성되게 된다. 생성된 응용 프로그램 의 실행은 임베디드 OS 개발 툴 내의 타깃 에뮬레이터나 실제로 타깃 보드에 옮겨서 실행이 가 능하다. 또한 응용 프로그램은 네트워크를 이용한 원거리 디버깅을 이용하거나, JTAG 인터페이 스를 이용한 디버깅을 통하여 에러를 확인해 볼 수 있다. - 16 -
제2장 X-Hyper320TKU 임베디드 시스템 2.1 X-Hyper320TKU의 특징 이 장은 마벨 모나한(Manahan) PXA320기반의 X-Hyper320TKU 임베디드 시스템에 대한 주요 특징 및 임베디드 시스템 사양에 대하여 서술하였다. 본 임베디드 시스템은 최신의 임베디드 시스템 기술 트랜드가 적용된 교육용 실험 실습장비이 다. Bulverde 후속인 Marvell PXA320 프로세서 기반으로 제작되어 모바일용에 적합한 멀티미디 어, 파워 메니지먼트 기술이 강화 된 첨단 교육 임베디드 실험 장비이다. [그림 2-1] X-Hyper320TKU 임베디드 시스템 장비 모습 1. 주요 특징 본 장비는 CPU보드 + 메인보드 + IEB 보드 로 모듈별 구성되어 있어 추가 기능을 위한 확장 및 CPU 업그레이드, FPGA 독립 실험등의 가능한 특징이 있다. PXA320은 PXA270 보다 더 빠른 Core Speed (806MHz)를 제공한다. 266MHz DDR SDRAM의 사용으로 SDRAM보다 성능이 뛰어나서 빠른 프로그램 실행 속도를 가지고 있다. (266MHz DDR SDRAM 128Mbyte) PXA320은 내부 SRAM용량이 768K Byte(PXA270 은 256K)이어서 800 x 480 LCD를 사용했 을 경우, Refresh를 위한 Frame Buffer를 내부 SRAM 으로도 가능하다. 이러한 이점은 저 전력 으로 LCD를 구동할 수 있고, 인터페이스 또한 빠르게 동작한다. - 17 -
NAND Flash의 장점은 NOR Flash보다 가격이 저렴하며, 보드 수정 없이도 용량이 더 큰 NAND Flash로 교체가 가능하다. LCD 및 Mini LCD Controller를 가지고 있어 2개의 LCD를 필요로 하는 Smart Phone에 적용 에 가능하다. Touch Controller가 기본 내장되어 별도의 외장 Touch controller가 필요 없다. DMB 장착으로 DMB 시청 및 교육이 가능하다. Wireless LAN 모듈이 기본 장착되어 Touch Controller가 기본 내장되어 별도의 외장 Touch controller가 필요 없다. - 18 -
2.2 X-Hyper320TKU의 구성 2.2.1 X-Hyper320TKU 하드웨어 사양 CPU 보드 X-Hyper320TKU 임베디드 시스템은 CPU 보드가 별도로 제작되어 있다. 모듈형태로 제작되어 PXA310, PXA300 등 다른 CPU로 업그레이드 및 변경이 가능하게 설계되어있다. 본 CPU 모듈 을 사용하여 사용자가 별도 임베디드 장비 제작도 가능하다. CPU보드 하드웨어 사양은 <표 2-1>과 같다. [그림 2-2]는 실제 CPU보드의 실물 사진이다. 분 류 항 목 내 용 CPU PXA320(806MHz) Monahan-P 메모리 NAND Flash memory 128MByte 266MHz DDR SDRAM 128MByte PMIC PMIC MAX8660 <표2-1> CPU 보드 사양 [그림 2-2] X-Hyper320TKU 임베디드 시스템 (CPU 보드) - 19 -
메인 보드 X-Hyper320TKU 임베디드 시스템의 메인보드이다. DMB, TFT 7" LCD, Wireless LAN, Ethernet, USB 등 고급 디바이스들이 장착되어 첨단 장비 개발이 가능하다. 하드웨어 사양은 <표 2-2>과 같다. [그림 2-3]는 실제 메인보드의 사진이다. 분 류 항 목 내 용 외부 장치 CPLD USB Host 2.0 2Port Display Touch Screen IDE I/F Analog RGB(VGA Monitor) Ethernet(10/100) Wireless LAN Audio-AC97 (WM9712) DMB Camera GPS USB UART VGA Key Button / LED Mic, Speaker MMC/SD Xilinx CoolRunner-II TD242LP 7" Wide TFT Color LCD CPU 에 내장 mini IDE THS8135 2 Port Max 54Mbps, IEEE802.11g/b SPEAKER 내장 DMB 모듈 CMOS Camera 1.3M Pixel GPS Module USB Host/Client 1.1 각 1port USB Host 2.0 2 port USB Client 2.0 1 port Debug(RS232), GPS(TTL), FFUART(RS232) 1port(3EA) Bluetooth(RS232), IrDA(TTL), RS232, TTL 1port(4EA) VGA I/F GPIO 4EA Jack Type MMC/SD 1Slot 확장 커넥터 160 pin 2.54mm pitch <표 2-2> 메인보드 사양 - 20 -
[그림 2-3] X-Hyper320TKU 임베디드 시스템 (메인 보드) [그림 2-4] X-Hyper320TKU 임베디드 시스템 (메인 보드) 부품 배치도 - 21 -
IED 확장 보드 임베디드 시스템의 기초 실험을 위해서 저급디바이스만을 모아 놓은 IEB 확장 보드를 제작하여 학생들이 저급디바이스로 처음에 교육하고 추후에 고급디바이스로 공부 할 수 있도록 단계별 교 육이 가능한 장비이다. IED확장보드의 사양은 <표 2-3>과 같다. [그림 2-5]는 IDE보드의 실물 사진이다. <표 2-3> IEB 확장 보드의 하드웨어 사양 분류 항 목 내 용 FPGA EP1C6240PQFP Cyclone (PQFP-240) Programming ROM EPC2 EP2(PLCC/SOCKET) RF 디바이스 CC2420 CC2420(QLP48) DC 모터 제어 L298 DIP Step모터 제어 L297 DIP ADC DAC ADC0804 DAC0800 7-Segment 7-Segment * 8 DOT Matrix 글자 LCD DOT Matrix 글자 LCD [그림 2-5] X-Hyper320TKU 임베디드 시스템(IEB확장 보드) - 22 -
[그림 2-6]은 X-Hyper320TKU의 전체 블록도를 나타낸다. DF_IO[15..0] DATA[15..0] DATA[15..0] GP105/ETHERNET 1_INT GP84/ETHERNET 2_INT GP17/NET2272_nIRQ GP9/INT_A GP10/INT_B GP13/INT_C GP14/INT_D GP30/UBI9032_INT GP1/CF-nINT Monahans CPU Module (PXA3xx) ncs2 ncs3 nxcvren nlla nlua DF_SCLK nbe0 nbe1 noe nwe nreset_out ADDRESS [2] ncs0 nior niow ADDRESS[2] ncs0 nior niow GP105/ETHERNET 1_INT DATA[15..0] ETHERNET1 (DM9000E) ETHERNET2 (DM9000E) 3 Port UART nrdy ADDR[25..0] ncs0 nior niow GP84/ETHERNET 2_INT DATA[15..0] ADDR[5..1] USB 2.0 Device (NET2272) GP17/NET2272_nIRQ VGA (FS453) 7Inch Wide LCD I2C Bus LDD[15..0] LDD[15..0] FCLK,LCLK,PCLK Resistor SW MMC WP MMC DETECT MMC Interface SPI4 Interface CTX305R_INT MMC/SD DMB (CTX305R) nreset PWR_DN CPLD XC2C256 ncsa ncsb ncsc ncsd noe nwe DATA[7..0] ADDR[3..1] GP9/INT_A GP10/INT_B GP13/INT_C GP14/INT_D 4Channel UART (TL16C554) Audio&Touch (WM9712L) Touch AC97 Interface Touch_INT Touch_PENDOWN CMOS Interface GATE noe I2C Bus DMB ( ) ncs0 nior niow USB 2.0 Host (UBI9032) DMB_nSELECT GP30/UBI9032_INT USB 1.1 Client USB Client INT USB Client Interface USB Client Enable CMOS Interface I2C Bus GATE noe CMOS 1.3M Pixel CAM_SELECT USB TO IDE (GL811) USB HUB USB 1.1 Host USB Client INT USB Client Interface USB Client Enable MMC2 Interface SPI3 Interface Resistor SW Wireless LAN WAKE_UP npd USB 2CH (GL850) [그림 2-6] X-Hyper320TKU 블록 다이어그램 - 23 -
2.1.2 X-Hyper320TKU 소프트웨어 사양 소프트웨어 사양 분 류 항 목 내 용 O/S Linux Linux 2.6.11 Compiler GNU Tool for ARM JTAG XDB OPTION 파일시스템 Bootloader GUI JFFS2(Rootfile system) Ext2, ext3, YAFFS, RAMFS, NFS hybus-boot320 GTK QT/Embedded Ethernet 10/100Base-T Wireless LAN TFT LCD Touch Screen AC'97 Codec 7 inches TFT LCD Interface Toch Screen Controller Audio 디바이스 드라이버 PMIC MMC/SD USB 1.1 Host/Client USB 2.0 Host/Client CMOS Camera PCMCIA/CF VGA IDE mini-ide Tiny X-Server MatchBox Windows manager MP3 Player 응 용 동영상 Player MPEG1,2,4, WMV1/2/3, DivX 5 Web Brower USB Cam OV511 CAM 지원 Access Pointer 802.a, 802.b - 24 -
IEB 확장보드의 소프트웨어 사양 분 류 항 목 내 용 디바이스 드라이버 DC Mocter Control Step Mocter Control ADC DAC 7-Segment L298 L297 ADC0804 DAC0800 8 ea DOT Matrix 5 * 7 Character LCD 2 * 16 응 용 IEB Test Program X-Hyper320TKU GUI Application 본 장비는 아래 그림처럼 응용 프로그램을 GUI 형태로 제작하여 동작할 수 있도록 제작되어 있 다. 임베디드 시스템에서 어플에 대한 요구가 많아지는 실정에서 이런 아이콘을 학생이 직접 제 작하여 만들어서 연동 실험한다면 좋은 효과가 있을 것이다. [그림 2-7] X-Hyper320TKU 응용 GUI 화면 - 25 -
2.3 X-Hyper320TKU의 하드웨어 2.3.1 전 원 X-Hyper320TKU의 전원의 구성을 [그림 3-6]과 같은 블록도로 구성되어 있다. PMIC 1.4V 1.8V 3.3V Monahans P CPU Module DC 12V 5V Step Down Regulator 3.3V LDO CPLD, Ethernet, DMB, MMC, CMOS... IEB Board Backlight, USB Power... [그림 2-8] X-Hyper320TKU 전원 블록 다이어그램 X-Hyper320TKU 보드는 DC 12V(2A 이상)를 사용한다. DC 12V는 IEB 보드에 전원 공급을 해 주고, CPU Module은 DC 5V 전원 공급을 한다. 보드 내부는 DC 5V 와 DC 3.3V로 보드 전체 디바이스에 공급을 해 주고 있다. - 26 -
2.3.2 시스템 버스 DFI Interface DF[15..0] nlla Dn Qn DF[00] -> Addr[0] DF[01] -> Addr[1] DF[02] -> Addr[2] DF[03] -> Addr[3] DF[04] -> Addr[4] DF[05] -> Addr[5] DF[06] -> Addr[6] DF[07] -> Addr[7] DF[08] -> Addr[8] DF[09] -> Addr[9] DF[10] -> Addr[10] DF[11] -> Addr[11] DF[12] -> Addr[12] DF[13] -> Addr[13] DF[14] -> Addr[14] DF[15] -> Addr[15] Addr[25..0] npreg npce1 nlua Dn Qn DF[00] -> Addr[16] DF[01] -> Addr[17] DF[02] -> Addr[18] DF[03] -> Addr[19] DF[04] -> Addr[20] DF[05] -> Addr[21] DF[06] -> Addr[22] DF[07] -> Addr[23] DF[08] -> Addr[24] DF[09] -> Addr[25] DF[10] -> Addr[26](nPREG) DF[11] -> Addr[27] DF[12] -> Addr[28] DF[13] -> Addr[29](nPCE1) DF[14] -> Addr[30](nPCE2) DF[15] -> Addr[31](RDnWR) npce2 RDnWR DIR Dn Qn DATA[15..0] nxcrven CPU Module CPLD EN [그림 2-9] X-Hyper320TKU 시스템 버스 블록 다이어그램 PXA320 CPU의 System Bus는 두가지가 있다. 하나는 DDR SDRAM 전용 Bus(EMPI)와 다른 하 나는 FLASH 및 외부 디바이스를 위한 DFI Bus이다. DFI Bus는 기존 Intel PXA CPU들과 달리 16bit Bus로 순차적으로 Address /Address /Data 순으로 access하는 Multiplex 방식을 사용한 다. 이는 (nlla, nlua, nxcrven) Signal에 의해 상/하위 Address, Data로 구분한다. 외부 디 바이스들을 제어하기 위해서는 이런 Multiplex 방식을 VLIO방식이나 SRAM Interface 방식으로 변환해 주어야 한다. X-Hyper3320TKU에서는 이러한 변환 과정이 CPLD에 구현 되어 있다. DF[15..0] Address_sig<25..0> ncs2 ncs3 nlla nlua nxcrven nwe noe AA/D Multiplex Bus EBI Bus Data_sig<15..0> noe nwe ncs RDnWR Device PXA320 CPLD - 27 -
2.3.3 Ethernet [그림 2-10] X-Hyper320TKU Ethernet 블록 다이어그램 10/100을 지원하는 DM9000E는 CPU와는 16bit Data Bus로 결선되어 있고, CPU의 Address[2] bit가 DM9000E의 CMD와 연결되어 있다. CMD의 High/Low에 의해 DM9000E는 16Bit Bus가 Data/Address로 동작한다. DM9000E의 Chip Select와 간단한 로직들은 전부 CPLD(Address Decoding)에서 구현되어 있 다. - 28 -
2.3.4 TFT LCD LCD Connector DF[15..0] nlla nlua nxcrven ncs2 ADDRESS & DATA LATCH ADDRESS Decoder LDD[15..0] L-CLK P-CLK F-CLK GP11/PWM0 LDD[15..0] HSync CLK VSync ADJ LDD[15..0] GP125/SCL GP126/SDA PXA320 HSync CLK VSync SCL SDA FS453 [그림 2-11] X-Hyper320TKU TFT LCD 블록 다이어그램 PXA320 CPU의 LCD 풀력 핀은 18핀(18Bit)로 구성되어 있으나, X-HYPER320TKU 에서는 16Bit 로 사용하고 있다. 본 LCD는 LED Backlight 내장 타입이라 Backlight용 5V 전원만 공급해 주면 Back light는 동작하며, Logic Input Voltage는 3.3V, 밝기 조절은 PWM 방식을 사용한다. FS453은 RGB 출력을 위해 사용되었다. 2.3.5 USB(Internal) GP15/USBC USBC_N USBC_P VBUS USBC_N USBC_P GP16/USBC_INT USB Client USBH1_PWR USBH1_EN USBH_N USBH_P FLAG VBUS EN VBUS Negative Positive PXA320 USB HOST [그림 2-12] X-Hyper320TKU USB 블록 다이어그램 PXA320은 USB HOST 1.1과 USB Client 1.1 Controller를 내장한다. - 29 -
USB Client는 Vbus에 의해 CPU쪽으로 Interrupt를 발생 시키고, CPU의 레벨을 맞추기 위해 중 간에 buffer를 사용했다. CPU의 Interrupt에 의해 USB 접속을 확인하고, GPIO로 USB를 활성화 시킨다. USB HOST는 Connecotr와 직접적으로 연결되어 있고, CPU의 USBH1_EN signal로 USB Power 을 enable하고 USB Overcurrent flag인 USBH1_PWR로 USB Power를 관리 한다. 2.3.6 USB Host 2.0 (External) DF[15..0] nlla nlua nxcrven ADDRESS & DATA LATCH ADDRESS Decoder ADDRESS[8..1] ADDRESS[16..1] DATA[15..0] ncs2 USBH_CS0 0x10E0_0000 ncs noe nwe nrd nwr HOST_DM HOST_DP nreset CPLD nreset GP30/OXU210INT INTERRUPT CPU Module UBI9032 [그림 2-13] X-Hyper320TKU USB Host 2.0 블록 다이어그램 UBI9032는 Host 2.0으로 Hi-Speed를 지원하며, 16Bit Data Bus를 사용한다. Chip Select와 간 단한 로직들은 전부 CPLD(Address Decoding)에서 구현되어 있다. X-Hyper320TKU에서는 USB Hub Controller(GL850)를 사용하여 USB Port를 확장 하였다. GL850은 Hardware적으로 구성되어 있어서, USB Interface가 동작하면 GL850도 자동적으로 동 작하게 되어 있다. GL850의 4 Port중 2 Port 는 Connector로서 연결되어 있고, 1 Port는 USB TO IDE Controller(GL811)를 사용하여 1.8Inch Mobile Hard Disk를 연결하였다. GL811 역시 USB interface가 동작하면 GL811도 자동적으로 동작하게 되어 있다. USB 2.0 Host DM/DP USB Hub DM/DP USB TO IDE (GL811) (UBI9032) (GL850) DM/DP DM/DP USB 2CH - 30 -
2.3.7 USB Client 2.0 (External) DF[15..0] nlla nlua nxcrven ADDRESS & DATA LATCH ADDRESS Decoder ADDRESS[5..1] ADDRESS[4..0] DATA[15..0] ncs2 NET2272_CS0 0x1040_0000 ncs0 noe nior nwe niow VBUS nreset CPLD nreset DM DP GP17/NET2272_nIRQ INTERRUPT CPU Module NET2272 [그림 2-14] X-Hyper320TKU USB Client 2.0 블록 다이어그램 USB Client 2.0을 지원하는 NET2272는 3가지의 Address Mode를 지원한다. 각 Mode에 따라서 하드웨어 방식이 틀리며, X-Hyper3xxTKU에서는 Non-Multiplexed Direct Address Mode를 사용 하였다. Chip Select와 간단한 로직들은 전부 CPLD(Address Decoding)에서 구현되어 있다. 2.3.8 Wireless LAN DF[15..0] nlla nlua nxcrven ncs2 ADDRESS & DATA LATCH ADDRESS Decoder D0 D1 WLAN Control 0x1050_0000 D0 Q0 D1 Q1 WLAN_nPD WAKEUP_WLAN GP90/SSP_FRM GP92/SSP_RXD GP91/SSP_TXD GP89/SSP_CLK SPI_nCS SPI_SDO SPI_SDI SPI_CLK GP102/nWLAN_IRQ SPI_SINTN PXA320 Wireless LAN [그림 2-15] X-Hyper320TKU Wireless LAN 블록 다이어그램 모듈로 구성되어 있는 Wireless LAN은 IEEE802.11b/g 와 호환하고, SPI interface로서 제어한 다. Wireless LAN의 기본 제어 Signal(WLAN_nPD, WAKEUP_WLAN)들은 CPLD에서 제어 할 수 있도록 구성되어 있다. - 31 -
2.3.9 MMC / SD / SDIO DF[15..0] nlla nlua nxcrven ncs2 ADDRESS & DATA LATCH ADDRESS Decoder GP22/MMC_CLK GP23/MMC_CMD GP18/MMC_DATA0 GP19/MMC_DATA1 GP20/MMC_DATA2 GP21/MMC_DATA3 GP98/MMC_CD GP99/MMC_WP CLK CMD DATA0 DATA1 DATA2 DATA3 CD WP PXA320 MMC [그림 2-16] X-Hyper320TKU MMC/SD 블록 다이어그램 PXA320은 MMC(MultiMedia Card), SD(Secure Digital),SDIO(Secure Digital I/O)를 지원하는 controller를 2포트 제공한다. MMC/SD/SDIO에 대한 통신 protocol을 지원하며 아래 스펙을 만 족한다. MultiMedia Card System Specification Version 4.0 Secure Digital Memory Card Specification Version 1.10 Secure Digital I/O Card Specification Version 1.0 X-HYPER320TKU 보드에서 MMC/SD/SDIO Controller를 사용하기 위해서는 CPU의 MMC/SD/SDIO Controller에 전원 공급해야 한다. 본 보드에서는 MAX8660 6번 전원 출력 단자 가 PXA320 CPU의 MMC/SD/SDIO Controller로 공급되는 전압으로 설계되어 있다. 먼저 MAX8660에 접근해서 6번 전원 출력을 3.3V로 세팅해 주어야 한다. - 32 -
2.3.10 Audio DF[15..0] nlla nlua nxcrven ncs2 ADDRESS & DATA LATCH ADDRESS Decoder HPOUTR HPOUTL MIC2 MICBIAS SPKR EAR JACK MIC JACK AC97_DOUT AC97_BITCLK AC97_DIN AC97_SYNC AC97_RESET DOUT BITCLK DIN SYNC RESET SPKL PXA320 DMB LINE_L LINE_R Audio [그림 2-17] X-Hyper320TKU Audio 블록 다이어그램 X-Hyper320TKU 보드에서는 EAR JACK, MIC JACK, 그리고 2개의 스피커로 구성되어 있다. 그리 고 DMB에서 나오는 오디오 Signal들이 Audio Codec의 LINE Input에 연결되어 있다. 2.3.11 UART DF[15..0] nlla nlua nxcrven ncs2 ADDRESS & DATA LATCH ADDRESS Decoder UART Control 0x1090_0000 D0 D1 D2 D3 D4 D0 Q0 D1 Q1 D2 Q2 D3 Q3 D4 Q4 UARTA_ON_OFF (BLUETOOTH) IrDA_SC GPS_onoff STDTXD STDRXD BTTXD BTRXD RX TX RX TX Debug GPS CPU Module GP9/INTA GP10/INTB GP13/INTC GP14/INTD noe nwe CSA :0x10A0_0000 CSB :0x10B0_0000 CSC :0x10C0_0000 CSD :0x10D0_0000 CPLD ncsa ncsb ncsc ncsd INTA INTB INTC INTD nior niow 16C554 ON_OFF Fulll UART Fulll Signal GP111/BTTXD GP110/BTRXD GP107/STDTXD GP108/STDRXD BTTXD BTRXD STDTXD STDRXD FFUART [그림 2-18] X-Hyper320TKU UART 블록 다이어그램 X-Hyper320TKU는 Internal 3 Port, External 4 Port로 총 7 Port의 UART를 지원하며, Internal중 Standard UART는 Debug용으로, FF UART는 Full UART용으로, BT UART는 GPS 전용으로 설 계되어 있다. External 4 Port중 Port A는 BLUETOOTH(Bluetooth Module 바로 사용 가능)전용 으로, Port B 는 IrDA전용으로, 나머지 2 Port는 Connector로서 구성되어 있다. - 33 -
2.3.12 DMB DF[15..0] nlla nlua nxcrven ncs2 ADDRESS & DATA LATCH ADDRESS Decoder D3 D4 D3 Q3 D4 Q4 DMB Control 0x1080_0000 CTX_nRESET CTX_BB_PWR_DN GP86 GP93/SSP4_SCLK GP95/SSP4_TXD GP96/SSP4_RXD Control_nCS Control_CLK Control_MOSI Control_MISO GP75 DATA_nCS DATA_CLK DATA_MOSI DATA_MISO GP101 INT I2S Audio PXA320 DMB DMB(CTX305R) [그림 2-19] X-Hyper320TKU DMB 블록 다이어그램 CTX305R DMB는 Interface가 SPI로 되어 있으며, Control Interface와 Data Interface로 분리되 어 있다. DMB를 제어하기 위한 기본 Control Signal들은 CPLD에서 출력이 이루어지며, 각각의 Chip Selec에 SPI 라인은 브릿지 되어 있다. 2.3.13 PMIC DF[15..0] nlla POWER_EN_sig nlua nxcrven ncs2 DATA[0] D0 Q0 ADDRESS & DATA LATCH ADDRESS Decoder Power Control 0x1000_0000 DATA[1] DATA[2] DATA[3] DATA[4] DATA[5] DATA[6] DATA[7] DATA[8] DATA[9] DATA[10] DATA[11] DATA[12] DATA[13] DATA[14] DATA[15] D1 Q1 D2 Q2 D3 Q3 D4 Q4 D5 Q5 D6 Q6 D7 Q7 D8 Q8 D9 Q9 D10 Q10 D11 Q11 D12 Q12 D13 Q13 D14 Q14 D15 Q15 DM9000E1_PWREN DM9000E2_PWREN LCD_PWREN LCD_BL_PWREN VGA_PWREN AUDIO_PWREN USBH_PWREN NET2272_PWREN GL850_PWREN IDE_PWREN WLAN_PWREN CAM_PWREN DMB_PWREN MMC_ON UART_PWREN CPU Module CPLD [그림 2-20] X-Hyper320TKU PMIC 블록 다이어그램 X-Hyper320TKU는 각각의 디바이스들을 ON/OFF 할 수 있도록 설계되어 있다. 이는 CPLD에서 담당하며, CPLD의 ON/OFF 동작에 의해 각각의 디바이스들로 전원이 공급된다. - 34 -
2.3.14 CMOS Camera DF[15..0] CMOS Control 0x1080_0000 nlla nlua nxcrven ncs2 ADDRESS & DATA LATCH ADDRESS Decoder D0 D1 D2 D0 Q0 D1 Q1 D2 Q2 CMOS RESET CIF_DD[9..0] GP62/FV GP61/LV GP63/PCLK noe GATE CIF_DD[7..0] VSync HSync PCLK CPU Module noe GATE nreset CIF_DD[7..0] PCLK GP82/SCL GP80/SDA SCL SDA DMB [그림 2-21] X-Hyper320TKU CMOS Camera 블록 다이어그램 X-Hyper320TKU에서는 C-MOS Camera와 DMB Module(광성전자)에서 CIF Interface를 입력 받 는다. 회로 설계상 두개는 동시에 사용 불가능하고, 한 개씩의 디바이스만 사용 가능하다. 그래서 중간에 Buffer Gate를 사용하여 Select 할 수 있도록 설계 되어 있다. - 35 -
2.4 X-Hyper320TKU의 메모리 맵 2.4.1 플레시 메모리 맵 [그림 2-22] 플래시 메모리 맵 2.4.2 SDRAM 메모리 맵 [그림 2-23] SDRAM 메모리 맵 - 36 -
2.4.3 Static 메모리 맵 메인 보드 이름 어드레스 범위 설명 CPLD 0x10000000 0x100000 XHYPER320TKU CPLD Power DM9000-1 0x10100000 0x100000 10/100 Base-T Ethernet Controller DM9000-2 0x10200000 0x100000 10/100 Base-T Ethernet Controller CPLD ID 0x10300000 0x100000 CPLD ID NET2272 0x10400000 0x100000 USB2.0 Slave WLAN 0x10500000 0x100000 wireless module CMOS 0x10800000 0x100000 cmos camera UART ON_OFF 0x10900000 0x100000 External uart power on/off 16C554 CSA 0x10A00000 0x100000 Serial Controller CS A 16C554 CSB 0x10B00000 0x100000 Serial Controller CS B 16C554 CSC 0x10C00000 0x100000 Serial Controller CS C 16C554 CSD 0x10D00000 0x100000 Serial Controller CS D - 37 -
IEB 확장보드 이 름 어드레스 범위 설명 FND1 0x11000000 0x100000 7-segment 1 FND2 0x11100000 0x100000 7-segment 2 FND3 0x11200000 0x100000 7-segment 3 FND4 0x11300000 0x100000 7-segment 4 FND5 0x11400000 0x100000 7-segment 5 FND6 0x11500000 0x100000 7-segment 6 FND7 0x11600000 0x100000 7-segment 7 FND8 0x11700000 0x100000 7-segment 8 DOT_1 Col 0x11800000 0x100000 Dot collumn 1 DOT_2 Col 0x11900000 0x100000 Dot collumn 2 DOT_3 Col 0x11A00000 0x100000 Dot collumn 3 DOT_4 Col 0x11B00000 0x100000 Dot collumn 4 DOT_5 Col 0x11C00000 0x100000 Dot collumn 5 KEY_W 0x11D00000 0x100000 Key Write KEY_R 0x11E00000 0x100000 Key Read DAC 0x11F00000 0x100000 Digital to Analog Convertor ADC 0x12000000 0x100000 Analog to Digital Convertor STEP Motor 0x12100000 0x100000 Step Motor controller DC Motor 0x12200000 0x100000 DC Motor controller Character LCD 0x12300000 0x100000 Character LCD Control LED 0x12400000 0x100000 LED - 38 -
2.5 X-Hyper320TKU 의 Pin Assign Table CPLD JTAG Connector (J1) NO Name Description 1 GND Ground 2 Vref CPLD Reference Voltage 3 GND Ground 4 TMS CPLD Test Mode Select 5 GND Ground 6 TCK CPLD Test Clock 7 GND Ground 8 TDI CPLD Test Data Input 9 GND Ground 10 TDO CPLD Test Data Output 11 GND Ground 12 NC Not Connect 13 GND Ground 14 NC Not Connect Ethernet Standard Connector (J2, J3) NO Name Description 1 TPOP Ground 2 TPNP CPLD Reference Voltage 3 TPIP Ground 4 COM11 CPLD Test Mode Select 5 COM11 Ground 6 TPIN CPLD Test Clock 7 COM12 Ground 8 COM12 CPLD Test Data Input 9 Link LED Ground 10 DC3P3V CPLD Test Data Output 11 LAN LED Ground 12 LAN LED Not Connect - 39 -
Touch Connector (TOUCH1, TOUCH2) NO Name Description 1 XM X Minus 2 YM Y Minus 3 XP X Plus 4 YP Y Plus LCD Connector (LCD1) NO Name Description 1 U/D Display Control(Up or Down) 2 DMS Selection(DE or SYNC) 3 Hsync Horizontal SYNC 4 VDD Power Supply for LED Driver circuit 5 VDD Power Supply for LED Driver circuit 6 VDD Power Supply for LED Driver circuit 7 Vcc Power Supply for Digital circuit 8 Vsync Vertical SYNC 9 DE Data Enable 10 Vss Power Ground 11 Vss Power Ground 12 ADJ Adjust for LED brightness 13 B5 Blue Data 5(MSB) 14 B4 Blue Data 4 15 B3 Blue Data 3 16 Vss Power Ground 17 B2 Blue Data 2 18 B1 Blue Data 1 19 B0 Blue Data 0 20 Vss Power Ground 21 G5 Green Data 5(MSB) 22 G4 Green Data 4 23 G3 Green Data 3 24 Vss Power Ground 25 G2 Green Data 2 26 G1 Green Data 1 27 G0 Green Data 0 28 Vss Power Ground 29 R5 Red Data 5(MSB) 30 R4 Red Data 4 31 R3 Red Data 3 32 Vss Power Ground 33 R2 Red Data 2-40 -
LCD Connector (LCD2) NO Name Description 1 GND Power Ground 2 PCLK Pixel Clock 3 NC Not Connect 4 LCLK Line Clock 5 FCLK Frame Clock 6 GND Power Ground 7 LDD12 LCD Data 12 8 LDD13 LCD Data 13 9 LDD14 LCD Data 14 10 LDD15 LCD Data 15 11 LDD16 LCD Data 16 12 LDD17 LCD Data 17 13 GND Power Ground 14 LDD6 LCD Data 6 15 LDD7 LCD Data 7 16 LDD8 LCD Data 8 17 LDD9 LCD Data 9 18 LDD10 LCD Data 10 19 LDD11 LCD Data 11 20 GND Power Ground 21 LDD0 LCD Data 0 22 LDD1 LCD Data 1 23 LDD2 LCD Data 2 24 LDD3 LCD Data 3 25 LDD4 LCD Data 4 26 LDD5 LCD Data 5 27 GND Power Ground 28 BIAS LCD BIAS 29 NC Not Connect 30 DC3P3V DC 3.3V Power 31 DC3P3V DC 3.3V Power 32 DP3P3V DC 3.3V Power Backlight Connector (BL1) NO Name Description 1 DC5V DC 5V Power 2 DC5V DC 5V Power 3 LCD_BL_PWREN LCD Backlight Power Enable 4 DC5V DC 5V Power 5 GND Power Ground - 41 -
RGB Output Connector (VGA) NO Name Description 1 RED Red Video. 2 GREEN Green Video. 3 BLUE Blue Video. 4 GND Monitor ID Bit 2. 5 GND Ground 6 RGND Red Ground. 7 GGND Green Ground. 8 BGND Blue Ground. 9 GND Key(No Pin). 10 SGND Sync Ground. 11 GND Monitor ID Bit 0. 12 DDC DATA Monitor ID Bit 1. 13 HSYNC Horizontal Sync. 14 VSYNC Vertical Sync. 15 DDC CLOCK Monitor ID Bit 3. USB Mini Connector (CN2, J4) NO Name Description 1 Vbus DC 5V USB Pow er Supply 2 DM Data Negative 3 DP Data Positive 4 ID ID 5 GND Pow er Ground USB Connector (CN3) NO Name Description 1 Vbus DC 5V USB Power Supply 2 DM Data Negative 3 DP Data Positive 4 GND Power Ground - 42 -
USB Dual Connector (CN4) NO Name Description 1 Vbus DC 5V USB Power Supply 2 DM Data Negative 3 DP Data Positive 4 GND Power Ground 5 Vbus DC 5V USB Power Supply 6 DM Data Negative 7 DP Data Positive 8 GND Power Ground 1.8" HDD Disk (IDE1) NO Name Description 1 Factory use NC 2 Factory use NC 3 RESET- RESET 4 GND Ground 5 DD7 DATA 7 6 DD8 DATA 8 7 DD6 DATA 6 8 DD9 DATA 9 9 DD5 DATA 5 10 DD10 DATA 10 11 DD4 DATA 4 12 DD11 DATA 11 13 DD3 DATA 3 14 DD12 DATA 12 15 DD2 DATA 2 16 DD13 DATA 13 17 DD1 DATA 1 18 DD14 DATA 14 19 DD0 DATA 0 20 DD15 DATA 15 21 GND Ground 22 DMARQ DMA request 23 GND Ground - 43 -
24 DIOW_ Write strobe signal 25 DIOR_ Read strobe signal 26 GND Ground 27 IORDY Data transfer ready 28 GND Ground 29 DMACK_ DMA acknowledge signal 30 INTRQ Interrupt signal for the host system 31 DA1 Register address signal 1 32 PDIAG_ NC 33 DA0 Register address signal 0 34 DA2 Register address signal 2 35 CS0_ Device chip select(command black) 36 CS1_ Device chip select(control black) 37 DASP Indicates that a device is active 38 3.3V DC 3.3V Power 39 3.3V DC 3.3V Power 40 Reserved Reserved CMOS Camera Connector (J6) NO Name Description 1 DC3P3V 3.3V Power Supply 2 DC3P3V 3.3V Power Supply 3 DC3P3V 3.3V Power Supply 4 DC3P3V 3.3V Power Supply 5 NC 6 CAM_PCLK CIF Pixel Clock 7 NC 8 CAM_VSYNC CIF Frame Clock 9 NC 10 CAM_HSYNC CIF Line Clock 11 NC 12 CAM_D9 CIF DATA9 13 NC 14 CAM_D8 CIF DATA8 15 CAM_RESET RESET 16 CAM_D7 CIF DATA7 17 NC 18 CAM_D6 CIF DATA6 19 NC 20 CAM_D5 CIF DATA5 21 NC 22 CAM_D4 CIF DATA4 23 NC - 44 -
24 CAM_D3 CIF DATA3 25 GND Ground 26 CAM_D2 CIF DATA2 27 SDA I2C DATA 28 CAM_D1 CIF DATA1 29 SCL I2C Clock 30 CAM_D0 CIF DATA0 31 CMOS_GP0 CMOS GPIO 32 CIF_MCLK CIF MCLK 33 CMOS_GP1 CMOS GPIO 34 GND Ground 35 GND Ground 36 GND Ground 37 GND Ground 38 CMOS_ID CMOS Detect 39 GND Ground 40 GND Ground - 45 -
Cenronix DMB Connector (J16) NO Name Description 1 DC3P3V 3.3V Power Supply 2 DC3P3V 3.3V Power Supply 3 DC3P3V 3.3V Power Supply 4 DC3P3V 3.3V Power Supply 5 CTL_SPI_CS DMB Control Chip Select(SPI) 6 NC 7 DATA_SPI_CS DMB Data Chip Select(SPI) 8 NC 9 SSP4_RXD SPI RXD 10 NC 11 SSP4_TXD SPI TXD 12 NC 13 SSP4_SCLK SPI Clock 14 NC 15 CTX_nRESET DMB RESET 16 NC 17 I2SC_MCLK No Use 18 NC 19 I2S_LRCK No Use. 20 NC 21 I2S_BCLK No Use. 22 NC 23 I2S_SDO No Use. - 46 -
24 NC 25 GND Ground 26 NC 27 NC 28 NC 29 NC 30 NC 31 DMB_nINT DMB Interrupt 32 NC 33 CTX_BB_PWR_DN DMB Power Down 34 DMB_ID0 DMB DETECT ID 35 Ground Ground 36 DMB_ID1 DMB DETECT ID 37 GND Ground 38 GND Ground 39 GND Ground 40 GND Ground 16C554 A Port UART (for Bluetooth) (J8) NO Name Description 1 DCDA Data Set Ready 2 RXDA Receive Data 3 TXDA Transmit Data 4 DTRA Data Terminal Ready 5 GND Ground 6 DSRA Data Set Ready 7 RTSA Ready To Send 8 CTSA Clear To Send 9 DC5V DC 5V - 47 -
16C554 C Port UART (J12) NO Name Description 1 DC3P3V DC 3.3V Power Supply 2 TXD RS232 Level TXD 3 RXD RS232 Level RXD 4 GND Ground 16C554 D Port UART (J10) NO Name Description 1 DC5V DC 5V Power Supply 2 TXD TTL Level TXD 3 RXD TTL Level RXD 4 GND Ground Standard UART (J9) NO Name Description 2 TXD RS232 Level Standard UART 3 RXD RS232 Level TXD 5 GND RS232 Level RXD - 48 -
Full Function UART (J7) NO Name Description 1 DCDA Data Set Ready 2 RXDA Receive Data 3 TXDA Transmit Data 4 DTRA Data Terminal Ready 5 GND Ground 6 DSRA Data Set Ready 7 RTSA Ready To Send 8 CTSA Clear To Send 9 RI Ring Indicator GPS Connector (J11) NO Name Description 1 GPS_ONOFF GPS On Off Signal 2 DC5V DC 5V Power Supply 3 BTRXD Bluetooth UART RXD 4 BTTXD Bluetooth UART TXD 5 GND Ground - 49 -
NO Name Description NO Name Description 1 GND Ground 2 GND Ground 3 GND Ground 4 GND Ground 5 PAD_DDR_EVAL Reserved 6 nrdy GPIO2 7 PAD_EMPI_CLK Reserved 8 ncs2 GPIO3 9 PAD_nOE Reserved 10 ncs3 GPIO4 11 PAD_nWE Reserved 12 DF_ADDR0 DF ADDR0 13 PAD_nCS0 Reserved 14 DF_ADDR1 DF ADDR1 15 PAD_nCS1 Reserved 16 DF_ADDR2 DF ADDR2 17 PAD_nADV Reserved 18 DF_ADDR3 DF ADDR3 19 PAD_nADV2 Reserved 20 nxcvren nxcvren 21 GND Ground 22 DF_SCLK DF SCLK 23 DF0 DF0(DFI Bus) 24 nbe0 nbe0 25 DF1 DF1(DFI Bus) 26 nbe1 nbe1 27 DF2 DF2(DFI Bus) 28 nlla nlla 29 DF3 DF3(DFI Bus) 30 nlua nlua 31 DF4 DF4(DFI Bus) 32 DF_nRE DFI nre 33 DF5 DF5(DFI Bus) 34 DF_nWE DFI nwe 35 DF6 DF6(DFI Bus) 36 DF_nCS0 DFI ncs0 37 DF7 DF7(DFI Bus) 38 DF_nCS1 DFI ncs1 39 DF8 DF8(DFI Bus) 40 DF_CLE_nOE DFI CLE_nOE 41 DF9 DF9(DFI Bus) 42 DF_ALE_nWE DFI ALE_nWE 43 DF10 DF10(DFI Bus) 44 DF_ALE2 Reserved 45 DF11 DF11(DFI Bus) 46 DF_UNLOCK Reserved 47 DF12 DF12(DFI Bus) 48 DF_RnB DFI RnB 49 DF13 DF13(DFI Bus) 50 GND Ground - 50 -
CPU Connector (U68) 51 DF14 DF14(DFI Bus) 52 GP5/nPIOR GPIO5 53 DF15 DF15(DFI Bus) 54 GP6/nPIOW GPIO6 55 GND Ground 56 GP7/nIOIS6 GPIO7 57 GP0/ETHERNET1_INT GPIO0 58 GP8/nPWAIT GPIO8 59 GP1/CF-nINT GPIO1 60 GP11/PWM0 GPIO11 61 GP9/TL16C554_INTA GPIO9 62 GP12/PWM1 GPIO12 63 GP10/TL16C554_INTB GPIO10 64 GND Ground 65 GP13/TL16C554_INTC GPIO13 66 GP59/CIF_MCLK GPIO59 67 GP14/TL16C554_INTD GPIO14 68 GP60/CIF_PCLK GPIO60 69 GP15/USBC GPIO15 70 GP61/CIF_LV GPIO61 71 GP16/USBC_INT GPIO16 72 GP62/CIF_FV GPIO62 73 GP17/NET2272_nIRQ GPIO17 74 GP49/CIF_DD0 GPIO49 75 GP30/OXU210INT GPIO30 76 GP50/CIF_DD1 GPIO50 77 GND Ground 78 GP51/CIF_DD2 GPIO51 79 GP22/MMC_CLK GPIO22 80 GP52/CIF_DD3 GPIO52 81 GP23/MMC_CMD GPIO23 82 GP53/CIF_DD4 GPIO53 83 GP131/CPLD2 GPIO31*** 84 GP54/CIF_DD5 GPIO54 85 GP18/MMC_DATA0 GPIO18 86 GP55/CIF_DD6 GPIO55 87 GP19/MMC_DATA1 GPIO19 88 GP56/CIF_DD7 GPIO56 89 GP20/MMC_DATA2 GPIO20 90 GP57/CIF_DD8 GPIO57 91 GP21/MMC_DATA3 GPIO21 92 GP58/CIF_DD9 GPIO58 93 GP28/MMC2_CLK GPIO28 94 GND Ground 95 GP29/MMC2_CMD GPIO29 96 GP32/SCL GPIO32 97 GP24/MMC2_DATA0 GPIO24 98 GP33/SDA GPIO33 99 GP25/MMC2_DATA1 GPIO25 100 GP42/FFTXD GPIO42-51 -
CPU Connector (U69) 101 GP88 GPIO88 102 L_LDD7 GPIO13_2 103 GP87 GPIO87 104 L_LDD6 GPIO12_2 105 GP86 GPIO86 106 L_LDD5 GPIO11_2 107 GP85 GPIO85 108 L_LDD4 GPIO10_2 109 GP78 GPIO78 110 L_LDD3 GPIO9_2 111 GP77 GPIO77 112 L_LDD2 GPIO8_2 113 GP76 GPIO76 114 L_LDD1 GPIO7_2 115 GP75 GPIO75 116 L_LDD0 GPIO6_2 117 DC5V DC 5V 118 DC5V DC 5V 119 DC5V DC 5V 120 DC5V DC 5V CPU JTAG NO Name Description 1 VREF Reference Voltage 2 VTarget Targer Voltage 3 ntrst Test Reset 4 GND Ground 5 TDI Test Data In 6 GND Ground 7 TMS Test Mode Select 8 GND Ground 9 TCK Test Clock 10 GND Ground 11 RTCK RTCK 12 GND Ground 13 TDO Test Data Output 14 GND Ground 15 RST Reset 16 GND Ground 17 DBGRQ Reserved 18 GND Ground 19 DBGACK Reserved 20 GND Ground - 52 -
제3장 X-Hyper320TKU 환경설정 3.1 Overview 3장에서는 실습에 앞서 기본적으로 타겟보드의 개발환경에 대해서 알아본다. 일반적으로 장비를 구 입할 때 제공되는 매뉴얼을 참조하여 보트의 부트로더, 커널 및 파일시스템들을 빌드 해보고 이미지 를 타겟보드에 올려보았을 것이다. 임베디드 시스템의 개발환경에 익숙해진 후라면 실습의 내용이 쉽게 이해가거나 어렵지 않게 느껴질 것이지만 아직 익숙하지 않거나 처음 장비를 접하는 사람을 위 해 간단히 임베디드 시스템의 개발환경 구축에 대해 설명한다. 문서는 하이버스사의 Marvel PXA 320 processor platform인 X-Hyper320 TKU 보드에 리눅스BSP를 설치, 컴파일 하는 방법을 작성한 것이다. 3.1.1 HOST PC 권장사항 리눅스 배포판이 설치된 PC (권장 배포판: redhat 9.0, Fedora Core Series, Asianux ) PC 사양 구 분 사 양 CPU RAM HDD VGA Parallel Ethernet Serial CD-rom Pentium 2.4 G이상 / AMD sempron 2400이상 (x64인 경우 32bit용 배포판을 설치하여 사용한다) 256MB 이상 1.5GB 이상의 여유공간 리눅스 드라이버 호환 모델( ATI, Geforce, Matrox등) 1 port (xdb 사용시, *usb to parallel 사용 불가) 1 port (2 port 권장) 1 port (*usb to serial 사용가능) 32x 이상 3.1.2 배포판 설치시 주의사항 파티션은 일반 ext3로 포멧해서 사용하며, 보안관련 체크를 하게될 경우 NFS등의 문제가 발생 할수 있다. xinetd, tftp, NFS, minicom등의 패키지는 개발시 꼭 필요하므로 최초 설치시 같이 설치하는 것이 좋다. - 53 -
* 주의 : VMWARE를 이용하여 리눅스를 설치할 경우, Host PC자원 분리로 컴파일 시간이 오래 걸리고 가상PC내에서 실제 디바이스 제어가 잘 안될 수 있다. 사용하는 것을 권장하지 않는다. - 54 -
3.2 Quick Start 3.2.1 BSP Install 1. 제공된 BSP CD 최상의 디렉토리의installer-xhyper320-tku.sh를 실행한다 Ex) #../installer-xhyper270-tku.sh [프로젝트 디렉토리:/PROJECT/WENDERS] 2. 다이알로그 화면이 나오면서 Yes/No를 물어본다 YES를 하면 BSP패키지를 프로젝트 디렉토 리에 설치한다. 3. 크로스 컴파일러는 /usr/local/arm-linux-4.1.1 에 설치된다. 3.2.2 BSP compile & Build 1. 설치가 완료되면 compile & build 여부를 물어보는 dialog가 표시된다. Yes를 하면 Kernel->Bootloader->Filesystem 순서대로 build한다. 2. Kernel은 zimage, Bootloader는 boot.bin, Filesystem은 lite.img, gtk.img로 생성되며 프로젝 트 디렉토리의 build-image 디렉토리에 복사된다. 3. Lite.img는 최소 부팅 이미지, gtk.img 는 X와 GTK2.10 base 파일시스템이다. * 주의 : tftp-server 의 설치(asianux의 경우) 만일 tftp-server가 HOST PC에 설치 되어 있지 않다면 BSP install시rpm설치를 한다. 아시아 눅 스의 경우 /etc/hosts.deny에 ALL이라고 되어 있다면 이를 삭제한다. 3.2.3 Booting Linux 1. Bootloader Fusing (XDB를 사용) (1) Marvell C++ Software Development Tool Suite for Intel XScale Microarchitecture, Professional, v2.1 을설치한다. (2) Marvell XDB Debugger 를 실행하고 start한다. (3) JTAG가 잡혔으면 Flash->Burn Flash를 실행한다. (4) Fusing 하기전에 NAND를 초기화 한다. Extended Flash Functionality 섹션에서 Select NAND Function을 Reset bad block table로 선택하고 Execute 를 클릭한다. 완료 되었으면 Initialize NAND flash 를 선택하고 Execute 를 클릭한다. - 55 -
(5) 초기화가 끝났으면 Burning tab에서 Data File로 boot.bin을 고르고Offset in Flash를 0으로 하고 Burn 을 클릭한다. (6) Bootloader Fusing이 완료되었으면 프로그램을 종료하고 보드를 리셋하여 시리얼이 출력되 는지 확인하여 본다. 2. Bootloader, Kernel, Filesystem Fusing Terminal 프로그램(teraTerm, minicom)등을 실행한다 Baud 38400, 8N1, no hardware flow control로 설정을 한다. 부팅중 Autoboot (3 seconds) in progress, press any key to stop.. 메시지가 나오 면 키를 입력하여 blob> 커맨드 상태로 간다. HOST PC와 tartget board의 IP를 설정한다. setip 명령으로 현재 설정된 ip를 알 수 있다. 타겟보드의 IP설정 기본값 Target 192.168.1.50, Server 192.168.1.100 이다. 아래와 같은 방법으로 IP를 설정할 수 있다. 아래는 예시이다. blob> setip serverip [서버/HOST PC] IP => ex) setip serverip 192.168.1.1 blob> setip clientip [타겟/보드] IP => ex) setip clientip 192.168.1.2 blob> setip -- 설정된 IP확인 HOST PC의 tftp 디렉토리에 커널 이미지인 zimage를 복사 한다음 각각 이미지를 다운로드 받는다. tftp [file name] -> Ex) blob> tftp zimage 이미지는 램 address 0x80800000에 다운로드 받으며 이미지 다운로드가 끝났다면 Nandwrite 명령으로 Flash에Fusing한다. 커널은 Nand address 0x00040000 에서 offset은 0x00200000이다. Ex) blob> nandwrite -z 0x80800000 0x00040000 0x00200000 같은 방법으로 gtk.img를 다운받고 Flash에Fusing한다. - 56 -
Yaff image의 경우 fusing방법이 다르기 때문에 커맨드의 차이가 있으므로 주의해야 한다. Ex) blob> tftp gtk.img blob> nandwrite -y 0x80800000 0x00240000 0 Fusing이 모두 끝났다면 타겟을 재부팅 하거나 nkernl명령으로 boot한다. Ex) blob> nkernel Bootloader가 이미 올라가 있는 상태라면 Bootloaer상에서 XDB없이 Fusing이 가능하다. boot.bin을 다운받고 Flash에 Fusing한다. tftp [file name] Ex) blob> tftp boot.bin blob> nandwrite -z 0x80800000 0x00000000 0x40000-57 -
3.3 개발환경 구축 3.3.1 Serial setting 1. minicom setting (for Linux) (1) s 옵션으로 minicom 설정 창을 띄운다. (2) Serial port setup 에서 Bps 38400 8N1, Hardware Flow Control : NO로 세팅한다 - 58 -
* Serial Device에서 /dev/ttys0는 COM1, /dev/ttys1은 COM2이다 USB to serial을 사용 할 경우 /dev/ttyusb0로 시작된다. 설정이 모두 끝났으면 Save setup as dfl"로 저장하 고 종료한후 다시 minicom을 실행한다. 3.3.2 tftp-server setting 1. tftp-server 설치 (For linux) (1) rpm qa grep tftp 옵션으로 tftp-server rpm이 설치되어 있는지 확인한다. - 59 -
(2) 설치가 되어 있지 않으면 BSP CD 의 RPM 디렉토리에 있는 tftp-server rpm을 설치한 다. (3) tftp rpm이 설치 되면 /etc/xinetd.d/tftp 파일이 생성된다. 아래와 같이 수정하여야 한 다. /etc/xinetd.d/tftp 파일이 없다면새로 생성하여 아래와 같이 작성한다 (4) server_args를/tftpboot로 설정하면 Bootloader에서 파일을 받을때는 Host의 /tftpboot 안에 있는 파일만 전송이 가능하다. /tftpboot은tftp server daemon의 root directory로 tftp 요청시 필요한 파일을 이곳을 기준으로 찾는다. 이 directory와 subdirectory에서만 찾는다. tftp로 다운로드 하고자 하는 Kernel과 파일시스템 Image는 이곳에 있어야 한다. 필요하다 면 다른 이름을 사용하여도 된다. 위의 스크립트에서 정한 /tftpboot 디렉토리가 호스트PC상에 존재해야 한다. 디렉토리가 없다면 만들어야 한다. - 60 -
(5) 설치가 완료 되었으면 xinetd 서비스를 재시작 한다.. /etc/rc.d/init.d/xinetd restart (6) netstat au 명령으로 현재 tftp 데몬이 수행중인지 확인한다. 2. tftp-server 설치 (For Windows) (1) 윈도우 환경에서 tftp를 사용할 경우 윈도우용 tftp server 프로그램을 설치한다. Winagents에서 배포하는 WinAgents TFTP server 프로그램을 설치한다. Winagents 홈페이 지 (http://www.winagents.com/) 에서 직접 다운로드 받으수 있으며 BSP CD의 UTIL 디렉 토리에 있는 tftpsetup.exe 를 설치해도 된다. (2) 윈도우 용은 설정이 간단하다. Server->Manage repositry 다운로드를 할 디렉토리를 지정하고 tftpserver를 start하면 된다. client부분은 설정하지 않아도 된다. 설정하였다면 종 료하지 않고 창을 띄어 놓고 사용한다. - 61 -
3.3.3 Cross-Complier 경로 설정 1. bash_profile 수정 (1) BSP install이 완료 되었다면 /usr/local/arm-linux-4.1.1/bin 에 크로스 컴파일러가 설 치가 된다.추후에 어플리케이션 크로스 컴파일시 PATH가 있어야 정상적으로 컴파일 되기 때문에.bash_profile을 수정한다..bash_profile은 로그인한 계정 디렉토리에 있다. # vi ~/.bash_profile - 62 -
(2) 수정 후 다시 로그인하면 적용이 된다. echo 명령으로 PATH 가 잘 적용되어있는지 확인해 본다. #echo $PATH - 63 -
320TKU_linux응용 실습편 @ 실습에 들어가기전에 응용 어플리케이션을 컴파일하기 위해서는 320TKU 커널과 툴체인이 설치 되어있어야 한다. 본 교재에서는 응용 어플리케이션 중점으로 설명을 하므로 앞에서 개발환경 구축, 커널컴파일 및 이미지 다운로드 방법등을 간단히 설명하였다. 실습 시 발생하는 타겟보드의 자세한 사용법 및 명령어에 대해서는 하이버스 IT교재 시리즈인 임베디드 리눅스 설계 및 응용 교재를 참고 하기 바란다. 응용 실습편에서는 그 외에도 실습에 필요한 기타 지식들이 많이 요구된다. 실습에 필요한 설명을 많이 넣으려고 노력했으나 한권의 책에 모두 자세히 기술 할 수 없으므로 실습위 주의 설명을 하였다., 이해가 가지 않는 부분과 실습에 필요한 이론등은 기타 정보를 이용해 습 득하기 바란다. 기존에 320TKU를 이용하여 커널 컴파일을 해보고 타겟보드에 다운로드를 해 놓은 경우 어플 리케이션 동작을 위해 몇 가지 드라이버가 변경되었으므로, 새로이 커널을 컴파일하여 타겟보드 에 올려야 한다. 이미 변경되어 새로이 컴파일 된 커널은 제공된 CD의 image 디렉토리에서 제 공되고 있으며, 해당 커널이미지와 파일시스템을 올려서 사용한다. 커널 컴파일을 해보지 않았거나 타겟보드에 아무런 커널도 올라가 있지 않은 경우는 하이버스 IT교재 시리즈인 임베디드 리눅스 설계 및 응용 교재를 참고하여 부트로더를 올리고 커널과 파일시스템을 올릴 때는 본 교재에서 제공된 CD의 image 디렉토리에 있는 이미지를 다운로드 하여 사용하면 된다. 검은화면에 마우스 포인터만 보인다면 정상적으로 커널이미지와 파일시스템 이 올라간 것이다. 교재를 이용하여 학습 하는동안 명령어 입력시 오류가 발생방지를 위해서 호스트 PC와 타겟보 드의 입력 방법의 구분은 다음과 같이 하였다. 타겟보드에 명령어를 입력시 320TKU]# 명령어 입력 -- 타겟보드의 명령어 입력 Host PC에 명령어 입력시 ]# 명령어 -- Host PC의 명령어 입력 기타 편집기 실행 또는 파일 수정시 - 내 용 - - 64 -
Chapter 1. 스톱워치 1. 개요 스톱워치 프로그램은 임베디드 시스템에서 간단하게 구현해볼 수 있는 가장 기본적인 프로그램 들 중 하나이다. X-HYPER320 TKU에 부착되는 IEB 보드의 FND와 KEY matrix를 활용하여 실제 로 스톱워치와 유사한 기능을 가진 프로그램을 구현해보자. 2. 관련기술 2.1 임베디드 S/W 기술 일반적인 컴퓨터가 아닌 각종 전자제품이나 정보기기 등에 설치되어 있는 마이크로프로세서 (Microprocessor)에 미리 정해진 특정한 기능을 수행하는 S/W를 내장시킨 시스템을 임베디드 시스템이라 하고, 여기에 내장된 소프트웨어가 바로 임베디드 S/W이다. 즉, 임베디드 S/W는 산 업 및 군사용 제어기기, 디지털정보가전기기, 자동센서장비 등의 기능을 다양화하고 부가가치를 높이기 위한 핵심 S/W로, 일상생활 속에서 쉽게 접하는 휴대폰, TV, 세탁기, 기차, 비행기, 엘리 베이터 등의 제품 안에 내장된 임베디드 시스템에서 하드웨어를 제외한 나머지 부분이라고 할 수 있다. 최근 IT 기술은 마이크로프로세서의 가격이 낮아지고 소형화 및 고성능화가 진행됨에 따라 제품 경쟁력의 핵심이 H/W 생산기술에서 S/W 최적화 기술로 이동하는 변혁기를 맞이하여 임베디드 S/W가 탑재된 상품의 가치가 H/W보다는 S/W에 의해 좌우되는 기술 집약적 고부가가치 산업으 로 발전하고 있다. 초창기 임베디드 S/W는 간단한 제어 프로그램만으로 산업용 기기를 제어하는 데 그쳤으나, 최근에는 멀티미디어 처리와 같은 점차 복잡한 기능을 위해 멀티태스크 및 네트워 크 기능을 제공하는 임베디드 OS를 이용하고 있다. 임베디드 S/W의 특징을 간략히 정리하면 다음과 같다. 시간 처리 지원 : 실시간 처리가 지원되지 않으면 큰 손실이나 위험을 초래할 수 있는 비행 제어 시스템 및 항법 시스템 등에서 실시간 처리를 지원하여야 한다 고신뢰성 : 원자력 발전, 항공기 및 미사일 제어 등과 같은 S/W 오작동이나 불시의 작동 중 지 등으로 심각한 결과를 초래할 수 있는 시스템에서 고도의 신뢰성이 요구된다. 최적화 기술지원 : 임베디드 시스템은 크기, 가격 및 발열 등을 이유로 제공된 H/W 자원으 로 구성되기 때문에 임베디드 S/W는 경량화, 저전력 지원 자원의 효율적 관리 등의 측면에서 H/W에 최적화되는 기술을 지원하여야 한다. 특정 시스템 전용 : 범용 데스크탑 또는 서버에서 실행되는 패키지 소프트웨어와 달리 특정 시스템의 실행을 목적으로 개발되는 S/W이다. 네트워크 및 멀티미디어 처리기능 지원 : 임베디드 시스템들이 단독형 시스템뿐만 아니라 유 무선 네트워크를 통해 연결될 수 있어야 하고, 멀티미디어 정보를 처리하는 기술이 필요한 디지 털 TV, PDA 및 스마트 폰 등과 같은 임베디드 시스템을 지원해야 한다. 다양한 솔루션과 개발도구 필요 : 다양한 기종과 규격의 마이크로프로세서에 최적화된 별도 의 솔루션이 동시에 제공되어야 하며, 고난도의 임베디드 S/W application을 빠르고 안정되게 개발하기 위해 사용하기 쉬운 개발 도구가 필요하다. - 65 -