logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

Device Tree 상세분석 in Linux Kernel 4.0

Device Tree 상세분석 in Linux Kernel 4.0

정재준 (지은이)
커널연구회
28,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
알라딘 로딩중
yes24 로딩중
교보문고 로딩중
11st 로딩중
영풍문고 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
G마켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
서점 유형 등록개수 최저가 구매하기
로딩중

eBook

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
로딩중

책 이미지

Device Tree 상세분석 in Linux Kernel 4.0
eBook 미리보기

책 정보

· 제목 : Device Tree 상세분석 in Linux Kernel 4.0 
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 리눅스/유닉스 프로그래밍
· ISBN : 9788997750061
· 쪽수 : 312쪽
· 출판일 : 2015-08-07

책 소개

커널연구회가 그동안 수년동안 최신의 리눅스 커널 소스를 분석하고 정리해온 노력들이 그대로 책속에 담겨져 있다.

목차

내용
DEVICE TREE 상세분석 1
저작권 2
커널연구회 로드맵 3
커널연구회 교육과정 4
저자 소개 5
문서 표준 6
목차 9
1. 작업환경 및 소스경로 14
1.1 개요 14
1.2 작업환경 15
1.3 DEVICE TREE 소스경로 17

2. DEVICE TREE 소스 분석 21
2.1 DTS 기본 문법 21
2.2 DTS 기본 예제 23
2.2.1 CPU 표현 23
2.2.2 노드 명칭들 24
2.2.3 디바이스 표현 24
2.2.4 compatible 속성 25
2.3 주소 표현 26
2.3.1 CPU 주소 지정 28
2.3.2 메모리 매핑 장치들 28
2.3.3 메모리 매핑 않되는 장치들 30
2.3.4 Ranges 속성 31
2.4 인터럽트 표현 34
2.5 사용자 추가 데이터 37
2.6 특별한 노드들 38
2.6.1 aliases 노드 38
2.6.2 chosen 노드 39
2.7 진보된 주제들 39
2.7.1 진보된 장치 예제 39
2.7.2 PCI 호스트 브릿지 40
2.7.3 PCI 주소 변환 40
2.7.4 진보된 인터럽트 매핑 43

3. DEVICE TREE 실용 분석 50
3.1 CPU 표현 54
3.2 메모리 표현 57
3.3 인터럽트 표현 59
3.4 CLOCK 표현 63
3.5 CCI 표현 65
3.6 내부 시스템 메모리 표현 66
3.7 MMC 표현 66
3.8 MCT(타이머) 표현 67
3.9 핀맵(PINCTL) 표현 68
3.10 AMBA 표현 83
3.11 I2S 표현 84
3.12 SPI 표현 85
3.13 UART 표현 86
3.14 PWM 표현 87
3.15 ADC 표현 88
3.16 I2C 표현 88
3.17 USB 표현 91
3.18 TMU 표현 93
3.19 멀티미디어 표현 93

4. DEVICE TREE 실습 96
4.1 삼성 EXYNOS5420 이해 97
4.2 개발 환경 구축 100
4.2.1 우분투 설치 100
4.2.2 개발용 패키지들 설치 101
4.2.3 크로스 컴파일러 설치 103
4.3 소스 빌드 및 포팅 105
4.3.1 u-boot 소스 빌드 105
4.3.2 마이크로 SD카드 부팅 113
4.3.3 리눅스 커널 소스 빌드 117
4.3.4 램디스크 포팅 134
4.4 커널 부팅 소스 분석 151
4.7 GPIO 드라이버 179
4.5 시리얼(UART) 드라이버 190
4.6 USB 드라이버 196

5. UART 드라이버 상세분석 202
5.1 UART 구조체 204
5.2 UART 드라이버 등록 205
5.3 UART 포트 등록 206
5.4 UART 드라이버 동작 207
5.5 UART 실행함수들 207

