| 000 | 00909camcc2200277 c 4500 | |
| 001 | 000045655871 | |
| 005 | 20110704165841 | |
| 007 | ta | |
| 008 | 110704s2011 ggka 001c kor | |
| 020 | ▼a 9788996380030 ▼g 93560 | |
| 035 | ▼a (KERIS)BIB000012418514 | |
| 040 | ▼a 211062 ▼c 211062 ▼d 211009 | |
| 082 | 0 4 | ▼a 005.43 ▼a 621.39 ▼2 22 |
| 085 | ▼a 005.43 ▼2 DDCK | |
| 090 | ▼a 005.43 ▼b 2011z4 | |
| 100 | 1 | ▼a 박선호 |
| 245 | 2 0 | ▼a (실전!) ARM 임베디드시스템 Firmware/RTOS 완전정복 / ▼d 박선호, ▼e 오영환 공저 |
| 260 | ▼a 성남 : ▼b D&W WAVE, ▼c 2011 | |
| 300 | ▼a 646 p. : ▼b 삽화 ; ▼c 26 cm | |
| 440 | 0 0 | ▼a Mango story ; ▼v 6 |
| 500 | ▼a 색인수록 | |
| 500 | ▼a ARM9(S3C2443), ARM11(S3C6410) 테스트 보드를 통해 실제 개발에 활용할 수 있는 가장 완벽한 지침서, Embedded System Firmware, RTOS(eCos)의 통합가이드 | |
| 700 | 1 | ▼a 오영환, ▼e 저 |
| 945 | ▼a KLPA | |
| 949 | ▼a 망고 스토리 ; ▼v 6 |
소장정보
| No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
|---|---|---|---|---|---|---|---|
| No. 1 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.43 2011z4 | 등록번호 121210970 (16회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. 2 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.43 2011z4 | 등록번호 121210971 (20회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
컨텐츠정보
책소개
ARM9 (S3C2443), ARM11(S3C6410) 테스트 보드를 통해 실제 개발에 활용할 수 있는 지침서로, Embedded System Firmware, RTOS (eCos)의 통합 가이드. 입문에서 전문가 수준까지를 담고 있으며, 펌웨어 및 RTOS (eCos) 개발 실전 코드를 제공한다. RTOS (eCos) 포팅에 대한 실전적 설명과 단순 제어에서 RTOS 디바이스 드라이버까지 광범위한 체험을 할 수 있도록 구성하였다.
Mango Story 6
www.mangoboard.com
cafe.naver.com/embeddedcrazyboys
실전! Embedded Crazy Boys!
임베디드에 미친 녀석들!
실전! ARM 임베디드시스템 Firmware/RTOS 완전정복
ARM9 (S3C2443), ARM11(S3C6410) 테스트 보드를 통해
실제 개발에 활용할 수 있는 가장 완벽한 지침서
Embedded System Firmware, RTOS (eCos)의 통합 가이드
ARM9, ARM11 시스템 프로그램 개발 실전 가이드
입문에서 전문가 수준까지 친절한 안내서
펌웨어 및 RTOS (eCos) 개발 실전 코드 제공
진정한 RTOS (eCos) 포팅에 대한 실전적 설명
단순 제어에서 RTOS 디바이스 드라이버까지 광범위한 체험
ARM9, ARM11 시스템 개발자의 고민을 한번에 해결하는
완벽! ARM9, ARM11 펌웨어, RTOS (eCos) 실전 바이블
1부. Introduction & 환경 구성
ARM9, ARM11 프로세서와 임베디드 보드 개발 환경 갖추기
VMware & 리눅스(Ubuntu) 환경 구축, VMware Tools & 삼바(Samba)
Cross compiler (CodeSourcery G++) 설치, 망고24, 망고64 부팅 모드
2부. 하드웨어 매뉴얼
Mango-24 하드웨어 매뉴얼, 하드웨어 사양, Hardware Description
Mango-64 하드웨어 매뉴얼, 하드웨어 사양, Hardware Description
3부. Firmware 연구
망고보드 연결 및 U-Boot 구동, 환경 변수 설정
UART 및 화면 입출력, UART GPIO 설정, printf 사용
GPIO와 Button (Polling 방식), S3C2443 / S3C6410 GPIO Registers
GPIO driver, Button driver
Timer와 정확한 1초 Delay 구현, S3C2443/S3C6410 Timer
PWM Timer와 LCD Backlight 조절
4부. RTOS (eCos) 포팅
eCos 개요, 다운로드 및 설치
망고24, 망고64 eCos 포팅 소스 빌드 및 망고 보드에서 실행
eCos 포팅, eCos Configuration Tool, Template 빌드 작업
포팅 과정 진행 - 메모리 포팅, Clock 설정, Interrupt 설정
포팅 과정 진행 - Timer 설정 작업, UART, 초기 빌드 작업
망고24 포팅, 망고64 포팅
5부. RTOS (eCos) 기반 디바이스 드라이버 연구
Ethernet Device Driver, eCos Ethernet driver 구조, Ethernet driver 개발
NOR Flash Memory Device Driver, 플래시 디바이스 드라이버
Frame Buffer Device Driver, eCos framebuffer 구현
JFFS2 File System Device Driver
그간 망고스토리 시리즈를 통해 Windows CE, Android에 대해 폭넓게 다루어 왔습니다. 이들 운영체제는 많은 Embedded System의 기반이 되는 것으로 망고스토리에서는 기존의 전문서적과 달리 실전적인 내용으로 이들 운영체제를 처음 접하는 엔지니어들도 책의 내용을 따라가기만 해도 어느 정도 수준의 지식을 쉽게 얻을 수 있도록 하였습니다.
지루한 이론적인 내용보다는 한 페이지 한 페이지의 내용을 모두 실습해 볼 수 있도록 하여 책을 읽어 가는 동안 자연스럽게 그 운영체제와 Embedded System에 친숙해지도록 많은 배려를 하였습니다.
최근 각광을 받고 있는 Android와 이에 조금은 밀려난 감이 있는 Windows CE에 대한 책을 내면서 좀더 단순하고 직관적인 Embedded Software에 대한 입문서를 만들어 Embedded System을 처음 접하는 사람들도 쉽게 ARM 프로세서와 소프트웨어에 친숙해지게 하고 싶다는 생각이 있었습니다.
Android 등의 High-Level OS는 그 구조가 상당히 복잡하고 높은 프로세서(CPU) 성능과 많은 메모리 그리고 복잡한 IO를 필요로 하므로, ARM9, ARM11등 저가형 Embedded 응용에 많이 사용되는 프로세서에는 적합하지 않습니다.
ARM9 등의 저가, 저성능 프로세서는 특정한 목적의 응용을 위해 많이 사용됩니다. 이러한 프로세서로 구성된 Embedded System에는 Firmware나 RTOS가 주로 탑재 됩니다.
Firmware에는 여러가지 정의가 있지만 여기서는 단순히 프로세스 스케쥴링 등의 운영체제 기능이 없이 직접 하드웨어를 제어하는 소프트웨어를 지칭하는 것으로 합니다.
RTOS(Real-Time OS)의 경우, 일반적으로는 Real-Time 기능이 있는 운영체제를 말하지만 여기서는 단순하게 Real-Time 기능을 사용하던 사용하지 않던, 간단한 스케쥴링 및 시분할 프로세스 관리 기능이 있는 정도의 Embedded OS를 말하는 것으로 합니다. 좀 더 복잡하고 정확하게 설명할 수도 있지만 이러한 설명이 이 책을 읽는 Embedded System 개발자들에게 아무런 실질적인 도움도 되지 않으므로 여기서는 생략하기로 합니다.
관심이 있는 엔지니어들은 검색엔진에서 Firmware와 Real Time Operating System에 대해 찾아 보거나 전문서적을 읽어 보기 바랍니다. 아마도 실전에서는 전혀 도움이 되지 않는 수많은 정의들이 있어 오히려 머리만 복잡해질 것입니다.
필자들은 Firmware와 RTOS의
l 단순함
l 프로세서(CPU) 성능 및 메모리 용량에 대한 요구가 적음
l 직관적인 프로그램이 가능함
정도에 주목하여 실전적으로 이 책을 만들기로 하였습니다.
즉, 가장 단순한 코드에서 시작하여 OS 포팅, 디바이스 드라이버, 응용프로그램에 이르기까지 순서 데로 차근차근 다루어, 누구나 따라 하기만 하여도 ARM9, ARM11 프로세서 및 소프트웨어에 익숙해 질 수 있도록 하였습니다.
이 책의 모든 내용은 실재 임베디드 보드에서 검증하고 테스트한 것으로 독자들이 가진 임베디드 보드에도 쉽게 올려보고 테스트 해 볼 수 있을 것입니다. 각 코드들을 조금씩 변경하여 시험해 봄으로써 ARM을 기반으로 한 임베디드 시스템 소프트웨어에 대해 실질적인 체험이 가능하도록 하는 것을 가장 중요하게 생각하고 집필하였습니다.
이 책의 내용에 대해 의문이 있으면 다른 망고시리즈와 마찬가지로 http://cafe.naver.com/embeddedcrazyboys로 질문하면 저자 또는 다른 많은 엔지니어 분들이 친절하게 답해 줄 것입니다.
이 책이 많은 분들에게 큰 도움이 되기를 바랍니다.
http://www.mangoboard.com/
http://cafe.naver.com/embeddedcrazyboys
정보제공 :
저자소개
박선호(지은이)
서울대학교 컴퓨터공학과 학사 서울대학교 컴퓨터공학과 석사 현대전자주식회사 중대형컴퓨터 개발 VK주식회사 GSM 핸드폰 개발 코아로직 사업본부장 현) 씨알지테크놀러지 대표이사 네이버 embeddedcrazyboys 카페 필명 "설렁설렁"
오영환(지은이)
고려대학교 전산과학과 학사 현대전자주식회사 CDMA 시스템 개발 한테크 기지국 RF Test 장비 개발 뉴젠텔레콤 GSM 핸드폰 개발 코아로직 AP FAE 개발 팀장 현) 씨알지테크놀러지 수석연구원 네이버 embeddedcrazyboys 카페 필명 "푸우" 주요 공저 저술 망고스토리1, S3C2443/S3C6410/JTAG Embedded Board를 통한 ARM9/ARM11 Embedded 환경 체험 망고스토리2, 실전! ARM Cortex-M3 시스템 프로그래밍 완전정복 1 망고스토리3, 실전! ARM Cortex-M3 시스템 프로그래밍 완전정복 2 망고스토리4, 실전! Windows CE 시스템 프로그래밍 완전정복 망고스토리5, 실전! 안드로이드 (Android) 시스템 프로그래밍 완전정복 망고스토리6, 실전! ARM 임베디드시스템 Firmware/RTOS 완전정복
목차
목차 서언 = 2 1. Introduction = 19 1.1. ARM9, ARM11 프로세서와 임베디드 보드 = 19 1.2. MANGO 보드 개발 철학 = 19 1.3. 개발 환경 갖추기 = 20 1.3.1. 임베디드 프로그램 = 20 1.3.2. Linux 데스크탑 = 21 1.3.3. 컴파일러 설치 = 21 2. VMware&리눅스(Ubuntu) 환경 구축 = 23 2.1. VMware 및 우분투 설치 = 23 2.1.1. VMware 다운로드 = 23 2.1.2. VMware 설치하기 = 24 2.1.3. 우분투 다운로드 = 25 2.1.4. 새 Virtual Machine 만들기 = 26 2.2. 우분투 기초 활용 = 29 2.2.1. 우분투 업데이트 ◆U2013◆ Update Manager = 29 2.2.2. 전체 메뉴창 아래로 옮기기 = 31 2.2.3. 화면 Resolution 변경 = 31 2.2.4. 시간 설정하기 = 32 2.2.5. 터미널 띄우기 = 33 2.2.6. .bashrc&alias 설정 = 34 2.2.7. 터미널 키 Shortcut 설정 = 35 2.2.8. 키보드 반복 입력 속도 설정 = 36 2.2.9. package 관리 = 36 2.2.10. grep 사용 = 37 2.2.11. find 사용 = 38 2.2.12. sudo 명령 사용 = 43 2.2.13. 일반 유저가 sudo 명령이 안될 경우 대처 = 44 3. 리눅스(Ubuntu) 에디터 gedit&vim = 46 3.1. gedit = 46 3.2. vim = 47 3.2.1. vi 실행 및 vim 설치 = 48 3.2.2. vi의 모드 = 50 3.2.3. 시작과 종료 = 51 3.2.4. help의 활용 = 51 3.2.5. 커서 이동 명령 = 53 3.2.6. 편집 시작 (삽입) 명령 = 54 3.2.7. 검색 명령 = 55 3.2.8. 취소 및 반복 명령 = 57 3.2.9. 삭제 명령 = 58 3.2.10. 치환 명령 = 59 3.2.11. 복사 명령 = 61 3.2.12. 환경 설정 = 61 4. Host PC와 파일 공유 - VMware Tools&삼바(Samba) = 64 4.1. VMware Tools = 64 4.1.1. VMware Tools 설치 = 64 4.1.2. VMware Tools 업데이트 = 64 4.1.3. VMware Tools 기능 = 66 4.1.4. 쉬운 VMware Tools 업데이트 = 67 4.2. VMware Tools를 이용한 파일 공유 = 67 4.2.1. VMware File Share 이용 = 67 4.2.2. 우분투에서 공유 폴더 확인 = 68 4.3. 삼바 (Samba) 이용 = 69 4.3.1. Samba 설치하기 = 70 4.3.2. Samba 설정하기 = 71 4.3.3. Samba User 설정하기 = 72 4.3.4. Samba 재 시작 = 73 4.3.5. 네트워크 드라이브 연결 = 73 4.3.6. 한글 사용 = 74 4.3.7. 삼바 연결 에러 = 75 5. Cross compiler (CodeSourcery G++) 설치하기 = 76 5.1. Cross-Compiler 선택 = 76 5.2. Code Sourcery G++ 설치 = 76 5.2.1. Sourcery G++ 제품 종류 = 77 5.2.2. Sourcery G++ Lite Edition = 77 5.2.3. Lite Edition ◆U2013◆ ARM 다운로드 = 78 5.2.4. Lite Edition 설치 = 80 5.2.5. Lite Edition 설치 확인 = 85 5.3. Hello Mango World를 Simulator로 실행해보기 = 86 6. DNW 수행과 망고24, 망고64 부팅 모드 = 89 6.1. DNW 실행 및 설정 = 89 6.1.1. DNW 툴 다운로드 = 89 6.1.2. USB 드라이버 설치 = 89 6.1.3. DNW 최초 수행 = 92 6.2. 망고24 - NOR Mode로 부팅하기 = 92 6.3. 망고24 - NAND Mode로 부팅하기 = 94 6.4. 망고64 - NOR Mode로 부팅하기 = 95 6.5. 망고64 - NAND Mode로 부팅하기 = 95 7. Mango-24 하드웨어 매뉴얼 = 97 7.1. 하드웨어 사양 = 97 7.2. 보드 구성 = 98 7.2.1. 보드 구조도 = 98 7.2.2. 보드 부품면 = 99 7.2.3. 보드 LCD면 = 100 7.3. Hardware Block Description = 100 7.3.1. CPU (S3C2443XL-53 Application Processor) = 100 7.3.2. 메모리 시스템 = 103 7.3.3. Mobile SDRAM = 104 7.3.4. NOR Flash Memory = 104 7.3.5. SLC NAND Flash Memory = 106 7.3.6. Power and Reset = 108 7.3.7. RS232 Serial Port = 110 7.3.8. ARM Standard JTAG = 110 7.3.9. USB 2.0 Device = 111 7.3.10. USB 1.1 Host = 111 7.3.11. LCD Interface = 112 7.3.12. SD Card Socket = 119 7.3.13. Ethernet = 119 7.3.14. Audio Codec and Audio Power Amplifier = 121 7.3.15. Microphone 인터페이스 = 122 7.3.16. Loud Speaker/rHeadphone 인터페이스 = 123 7.3.17. 3축 가속도 센서 = 123 7.3.18. General Purpose Keys = 124 7.3.19. 전원 입력 및 배터리 충전 = 124 7.3.20. Li-Ion Battery 장착 = 125 7.3.21. GPS 모듈과 GPS 안테나 = 126 7.3.22. WiFi/Bluetooth Combo 모듈 = 127 8. Mango-64 하드웨어 매뉴얼 = 129 8.1. 하드웨어 사양 = 129 8.2. 보드 구성 = 130 8.2.1. 보드 구조도 = 130 8.2.2. 보드 부품면 = 131 8.2.3. 보드 LCD면 = 132 8.3. Hardware Block Description = 132 8.3.1. Boot Mode [SW100] = 132 8.3.2. Boot Mode [SW100] ◆U2013◆ NOR Flash Boot = 135 8.3.3. Boot Mode [SW100] ◆U2013◆ NAND Flash Stepping-Stone Boot = 137 8.3.4. Memory System = 137 8.3.5. Clocks = 138 8.3.6. Indicator LEDs = 139 8.3.7. UART = 140 8.3.8. Ethernet = 140 8.3.9. Audio Codec = 141 8.3.10. LCD 인터페이스 = 142 8.3.11. Touch Screen = 143 8.3.12. VCLK 극성 설정 ◆U2013◆ FoxLink LCD = 143 8.3.13. LCD 관련 설정 값 정의 = 145 8.3.14. Back Light 및 LCD 패널 전원 조정 = 146 8.3.15. Mango64 확장 LCD 커넥터 = 147 8.3.16. USB 2.0 OTG: USB 2.0 Device = 148 8.3.17. USB 1.1 Host = 148 8.3.18. DC-Jack, Charging Status 및 Battery 잔량 인식 = 149 8.3.19. TV-Out Interface = 150 8.3.20. WiFi+Bluetooth Combo = 151 8.3.21. GPS Module = 151 8.3.22. Expansion Connectors = 153 8.3.23. Camera Expansion Connector = 155 8.3.24. HDD Connector = 159 9. 망고보드 연결 및 U-Boot 구동 = 161 9.1. U-Boot 빌드를 위한 환경 변수 설정 = 161 9.2. Minicom 설정 = 162 9.2.1. Minicom 설치 = 162 9.2.2. USB-to-Serial 장치 연결 = 163 9.2.3. Minicom 설정 및 최초 수행 작업 = 165 9.2.4. Minicom 컬러로 수행하기 = 168 9.3. Ethernet Downloading Server 설치 = 169 9.3.1. TFTP 패키지 설치 및 환경 설정 = 170 9.3.2. TFTP 개요 및 시험 = 171 9.4. 망고24 U-Boot 구동 = 172 9.4.1. 망고24 U-Boot 다운로드 = 172 9.4.2. 망고24 U-Boot 빌드하기 = 174 9.4.3. 망고24 U-Boot 구동하기 = 176 9.4.4. 고정 IP로 네트워크 설정 변경 ◆U2013◆ 망고24 보드 = 178 9.4.5. 고정 IP로 네트워크 설정 변경 ◆U2013◆ 우분투 = 180 9.4.6. TFTP를 이용한 U-Boot 다운로드 = 183 9.5. 망고64 U-Boot 구동 = 185 9.5.1. 망고64 U-Boot 다운로드 = 185 9.5.2. 망고64 U-Boot 빌드하기 = 186 9.5.3. 망고64 U-Boot 구동하기 = 187 9.5.4. 고정 IP로 네트워크 설정 변경 ◆U2013◆ 망고64 보드 = 188 9.5.5. TFTP를 이용한 U-Boot 다운로드 = 189 9.6. Cross-Cable을 이용한 직접 연결 = 192 9.6.1. Ethernet crossover cable = 192 9.6.2. 우분투 서버 네트워크 설정 = 194 9.6.3. 망고64 ◆U2013◆ 크로스 케이블 다운로드 테스트 = 195 9.6.4. 망고24 ◆U2013◆ 크로스 케이블 다운로드 테스트 = 196 9.7. 망고24 소스를 이용해서 망고64 U-Boot 만들기 = 196 10. UART 및 화면 입출력 - 첫 번째 이야기 = 198 10.1. 환경 구축에 대한 리뷰 = 198 10.1.1. Serial 연결 = 198 10.1.2. Ethernet 연결 = 199 10.1.3. USB 연결 = 199 10.1.4. S/W 적인 연결 = 199 10.2. RS-232C와 UART에 대한 상식 = 200 10.2.1. RS-232-C = 200 10.2.2. UART = 203 10.3. 가장 간단한 화면 출력 프로그램 = 204 10.3.1. 망고24 ◆U2013◆ UART 부분 회로도 = 204 10.3.2. 망고24 ◆U2013◆ Hello Mango 프로그램= 205 10.3.3. 망고24 ◆U2013◆ Hello Mango 내용 설명 = 206 10.3.4. 망고24 ◆U2013◆ Hello Mango 빌드 = 210 10.3.5. 망고24 ◆U2013◆ Hello Mango 수행 = 212 10.3.6. bootelf = 213 10.3.7. 망고64 ◆U2013◆ UART 부분 회로도 = 215 10.3.8. 망고64 ◆U2013◆ Hello Mango 프로그램 = 215 10.3.9. 망고64 ◆U2013◆ Hello Mango 내용 설명 = 218 10.3.10. 망고64 ◆U2013◆ Hello Mango 빌드 = 219 10.3.11. 망고64 ◆U2013◆ Hello Mango 수행 = 220 10.4. 임베디드 개발 개요 = 222 10.5. UART GPIO 설정 = 223 10.5.1. UART 관련 GPIO 포트 설정 = 223 10.5.2. GPIO 포트 설정 코드 확인 ◆U2013◆ U-Boot = 224 11. UART 및 화면 입출력 - 두 번째 이야기 = 228 11.1. UART에 관한 사전 지식 = 228 11.1.1. Parallel 통신과 Serial 통신 = 228 11.1.2. Synchronous 전송과 Asynchronous 전송 = 229 11.1.3. UART 데이터 포맷 = 230 11.1.4. RS-232 Signal = 231 11.2. S3C2443/S3C6410 UART = 233 11.3. 망고24 소스 코딩 = 234 11.3.1. Working directory 생성 = 234 11.3.2. Register 헤더 정의 = 235 11.3.3. UART 초기화 구현 = 242 11.3.4. UART Write 함수 구현 = 245 11.4. 망고24 테스트 =246 11.4.1. main 함수 구현 = 246 11.4.2. Makefile 구현 = 246 11.4.3. 소스 파일 빌드 = 249 11.4.4. 다운로드 및 테스트 = 249 12. UART 및 화면 입출력 - 세 번째 이야기 = 251 12.1. 망고24, 망고64에 모두 적용하는 코드 만들기 = 251 12.1.1. Makefile의 변경 = 251 12.1.2. main 함수의 변경 = 253 12.1.3. s3c_uart.h 변경 사항 =254 12.1.4. s3c_uart.c ◆U2013◆ 초기화 부분 변경 사항 = 255 12.1.5. s3c_uart.c ◆U2013◆ Write 부분 변경 사항 = 258 12.1.6. s3c_uart.c ◆U2013◆ RX 부분 구현 = 260 12.2. 망고24, 망고64에서 실행하기 = 262 12.2.1. 망고64 빌드 및 실행 = 262 12.2.2. 망고24 빌드 및 실행 = 265 12.3. printf를 사용하자 = 266 12.3.1. main 함수의 수정 및 빌드 에러 해결 = 267 12.3.2. Semi-Hosting = 271 12.3.3. _write 함수의 구현= 272 12.3.4. _read 함수 최초 구현 및 Test = 274 12.3.5. 기타 함수 ◆U2013◆ _sbrk = 275 12.3.6. 기타 함수 ◆U2013◆ __srget_r = 279 12.3.7. 기타 함수 ◆U2013◆ _fstat = 280 12.3.8. 기타 함수들 ◆U2013◆ _isatty, _close, _lseek = 281 12.4. Makefile 하나로 망고24, 망고64 모두 빌드하기 = 282 12.4.1. Makefile 수정 = 282 12.4.2. 망고24, 망고64 빌드 및 수행 = 283 13. GPIO와 Button (Polling 방식) - 첫 번째 이야기 = 285 13.1. GPIO에 관한 사전 지식 = 285 13.1.1. GPIO 기본 원리 = 285 13.1.2. GPIO 컨트롤 ◆U2013◆ Pin Configuration = 286 13.1.3. GPIO 컨트롤 ◆U2013◆ Pin Data Register = 286 13.1.4. GPIO 컨트롤 ◆U2013◆ Pull-up/down Configuration = 287 13.2. S3C2443/S3C6410 GPIO Registers = 289 13.2.1. S3C2443 = 289 13.2.2. S3C6410 = 290 13.3. GPIO driver = 293 13.3.1. config.h 추가 = 293 13.3.2. GPIO 드라이버 작업 = 293 13.4. Button driver =295 13.4.1. Polling vs. Interrupt 방식 = 295 13.4.2. 버튼 드라이버 소스 구현 = 296 13.5. 기타 소스 코드 변경 사항 = 297 13.5.1. main.c 변경 사항= 297 13.5.2. Makefile 변경 사항 = 300 13.6. 시험 결과 = 300 14. GPIO와 Button (Polling 방식) - 두 번째 이야기 = 303 14.1. GPIO 드라이버 헤더 파일 수정 = 303 14.1.1. GPIO Port Type 작성 = 303 14.1.2. 함수 프로토타입 설계 ◆U2013◆ s3c_gpio.h = 307 14.1.3. 기타 헤더 파일 수정 = 308 14.2. 버튼 드라이버 소스 파일 수정 ◆U2013◆ mango_button.c = 308 14.3. main 함수 수정 = 309 14.4. GPIO 드라이버 소스 파일 수정 ◆U2013◆ s3c_gpio.c = 309 14.4.1. Base Address 추출 부분 구현 = 309 14.4.2. GPIO Set Type 부분 수정 = 312 14.4.3. GPIO Set Value 부분 수정 = 316 14.4.4. Pull Up Down 수정 = 318 14.5. 결론 = 318 15. Timer와 정확한 1초 Delay 구현 = 319 15.1. Timer 관련 분석 = 319 15.1.1. Timer 기본 사항 = 319 15.1.2. Timer control 원리 = 320 15.2. S3C2443/S3C6410 Timer = 320 15.2.1. Timer 개요 = 320 15.2.2. Clock source control = 322 15.2.3. Counter control = 324 15.2.4. PWM control = 324 15.2.5. Inverter control = 325 15.3. Delay function 만들기 = 326 15.3.1. Delay 기능 구현 개요 = 326 15.3.2. Timer header ◆U2013◆ 레지스터 주소 Offset = 327 15.3.3. Timer header ◆U2013◆ Prescaler 설정(Configuration 0) = 329 15.3.4. Timer Dead Zone = 330 15.3.5. Timer header ◆U2013◆ Divider 설정(Configuration 1) = 331 15.3.6. Timer 초기화 = 333 15.3.7. Delay 계산 = 335 15.4. 테스트 하기 = 337 15.4.1. Main 함수 변경 = 337 15.4.2. Makefile 변경, 빌드 및 시험 = 338 16. PWM Timer와 LCD Backlight 조절 = 339 16.1. PWM function 만들기 = 339 16.1.1. Interface 설계 = 339 16.1.2. Function 구현 ◆U2013◆ Configuration 부분 = 340 16.1.3. Function 구현 ◆U2013◆ PWM enable 부분 = 342 16.1.4. Function 구현 ◆U2013◆ Timer Start Stop 부분 = 343 16.2. LCD Backlight 회로 분석 = 344 16.2.1. 망고24 회로 분석 = 344 16.2.2. 망고64 회로 분석 = 346 16.2.3. ACT6357NH 부분 분석 = 349 16.3. Backlight 밝기 조절 구현 = 350 16.3.1. Interface 설계 = 350 16.3.2. Function 구현 ◆U2013◆ 초기화 부분 = 352 16.3.3. Function 구현 ◆U2013◆ 밝기 설정 부분 = 352 16.3.4. Function 구현 ◆U2013◆ 밝기 Step Up Down 부분 = 355 16.3.5. Makefile 변경과 Main 함수 변경 = 355 16.4. 실행 결과 = 357 17. eCos 개요, 다운로드 및 설치 = 358 17.1. RTOS 실시간 운영체제 = 358 17.1.1. RTOS 개요 = 358 17.1.2. RTOS 종류 = 359 17.2. eCos 개요 = 360 17.3. eCos 다운로드 및 설치 = 361 17.3.1. eCos 다운로드 및 libstdc 설치 = 361 17.3.2. eCos와 Toolchain = 364 17.3.3. eCos SDK 설치 = 365 18. 망고24, 망고64 eCos 포팅 소스 빌드 = 369 18.1. 망고24, 망고64 통합 eCos 포팅 소스 다운로드 = 369 18.2. 작업 폴더 생성 = 370 18.3. 환경 변수 설정 = 371 18.4. 작업 폴더 빌드 ◆U2013◆ configtool = 374 18.5. Mango24 빌드하기 = 376 18.5.1. Templates 구동 = 376 18.5.2. 망고24 보드 구성 선택 = 378 18.5.3. 구성 파일 저장 = 379 18.5.4. Build Tools Path 확인 = 380 18.5.5. 망고24 빌드 수행 = 380 18.6. Mango64 빌드하기 = 382 18.6.1. Templates 구동 = 382 18.6.2. 망고64 보드 구성 선택 = 383 18.6.3. 구성 파일 저장 및 Build Tools Path 확인 = 384 18.6.4. 망고64 빌드 수행 = 384 18.7. 빌드할 때의 주의점 = 385 19. 망고24, 망고64에서 실행하기 = 387 19.1. 망고24에서 실행하기 ◆U2013◆ DNW 이용 = 387 19.1.1. DNW 실행 및 설정 = 387 19.1.2. 망고24에서 redboot.bin 실행하기 = 388 19.2. 망고64에서 실행하기 ◆U2013◆ DNW 이용 = 388 19.2.1. DNW 실행 및 설정 = 388 19.2.2. 망고64에서 redboot.bin 실행하기 = 389 19.3. 망고 보드에 다운로드 하는 주소값 = 389 19.3.1. 주소값 명시 위치 = 390 19.3.2. eCos Memory Layout Files = 390 19.4. 망고24에서 실행하기 ◆U2013◆ U-Boot 이용 = 393 19.4.1. 망고24 ◆U2013◆ TFTP 다운로드 및 수행 = 393 19.4.2. 망고24 ◆U2013◆ NAND 저장 및 수행 = 395 19.4.3. 망고24 ◆U2013◆ bootcmd를 이용한 자동 수행 =397 19.4.4. 망고24 ◆U2013◆ 환경 변수 설정을 통한 자동 수행 = 397 19.5. 망고64에서 실행하기 ◆U2013◆ U-Boot 이용 = 398 19.5.1. 망고64 ◆U2013◆ TFTP 다운로드 및 수행 = 398 19.5.2. 망고64 ◆U2013◆ U-Boot에서의 동작 문제점 수정 = 399 19.5.3. 망고64 ◆U2013◆ NAND 저장 및 수행 = 401 19.5.4. 망고64 ◆U2013◆ bootcmd 및 환경 변수를 이용한 자동 수행 = 402 20. 작업 폴더(ecos.wk)에서 불필요한 파일 삭제하기 = 403 20.1. 전체 비교 및 툴 삭제 = 403 20.1.1. ecos.wk 부분과 ecos.opt.org 비교 = 403 20.1.2. 환경 변수 파일과 gnutools 삭제 = 403 20.2. ecos-3.0 부분 비교 정리 = 404 20.2.1. ecos-3.0 내의 툴 및 불필요 파일 삭제 = 404 20.2.2. 소스 편집 백업 파일 삭제 = 405 20.3. packages/hal 부분 비교 정리= 406 20.3.1. hal 내의 다른 CPU 삭제 = 406 20.3.2. hal/arm 내의 다른 Target 삭제 = 407 20.3.3. ARM11 폴더 비교 = 407 20.3.4. ARM9 폴더 비교 = 408 21. eCos 포팅 전 준비 및 확인 = 409 21.1. eCos 폴더 구조 = 409 21.1.1. opt/ecos 폴더 구조 = 409 21.1.2. eCos package 디렉토리 구조 = 410 21.1.3. eCos hal 디렉토리 구조 = 411 21.2. eCos Configuration Tool = 413 21.2.1. Configtool View = 413 21.2.2. HAL architecture = 414 21.2.3. Property View = 415 21.2.4. eCos에서 지원하는 package = 417 21.2.5. eCos Template = 418 21.3. SMDK2410 Template 빌드 작업 = 419 21.3.1. Template 선택 = 419 21.3.2. SMDK2410 빌드 확인 = 421 21.3.3. smdk2410default_install 폴더 확인 = 422 21.3.4. main 함수 작성 및 빌드 = 423 22. 망고24 포팅 과정 분석 ◆U2013◆ 첫 번째 이야기 = 425 22.1. 포팅 과정 개요 = 425 22.1.1. 포팅(Porting)의 진정한 의미 = 425 22.1.2. 레퍼런스의 활용 = 425 22.2. 포팅 습작 제작을 위한 준비 = 426 22.2.1. 원본 소스 백업 = 426 22.2.2. 수정 사항 확인 = 427 22.2.3. 메모리 인터페이스 변경 = 428 22.2.4. 불필요한 부분의 삭제 = 429 22.3. 포팅 과정 진행 ◆U2013◆ 메모리 포팅 = 430 22.3.1. 2410의 메모리 설정 부분 분석 = 430 22.3.2. 망고-24 메모리 부분 분석 = 432 22.3.3. S3C2443 DRAM 초기화 과정 = 433 22.3.4. 망고-24 FW Monitor 프로그램 = 434 22.3.5. 메모리 초기화 소스 수정 작업 준비 = 435 22.4. S3C2443 DRAM 초기화 과정 진행 = 436 22.4.1. DRAM Power와 Clock 안정화를 위한 Delay = 436 22.4.2. Configuration Register 0 설정하기 = 436 22.4.3. Control Register1∼3을 Normal 값으로 설정하기 = 441 22.4.4. BANKCON1 레지스터 설정하기 = 447 22.4.5. Refresh Timer 레지스터 설정하기 = 448 22.4.6. Auto Refresh Cycle 2회 대기하기 = 448 22.4.7. BANKCON1 INIT 10b 설정 = 449 22.4.8. REFRESH 레지스터 Normal operation 값으로 설정 = 449 22.4.9. BANKCON1 INIT 11b 설정 = 450 22.4.10. BANKCON1 INIT 00b 설정 = 451 22.4.11. DRAM 설정 종료 = 451 23. 망고24 포팅 과정 분석 ◆U2013◆ 두 번째 이야기 = 453 23.1. Clock 설정 하기 = 453 23.1.1. S3C2410 클럭 설정 부분 분석 = 453 23.1.2. S3C2410과 S3C2443 클럭 설정 차이점 분석 = 456 23.1.3. Configtool을 이용한 설정 변경 작업 = 458 23.1.4. Clock Divider 설정 작업 = 462 23.2. Interrupt 설정 하기 = 465 23.2.1. Interrupt 설정 작업 개요 = 465 23.2.2. hal_IRQ_handler = 468 23.2.3. hal_interrupt_mask&hal_interrupt_unmask = 470 23.2.4. hal_interrupt_acknowledge = 471 23.2.5. hal_interrupt_configure& hal_interrupt_set_level = 474 24. 망고24 포팅 과정 분석 ◆U2013◆ 세 번째 이야기 = 475 24.1. Timer 설정 작업 = 475 24.1.1. 2410 타이머 설정 분석 = 475 24.1.2. 2410과 2443의 타이머 설정 차이 = 480 24.2. UART = 481 24.2.1. UART 포팅 작업 개요 = 481 24.2.2. 시리얼 포트 초기화 작업 = 482 24.2.3. Virtual Vector Table (VVT)과 초기화 과정 호출 경로 = 485 24.2.4. 시리얼 포트 하드웨어 설정 부분 = 488 24.2.5. 2443의 정확한 클럭 설정을 위한 방법 = 492 24.2.6. getc/putc 수정 사항 = 495 24.3. 초기 빌드 작업 = 496 24.3.1. hal_arm_arm9_smdk2410.cdl 수정 = 496 24.3.2. Redboot ROM monitor = 498 24.3.3. Startup Type ◆U2013◆ RAM, ROM = 498 24.3.4. 최초 수행 = 501 25. 망고24 포팅하기 = 503 25.1. 망고24에 맞도록 변경하기 = 503 25.1.1. Template에 Mango24 보드 나타내기 = 503 25.1.2. CYGPKG 수정 = 504 25.1.3. CDL 파일 수정 = 506 25.1.4. 2443 관련 클럭 수정 및 파일 이름 변경 = 508 25.1.5. 빌드 및 에러 수정 = 510 25.2. 망고-24 포팅 작업 = 513 25.2.1. s3c2443x.h 수정 = 513 25.2.2. 메모리 설정 값을 configurable하게 수정 = 514 25.2.3. NAND Startup Type 정의하기 = 518 25.2.4. DRAM 초기화 부분의 삭제 = 520 26. 망고64 포팅하기 = 523 26.1. ARM11 eCos 포팅 개요 = 523 26.1.1. ARM11 지원 관련 = 523 26.1.2. 다른 Core 엿보기와 모방 전략 = 523 26.2. ARM11 eCos 포팅 과정 = 526 26.2.1. 폴더 생성 및 CDL 파일 작업 = 526 26.2.2. Template 작업 ecos.db 수정 및 Configtool 확인 = 529 26.2.3. 소스 코드 복사 = 532 26.2.4. var 부분 작업 = 533 26.2.5. MMU Page Table 작업 = 534 26.2.6. arm11_misc.c = 538 26.2.7. hal_cache.h = 538 26.3. Mango64 폴더 포팅 작업 = 539 26.3.1. s3c6410.h = 539 26.3.2. Clock 포팅 = 540 26.3.3. Peripheral Port Remap = 543 26.3.4. Watchdog disable = 546 26.3.5. Interrupt disable = 547 26.3.6. Cache disable&clear = 548 26.3.7. Clock initialization = 551 26.3.8. Main Memory initialization = 555 26.3.9. MMU initialization = 560 26.3.10. Interrup = 563 26.3.11. Timer = 565 26.3.12. 기타 초기화 = 566 26.3.13. UART = 566 26.4. 망고64 구동 = 567 27. Ethernet Device Driver = 568 27.1. 디바이스 드라이버 개요 = 568 27.2. Ethernet driver 개요 = 569 27.3. eCos Ethernet driver 구조 = 570 27.4. Ethernet driver 개발 ◆U2013◆ 망고 24 = 573 27.4.1. 회로도 연결 확인 = 573 27.4.2. Mango24에 CS8900A driver 포팅 준비 = 575 27.4.3. Mango24 Ethernet CDL 작성 = 575 27.4.4. Source code 작성 = 577 27.4.5. configtool 실행 = 579 27.4.6. 실행 결과 확인 = 580 27.5. Ethernet driver 개발 ◆U2013◆ 망고 64 = 581 27.5.1. 회로도 연결 확인 = 581 27.5.2. Mango64에 LAN9220 driver 포팅 준비 = 583 27.5.3. LAN9220 driver directory 생성 = 584 27.5.4. LAN9220 CDL 작성 = 584 27.5.5. LAN9220 driver 소스 코드 = 586 27.5.6. Mango64 Ethernet 구현 = 587 27.5.7. configtool 실행 = 589 27.5.8. 실행 결과 확인 = 590 28. NOR Flash Memory Device Driver = 592 28.1. Introduction = 592 28.1.1. 플래시 메모리 개요 = 592 28.1.2. CPU와 Flash Memory의 연결 = 593 28.2. 망고24 플래시 디바이스 드라이버 = 594 28.2.1. NOR flash 추가하기 = 594 28.2.2. Samsung NOR flash memory set 추가 = 597 28.3. 망고24 보드에서 시험 수행 = 600 28.3.1. 망고24 redboot 생성 = 600 28.3.2. 망고24 Flash Test Program 생성 = 601 28.3.3. 망고24 점퍼 설정 및 시험 = 603 28.4. 망고64 플래시 디바이스 드라이버 = 605 28.4.1. Mango64 flash driver CDL 작성 = 606 28.4.2. Mango64 flash driver 소스코드 작성 = 607 28.4.3. 메모리 뱅크 구분 처리 = 608 28.5. 망고64 보드에서 시험 수행 = 611 28.5.1. 망고64 redboot 생성 = 611 28.5.2. 망고64 Flash Test Program 생성 = 612 28.5.3. 망고64 점퍼 설정 및 시험 = 613 29. Frame Buffer Device Driver = 616 29.1. Introduction = 616 29.1.1. LCD display 기본 = 616 29.1.2. Framebuffer API = 616 29.2. eCos framebuffer 구현 하기 = 617 29.2.1. Header export = 617 29.2.2. Parameters = 617 29.2.3. MACRO 정의 = 618 29.2.4. cyg_fb 구조체 선언 = 619 29.2.5. Driver source code = 619 29.3. 망고보드 Framebuffer Driver 작성 = 621 29.3.1. S3C2443 LCD controller register = 621 29.3.2. Header 작성 = 621 29.3.3. Source code 작성 = 622 29.3.4. CDL file = 623 29.3.5. Test code = 624 29.4. 망고24 보드에서 시험 수행 = 625 29.4.1. 망고24 Frame Buffer Test Program 생성 = 625 29.4.2. 망고24 시험 = 626 29.5. 망고64 Framebuffer Driver 작성 = 626 29.6. 망고64 보드에서 시험 수행 = 628 29.6.1. 망고64 Frame Buffer Test Program 생성 = 628 29.6.2. 망고64 시험 = 628 30. JFFS2 File System Device Driver = 630 30.1. 망고24 보드에서 시험 수행 = 630 30.1.1. 프로젝트 생성 및 패키지 선택 = 630 30.1.2. New API 적용 설정 = 631 30.1.3. 망고24 점퍼 설정 및 시험 = 632 30.2. 망고64 보드에서 시험 수행 = 635 30.2.1. 프로젝트 생성 및 패키지 선택 = 635 30.2.2. New API 적용 설정 = 636 30.2.3. 망고64 점퍼 설정 및 시험 = 637 맺음말 = 640 색인 = 641



