[출판서적소개] Device Tree 상세분석 in Linux Kernel 4.0

rgbi3307의 이미지

안녕하세요?
커널연구회가 8월중으로 "Device Tree 상세분석 in Linux Kernel 4.0"을 출판 예정입니다.

“Device Tree 상세분석 in Linux Kernel 4.0”은 커널연구회가 그동안 수년동안
최신의 리눅스 커널 소스를 분석하고 정리해온 노력들이 그대로 책속에 담겨져 있습니다.
또한 삼성 Exynos5420이 탑재된 Arndale Octa Board에 리눅스 커널 4.0 소스와
Device Tree를 포팅하는 과정을 그대로 따라하면서 실습할 수 있도록 내용을 구성하여
독자분들이 현장 업무에 그대로 적용할 수 있도록 했습니다.

아래 첨부한 PDF 파일에서 책의 내용을 좀더 확인할 수 있습니다.

http://kernel.bz/projects/books/download/note/8

책의 목차는 다음과 같이 구성되어 있습니다.

목차
내용
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

아래에 첨부한 PDF파일에서 책의 내용을 좀더 확인할 수 있습니다.
감사합니다.

File attachments: 
첨부파일 크기
PDF icon B06_Device_Tree_Intro.pdf2.02 MB

댓글

antz의 이미지

구매해서 봐야겠네요. 고맙습니다. ^.^

rgbi3307의 이미지

안녕하세요? 댓글 주셔서 감사합니다.
관련하여 진행하는 아래 세미나에서 30% 할인된 가격으로 구매가능 합니다.
http://kernel.bz/news/detail.php?news_id=17
위의 링크 참조하시어 시간 되시면 세미나도 참석해 보시길...

From:
*알지비 (메일: rgbi3307(at)nate.com)
*틈틈히 커널연구회(http://www.kernel.bz/) 내용물들을 만들고 있음.
*((공부해서 남을 주려면 남보다 더많이 연구해야함.))

세벌의 이미지

2.3.3 메모리 매핑 않되는 장치들 30
실제 책에 이런 게 있나요? 그렇다면 오타인데...
않되는
이렇게 쓰시면 안 됩니다.
자주 틀리는 오타...

rgbi3307의 이미지

"않되는"이 아니라 "안되는" 으로 해야 하는군요.
고치도록 하겠습니다.
조언 감사합니다.

그리고 메모리 매핑 안되는 장치들이 있을 수 있는데,

가장 단적인 예로 CPU가 있습니다.
삼성 Exynos5420은 CPU 코어가 8개 있습니다.
이들은 cpu0, cpu1, cpu2, cpu3... 이렇게 Device Tree에 표현하고 파싱하는 규율이 있습니다.
그리고 I2C 장치도 메모리 매핑이 안됩니다.
I2C 인터페이스로 많이 연결되는 장치로 RTC, Touch, EEPROM, Sensor 등이 있을 수 있는데,
이들은 I2C에 시리얼로 연결되면서 장치마다 고유의 장치번호를 가지고 있고
이것으로 장치를 식별합니다.

From:
*알지비 (메일: rgbi3307(at)nate.com)
*틈틈히 커널연구회(http://www.kernel.bz/) 내용물들을 만들고 있음.
*((공부해서 남을 주려면 남보다 더많이 연구해야함.))

익명 사용자의 이미지

드디어 우리나라에서도 책으로 나오는군요.
예전 2.6 커널 버전을 마지막으로 임베디드를 잠쉬 손에서 놨었는데..
일이 생겨서 다시 bsp를 하다보니 어느새 커널이 3.x 버전으로 올라갔더군요.
가장 당혹스럽고 적응하기 힘들었던 device tree... 좋은 교재 없나 백방으로 찾다가
결국엔 맨땅에 헤딩하며 배웠는데..
좀 일찍 발간해주시지. ㅜㅜ
그래도 큰 기대로 한부 사서 정독하도록 하겠습니다!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.