6. UART 구조체 209
6.1 UART_DRIVER 구조체 210
6.2 CONSOLE 구조체 211
6.3 UART_STATE 구조체 211
6.4 TTY_DRIVER 구조체 212
6.5 TTY_PORT 구조체 212
6.6 UART_PORT 구조체 213
6.7 UART_8250_PORT 구조체 215
6.8 TTY_OPERATIONS 구조체 216
6.9 UART_OPS 구조체 217
6.10 TTY_STRUCT 구조체 218
6.11 KTERMIOS 구조체 220
6.12 UART_ICOUNT 구조체 220
6.13 TTY_LDISC 구조체 221
6.14 TTY_BUFFER 구조체 222
6.15 기타 구조체 223
6.15.1 cdev 구조체 223
6.15.2 platform_ 구조체 223
6.15.3 proc_dir_entry 구조체 224
6.15.4 file_operations 구조체 224
6.15.5 work_struct 구조체 225
6.15.6 circ_buf 구조체 225
6.15.7 baud rate 상수 226

7. UART 드라이버 등록 228
7.1 SERIAL8250_INIT() 229
7.2 UART_REGISTER_DRIVER() 231
7.3 TTY_REGISTER_DRIVER() 232

8. UART 포트 등록 235
8.1 SERIAL8250_REGISTER_PORTS() 236
8.2 UART_ADD_ONE_PORT() 237
8.3 SERIAL8250_ISA_INIT_PORTS() 239

9. UART 8250 드라이버 동작 241
9.1 SERIAL8250_PROBE() 243
9.2 SERIAL8250_SUSPEND() 248
9.3 SERIAL8250_RESUME() 251
9.4 인터럽트 동작 254
9.4.1 receive_chars() 254
9.4.2 transmit_chars() 256

10. 삼성 UART 드라이버 동작 257
10.1 드라이버 등록 257
10.2 포트 정보 260
10.3 PROBE 262
10.4 드라이버 동작 264
10.5 문자 전송(_TX_CHARS) 266
10.6 문자 수신(_RX_CHARS) 268

11. TTY 실행 함수들 271
11.1 TTY 드라이버 등록 273
11.2 TTY_OPEN() 274
11.3 TTY_READ() 277
11.4 TTY_WRITE() 279
12. UART 실행 함수들 281
12.1 입출력(IO) 함수들 283
12.2 UART_OPEN() 285
12.3 UART_WRITE() 287

부록1. SENSOR 정보 요약 289
A1.1 PHOTORESISTOR 289
A1.2 PHOTOTRANSISTOR 290
A1.3 거리 센서 291
A1.4 적외선(INFRARED) 센서 292
A1.5 초음파(ULTRASONIC) 센서 292
A1.6 ACCELEROMETERS 293
A1.7 MAGNETOMETERS 294
A1.8 GYROSCOPE 295
A1.9 배터리 센서 296
A1.10 위험(화재, 가스누출)감지 센서 297

부록2. 병렬처리 299
A2.1 병렬처리 용어정리 299
A2.2 필요 기술 303
A2.3 동작 시나리오 304
부록3. 커널연구회 교육과정 308
A3.1 교육 일정 308
A3.2 교육 로드맵 308
A3.3 상세 교육 내용 테이블 309
A3.4 커널연구회 로드맵 310
A3.5 실습용 임베디드 보드 311
A3.6 커널연구회 교육학원 위치(약도) 312

저자소개

정재준 (지은이)    정보 더보기
저자는 학창시절 마이크로프로세서 제어 기술을 배웠으며 리눅스 커널을 연구하고 있다. 15년 이상 쌓아온 실무 경험을 바탕으로 “C언어와 자료구조 알고리즘”, “리눅스 시스템 프로그래밍”, “리눅스 커널과 디바이스드라이버 실습2”, “자료구조 알고리즘 & 머신러닝 상세분석"등의 책을 집필하고, 월간임베디드월드 잡지에 다수의 글을 기고 하였다. 또한 “맞춤형 문장 자동 번역 시스템 및 이를 위한 데이터베이스 구축방법 (The System for the customized automatic sentence translation and database construction method)” 라는 내용으로 프로그래밍을 하여 특허청에 특허등록 하였다. 최근에는 서울시 버스와 지하철 교통카드 요금결재 단말기에 들어가는 리눅스 커널과 디바이스 드라이버 개발 프로젝트를 성공적으로 수행했고 여러가지 임베디드 제품을 개발했다. 저자는 스탠포드대학교의 John L. Hennessy 교수의 저서 “Computer Organization and Design” 책을 읽고 깊은 감명을 받았으며, 컴퓨터구조와 자료구조 알고리즘 효율성 연구를 통한 기술서적 집필을 해오고 있다. 저자는 커널연구회(www.kernel.bz) 웹사이트를 운영하며 연구개발, 교육, 관련기술 공유 등을 위해 노력하고 있다.
펼치기

