해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
패키지
북카드
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.
책 소개
이 책이 속한 분야
작가정보
저자 서영진은 십여 년 동안 IT 분야에서 프로그래밍을 하고 있으며, IT 전문 강사와 컨설턴트, 관광TC로도 일하고 있다. 저서로는 《타이젠으로 웨어러블 앱 개발하기》(eBook), 《사물인터넷: 우리가 꿈꾸는 스마트한 세상》,《 Tizen 애플리케이션 프로그래밍》,《 Qt 프로그래밍》 등이 있다.
만든 프로그램으로는 리눅스용 다이얼패드, SKY 6400/6500 모바일 캠코더, 원자력 발전소 CPS 시스템, 신도리코 NEST UI, 삼성전자 VOIP 전화기 등이 있으며, 주로 멀티미디어, UI(Qt), 임베디드 리눅스, 모바일, 스마트 디바이스 분야에서 개발 경력을 쌓았다.
삼성전자, LG전자 등의 기업과 대구ㆍ인하ㆍ원광ㆍ전북ㆍ조선대학교 및 DIP, AKIPA, 3DFIA, KETI, KEA, RAPA, KOSTA 등의 협회에서 강의와 세미나를 진행하였다.
목차
- PART 1 라즈베리 파이 사용하기
CHAPTER 1 사물인터넷과 라즈베리 파이 3
1.1 사물인터넷과 오픈 소스 하드웨어 플랫폼 4
1.1.1 사물인터넷 4
1.1.2 오픈 소스의 발전과 오픈 소스 하드웨어의 등장 5
1.1.3 아두이노 7
1.2 라즈베리 파이 한 입 베어 물기 10
1.2.1 라즈베리 파이 10
1.2.2 라즈베리 파이의 모델 및 구조 10
1.3 라즈베리 파이를 위한 주변 도구 13
1.3.1 라즈베리 파이와 SD 카드 14
1.3.2 라즈베리 파이의 외부 하드웨어 16
1.4 라즈베리 파이를 위한 준비운동: 사용환경 설정 18
1.4.1 라즈베리 파이의 디스크 이미지와 윈도우에서의 설치 18
1.4.2 라즈베리 파이 이미지 설치: MS 윈도우 20
1.4.3 라즈베리 파이 이미지 설치: 리눅스 22
1.4.4 라즈베리 파이 이미지 설치: 맥 OS X 27
1.4.5 라즈베리 파이의 설정 28
1.5 요약 40
CHAPTER 2 리눅스의 기초: 라즈베리 파이와 친해지기 43
2.1 리눅스의 사용환경과 구조 44
2.1.1 리눅스의 시작 44
2.1.2 리눅스의 특징 45
2.1.3 리눅스의 구조 47
2.2 리눅스의 기본 명령어 48
2.2.1 셸과 프롬프트 48
2.2.2 리눅스의 기본 명령어 49
2.2.3 사용자 계정과 그룹 63
2.3 vi 에디터 63
2.3.1 텍스트 에디터 63
2.3.2 vi 에디터 64
2.3.3 nano 에디터 71
2.4 리눅스의 프로그래밍 도구 72
2.4.1 GCC 72
2.4.2 gcc 컴파일러 73
2.4.3 make 유틸리티 75
2.4.4 gdb 유틸리티 83
2.4.5 라이브러리 만들기 88
2.5 요약 94
CHAPTER 3 라즈베리 파이와 GPIO: 하드웨어 제어 97
3.1 GPIO의 개요 98
3.1.1 라즈베리 파이와 GPIO 98
3.1.2 하드웨어의 스케치와 fritzing 99
3.2 LED 제어 프로그래밍 101
3.2.1 전자 부품 101
3.2.2 전자 블록 102
3.2.3 GPIO와 LED 104
3.2.4 echo 명령어와 LED의 점멸 108
3.2.5 gpio 명령어 111
3.3 wiringPi를 이용한 GPIO 프로그래밍 112
3.3.1 wiringPi 112
3.3.2 wiringPi를 이용한 프로그래밍 113
3.4 스위치와 센서를 이용한 입출력 116
3.4.1 스위치의 사용 116
3.4.2 스피커의 사용 118
3.4.3 빛 감지 센서의 사용 122
3.4.4 DC 모터의 사용 124
3.4.5 7세그먼트의 사용 129
3.4.6 온습도 센서의 사용 134
3.5 요약 138
PART 2 리눅스 기본 프로그래밍
CHAPTER 4 리눅스 프로그래밍의 기초 143
4.1 리눅스의 기본 구조와 파일 시스템 144
4.1.1 리눅스 시스템의 구조 144
4.1.2 리눅스 파일 시스템 146
4.2 파일 처리와 표준 입출력 148
4.2.1 저수준 파일 입출력 148
4.2.2 표준 입출력 라이브러리 158
4.2.3 파일 조작 함수 168
4.3 파일 정보와 권한 171
4.3.1 파일 정보와 권한을 위한 리눅스 명령어 171
4.3.2 파일 정보 175
4.3.3 권한과 소유자 181
4.4 디렉터리와 시간 처리 185
4.4.1 디렉터리 185
4.4.2 유닉스의 시간 191
4.5 리눅스 시스템 프로그래밍과 라즈베리 파이의 제어 199
4.6 요약 203
CHAPTER 5 프로세스와 스레드: 다중 처리 205
5.1 프로세스와 시그널 207
5.1.1 프로세스 207
5.1.2 프로세스 관련 명령어 211
5.1.3 시그널 218
5.2 멀티 프로세스와 다중 처리 프로그래밍 229
5.2.1 리눅스의 부팅 과정과 프로세스 229
5.2.2 프로세스의 처리 233
5.3 프로세스 간 통신 249
5.3.1 파이프 249
5.3.2 FIFO 253
5.3.3 유닉스 시스템 V의 IPC 함수 255
5.4 POSIX 스레드와 동기화 272
5.4.1 POSIX 스레드 272
5.4.2 동기화 277
5.5 다중 처리와 라즈베리 파이의 제어 282
5.6 요약 286
CHAPTER 6 리눅스 네트워크 프로그래밍: 사물인터넷의 연결을 위한 기초 289
6.1 네트워크의 개요와 BSD 소켓 290
6.1.1 네트워크의 개요 290
6.1.2 BSD 소켓 303
6.2 UDP 네트워크 프로그래밍 306
6.2.1 소켓의 사용 307
6.2.2 서버를 위한 bind( ) 함수 308
6.2.3 바이트 순서 변환 310
6.2.4 네트워크 주소 변환 311
6.2.5 UDP 데이터의 송수신 312
6.2.6 바이트 조작 313
6.3 TCP 서버와 클라이언트 프로그래밍 316
6.3.1 TCP 클라이언트 317
6.3.2 TCP 서버 318
6.3.3 병행 처리 서버 324
6.4 HTTP와 웹 서버 프로그래밍 331
6.4.1 웹과 HTTP 331
6.4.2 웹 브라우저와 웹 엔진 332
6.4.3 HTTP의 구조 333
6.4.4 HTML 340
6.4.5 데몬 프로세스 348
6.4.6 인터넷 패킷 모니터링: Wireshark 352
6.5 웹 서버와 라즈베리 파이의 제어 355
6.6 요약 362
PART 3 리눅스 고급 프로그래밍
CHAPTER 7 리눅스 멀티미디어 프로그래밍: 현란함과 즐거움 367
7.1 멀티미디어와 라즈베리 파이 368
7.1.1 멀티미디어 368
7.1.2 색상 체계 369
7.1.3 사운드 372
7.1.4 아날로그/디지털 변환 373
7.1.5 리눅스 멀티미디어 시스템 379
7.1.6 라즈베리 파이의 멀티미디어 시스템 380
7.2 리눅스 사운드 프로그래밍 380
7.2.1 리눅스 사운드 시스템 380
7.2.2 ALSA를 이용한 오디오 프로그래밍 384
7.2.3 ALSA 프로그래밍 389
7.2.4 ALSA 믹서 프로그래밍 404
7.2.5 WAV 파일의 출력 408
7.3 프레임 버퍼를 통한 이미지 출력 418
7.3.1 프레임 버퍼의 정보 표시 419
7.3.2 프레임 버퍼를 이용한 그래픽 422
7.3.3 BMP 파일 표시하기 430
7.3.4 Qt를 이용한 이미지 표시 438
7.4 Video4Linux2와 Pi Camera 440
7.4.1 Video4Linux 440
7.4.2 Pi Camera 442
7.4.3 Video4Linux2 프로그래밍 445
7.4.4 BMP 파일로 이미지 캡처 455
7.5 라즈베리 파이와 멀티미디어 458
7.6 요약 460
CHAPTER 8 Qt를 이용한 GUI 프로그래밍: 더 편리한 접근성 463
8.1 Qt와 라즈베리 파이: Qt on Pi 464
8.1.1 X 윈도우 시스템 464
8.1.2 Qt의 개요 473
8.1.3 라즈베리 파이로 Qt 4 설치하기 477
8.1.4 라즈베리 파이에 Qt 5 설치하기 478
8.2 Qt 프로그래밍과 사용자 정의 위젯 484
8.2.1 Hello World! 프로그래밍 485
8.2.2 Qt에서의 위젯 488
8.2.3 Qt에서의 이벤트 처리 489
8.2.4 사용자 정의 위젯 493
8.2.5 사용자 정의 시그널과 슬롯 495
8.3 Qt 위젯과 레이아웃 498
8.3.1 Qt의 기본 위젯 498
8.3.2 버튼 위젯 499
8.3.3 정보 표시 위젯 503
8.3.4 문자 입력 위젯 507
8.3.5 범위 선택 위젯 509
8.3.6 레이아웃 512
8.3.7 Qt의 다이얼로그 516
8.3.8 Qt와 Video4Linux2 519
8.4 Qt Creator를 이용한 GUI 디자인 524
8.4.1 Qt Creator를 위한 환경 설정 524
8.4.2 C 언어를 위한 프로젝트 생성과 실행 527
8.4.3 Qt 애플리케이션을 위한 프로젝트 531
8.5 GUI와 라즈베리 파이 545
8.6 요약 552
CHAPTER 9 리눅스 커널과 디바이스 드라이버: 더 깊은 곳으로... 555
9.1 리눅스 커널과 디바이스 드라이버 556
9.1.1 리눅스 커널과 모듈 556
9.1.2 커널 영역과 유저 영역 558
9.1.3 리눅스 디바이스 드라이버 559
9.2 리눅스 디바이스 드라이버 프로그래밍 563
9.2.1 라즈베리 파이에 리눅스 커널의 설치 563
9.2.2 시스템 호출 567
9.2.3 커널 모듈 576
9.3 시스템 레지스터와 LED 출력 580
9.3.1 CPU와 데이터 입출력 580
9.3.2 시스템 레지스터 582
9.4 LED 출력을 위한 GPIO 드라이버 프로그래밍 589
9.4.1 리눅스 디바이스 파일과 GPIO 589
9.4.2 리눅스 디바이스 드라이버 GPIO 프로그래밍 590
9.4.3 애플리케이션으로의 시그널 전달 610
9.5 요약 616
CHAPTER 10 부록 619
10.1 임베디드 리눅스 공부하기 620
10.1.1 하드웨어 621
10.1.2 소프트웨어 623
10.2 라즈베리 파이와 OpenCV 626
10.2.1 OpenCV 설치 626
10.2.2 OpenCV를 이용한 영상 처리 프로그래밍 627
10.2.3 OpenCV와 프레임 버퍼를 이용한 카메라 프로그래밍 631
10.2.4 OpenCV를 이용한 얼굴 인식 633
10.3 GStreamer를 이용한 멀티미디어 프로그래밍 637
10.3.1 GStreamer와 멀티미디어 638
10.3.2 GStreamer를 이용한 프로그래밍 642
10.3.3 GStreamer의 도구들 649
10.3.4 GStreamer와 스트리밍 652
10.4 소스 코드: 라즈베리 파이의 제어 664
10.4.1 프로젝트 파일 664
10.4.2 헤더 파일 665
10.4.3 소스 코드 666
책 속으로
애플리케이션 개발에서 가장 시간이 많이 걸리는 작업 중 하나가 바로 디버깅이다. 디버깅은 프로그램의 잘못된 부분, 즉 버그를 찾아내는 과정으로, 동적 메모리의 잘못된 사용, 적절하지 못한 스택의 크기, 엔디안 문제 등이 버그를 유발한다. 리눅스에서도 디버깅 작업을 보다 쉽게 하도록 gdb 유틸리티를 제공한다. gdb 유틸리티를 사용하면 애플리케이션을 실행하여 소스 코드 내의 특정 부분에서 브레이크포인트를 설정하고 변수 값을 조사하는 등 디버깅과 관련된 작업을 수행할 수 있다.
_95쪽
‘학교종’을 연주하는 프로그램을 작성해보자. ‘학교종 악보’의 계이름들을 주파수로 변환해서 나타낼 수 있다. 음악에서 사용하는 계이름은 1939년 영국 국제협약에 의해서 라(A) 음을 440Hz로 하고 있고, 옥타브(Octave) 사이의 간격은 약 2배의 크기를 갖는다. (중략) ‘학교종’의 첫 번째 음절인 ‘솔솔라라’는 ‘391 391 440 440’으로 표시할 수 있는데, 이 주파수를 이용하면 음악을 연주할 수 있다.
_119쪽
리눅스 시스템 프로그래밍으로 값을 출력하기 위해서는 라즈베리 파이에서 사용하는 메모리 맵 입출력이나 GPIO에 대한 메모리 주소와 값을 설정하는 방법 등 복잡한 개념에 대한 이해가 필요한데, 이를 보다 간단하게 처리하기 위해 wiringPi 라이브러리를 사용할 수 있다. wiringPi를 사용하면 LED 출력이나 스위치로부터의 입력을 보다 쉽게 처리할 수 있다. 또한, 기본적인 센서나 스위치의 사용뿐만 아니라 DC 모터 등의 기기를 지원하기 위해 PWM 생성을 위한 기능도 지원하며, 주파수를 기본값으로 하는 사운드 출력 기능도 제공한다.
_139쪽
유닉스에서는 파일, 디렉터리, 명명된 파이프, 소켓, 디바이스 등이 모두 파일로 취급되므로 이러한 디바이스 디바이스를 다루기 위해서는 파일 처리에 대해 반드시 알아야 한다. 리눅스에서는 저수준으로 파일을 다룰 수 있는 open(), read(), write(), close(), fcntl()/ioctl() 등의 함수들을 제공하고 있으며, 유닉스의 표준 라이브러리에서 제공하는 FILE 구조체를 이용하는 fopen(), fread(), fwrite(), fclose() 함수 등의 고수준의 파일 입출력 함수도 제공한다.
_203쪽
색상 변환에 대해 알아보았으므로 프레임 버퍼를 이용해서 그래픽 객체들을 그려보자. 프레임 버퍼에 색을 표시하기 위해서는 4장에서 설명한 파일 시스템을 이해할 필요가 있다. 유닉스에서는 파일, 디렉터리, 디바이스, 네트워크를 모두 파일로 취급하는데, 프레임 버퍼에는 ‘/dev/fb0’로 접근할 수 있다. 이 파일에 open(), close(), write(), lseek() 함수를 이용해서 원하는 동작을 수행할 수 있다.
_423쪽
출판사 서평
라즈베리 파이로 배우는 사물인터넷과 리눅스 프로그래밍!
기본적인 하드웨어 개발에서 리눅스 애플리케이션 개발까지!
이 책이 다루는 내용
■ 라즈베리 파이와 GPIO를 이용한 하드웨어 제어
■ 리눅스 시스템 프로그래밍
■ 다중 처리
■ 리눅스 네트워크 프로그래밍
■ 리눅스 멀티미디어 프로그래밍
■ 리눅스 GUI 프로그래밍
■ 리눅스 커널 & 디바이스 드라이버 프로그래밍
■ OpenCV와 GStreamer를 이용한 멀티미디어 스트리밍
기본정보
ISBN | 9791185890289 |
---|---|
발행(출시)일자 | 2015년 08월 31일 |
쪽수 | 712쪽 |
크기 |
188 * 245
* 28
mm
/ 1226 g
|
총권수 | 1권 |
Klover
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
판매가 1,000원 미만 도서의 경우 리워드 지급 대상에서 제외됩니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
리뷰는 1인이 중복으로 작성하실 수는 있지만, 평점계산은 가장 최근에 남긴 1건의 리뷰만 반영됩니다.
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
구매 후 리뷰 작성 시, e교환권 100원 적립