책속에서

1. 작업환경 및 소스경로

1.1 개요
부트로더는 리눅스 커널을 타켓 보드의 RAM에 복사한 다음에 커널로 진입(jump)하는 역할을 한다. 커널은 CPU을 설정하고 가상 메모리를 초기화 하는 여러가지 작업들을 콘솔에 표시한다. 이러한 커널의 동작들은 장치들의 정보를 레지스터에 쓰면서 수행된다. 프로세서 코어들의 종류가 많고 접근할 수 있는 메모리 용량도 다양한 상황에서 커널은 어떻게 레지스터들의 주소를 알 수 있을까? 쉽게 직관적으로 해결할 수 있는 방법은 커널 소스안에 플렛폼 의존적(맞춤형)인 부트 루틴을 만드는 것이다. 이것은 커널 파라미터들을 사용하여 설정할 수 있다. 이러한 방식은 모든것이 고정되어 있을때는 좋은 해법이 될 수 있지만, 장치들이 가변적으로 변경된다면 커널은 실행 시간(run-time)에 변경된 장치들을 알아내야 한다.

ARM 아키텍쳐는 점점 다양화 되고 있어 리눅스 커뮤니티에서 논란이 많아지고 있다. ARM 보드마다 자신만의 외부 장치들을 제각각 장착하고 있어서, 커널 안에 특별한 환경설정 파라미터를 패치하거나 헤더 파일들이 제멋대로 생겨나고 있다. 이로 인해서 커널 소스가 난잡해지고 유지보수가 힘들어져서 커널을 분석하는데 점점 어려움을 느끼고 있는 실정이다. 또한, 커널 소스가 특정 보드상의 특정 칩에 맞게끔 컴파일되어 실행 바이너리가 생성됨으로 인해서 모든 ARM 프로세서에 호환되지 못하는 상황이 벌어지고 있다. 그러나 PC에서는 BIOS가 있어서 하드웨어 장치가 변경되면 자동적으로 검출하여 동작하도록 해주는 작업이 쉽다. ARM 프로세서는 BIOS가 없어서 리눅스 커널이 모든 역할을 다해주고 있어서 리눅스 커널을 믿는 수밖에 없다. 그래서 리눅스 커널에 도입된 해결책이 디바이스 트리(device tree)이며, Open Firmware (abbreviated OF) 혹은 Flattened Device Tree (FDT)라고 언급되기도 한다.

디바이스 트리는 강력한 규정이라기 보다 엄격한 관례라는 관점으로 접근하는 것이 바람직하다. 예를들면, 디바이스 트리안의 경로와 파라미터는 어떻게 정하는 것이 좋은지 정해진 관례를 따라가는 것이다. 정해진 API가 특정 데이터에 접근하도록 표준화된 트리 구조체를 사용하도록 한다. 주변장치들의 버스, 주소, 인터럽트, 변수들은 정해진 관례를 지켜서 디바이스 트리에 표현한다. 디바이스 트리는 커널의 일부분으로서 하드웨어 정보를 추가, 제거, 운반하는 장소 역할을 한다.

디바이스 트리를 심도있게 학습하기 전에 먼저 아래에서 작업환경과 디바이스 트리 소스경로를 확인하여 기본적인 배경 지식을 요약 정리한다.


추천도서

이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
이 포스팅은 제휴마케팅이 포함된 광고로 커미션을 지급 받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책