이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

소득공제
임베디드 리눅스 입문
가격
23,000
10 20,700
YES포인트?
1,150원 (5%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요

이미 소장하고 있다면 판매해 보세요.

  •  해외배송 가능?
  •  문화비소득공제 가능

책소개

목차

용어 대역표
서문
시작하면서
감사의 글
저자 소개

Chapter 1 소개
1.1 왜 리눅스인가?
1.2 임베디드 리눅스의 현재
1.3 오픈 소스와 GPL
1.3.1 무료와 자유
1.4 표준 및 관련 조직
1.4.1 리눅스 기본 규격
1.4.2 오픈 소스 개발 연구소
1.5 요약
1.5.1 더 읽어 보기

Chapter 2 임베디드 처음 경험하기
2.1 임베디드와 임베디드가 아닌 것?
2.1.1 BIOS와 부트로더
2.2 임베디드 시스템 해부
2.2.1 전형적인 임베디드 리눅스 환경
2.2.2 타깃 보드 구동하기
2.2.3 커널 부팅하기
2.2.4 커널 초기화 : 요약
2.2.5 첫 번째 사용자 영역 프로세스 : init
2.3 저장 장치
2.3.1 플래시 메모리
2.3.2 NAND 플래시
2.3.3 플래시의 사용
2.3.4 플래시 파일 시스템
2.3.5 메모리 공간
2.3.6 실행 컨텍스트
2.3.7 프로세스 가상 메모리
2.3.8 교차-개발 환경
2.4 임베디드 리눅스 배포판
2.4.1 상용 리눅스 배포판
2.4.2 직접 만드는 리눅스 배포판
2.5 요약
2.5.1 더 읽어 보기

Chapter 3 프로세서 기본
3.1 독립형 프로세서
3.1.1 IBM 970FX
3.1.2 인텔 펜티엄 M
3.1.3 프리스케일 MPC7448
3.1.4 보조 칩셋
3.2 통합형 프로세서 : 시스템 온 칩
3.2.1 PowerPC
3.2.2 AMCC PowerPC
3.2.3 프리스케일 PowerPC
3.2.4 MIPS
3.2.5 브로드컴 MIPS
3.2.6 AMD MIPS
3.2.7 기타 MIPS
3.2.8 ARM
3.2.9 TI ARM
3.2.10 프리스케일 ARM
3.2.11 인텔 ARM 엑스스케일
3.2.12 기타 ARM
3.2.13 기타 아키텍처
3.3 하드웨어 플랫폼
3.3.1 CompactPCI
3.3.2 ATCA
3.4 요약
3.4.1 더 읽어 보기

Chapter 4 다른 관점에서 본 리눅스 커널
4.1 배경
4.1.1 커널 버전
4.1.2 커널 소스 저장소
4.2 리눅스 커널의 구성
4.2.1 최상위 소스 디렉터리
4.2.2 커널 컴파일하기
4.2.3 커널 단일파일 : vmlinux
4.2.4 커널 이미지 구성 요소
4.2.5 하위 디렉터리 구성
4.3 커널 빌드 시스템
4.3.1 점-Config 파일
4.3.2 구성 편집기
4.3.3 Makefile 타깃
4.3.4 커널 구성
4.3.5 구성 옵션 직접 만들기
4.3.6 커널 Makefile
4.3.7 커널 문서화
4.4 리눅스 커널 구하기
4.4.1 추가적으로 더 필요한 것은
4.5 요약
4.5.1 더 읽어 보기

Chapter 5 커널 초기화
5.1 복합적인 커널 이미지 : piggy와 그 외 오브젝트 파일
5.1.1 Image 오브젝트
5.1.2 아키텍처 오브젝트
5.1.3 부트스트랩 로더
5.1.4 부트 메시지
5.2 초기화 단계의 제어 흐름
5.2.1 커널 진입점 : head.o
5.2.2 커널 스타트업 : main.c
5.2.3 아키텍처 셋업
5.3 커널 커맨드 라인 처리하기
5.3.1 __setup 매크로
5.4 서브시스템 초기화
5.4.1 *__initcall 매크로
5.5 init 쓰레드
5.5.1 initcall을 이용한 초기화
5.5.2 마지막 부팅 단계
5.6 요약
5.6.1 더 읽어 보기

Chapter 6 시스템 초기화
6.1 루트 파일 시스템
6.1.1 FHS : 파일 시스템 계층 표준
6.1.2 파일 시스템 배치
6.1.3 최소 파일 시스템
6.1.4 루트 파일 시스템의 도전 과제
6.1.5 시행착오를 반복하는 방법
6.1.6 자동화된 파일 시스템 제작 툴
6.2 커널의 마지막 부팅 단계
6.2.1 최초 사용자 영역 프로그램
6.2.2 의존성 해결
6.2.3 초기화 과정 수정하기
6.3 Init 프로세스
6.3.1 inittab
6.3.2 웹 서버 시작 스크립트의 예
6.4 초기 램디스크
6.4.1 초기 램디스크의 용도
6.4.2 initrd로 부팅하기
6.4.3 initrd를 지원하는 부트로더
6.4.4 initrd의 마법 : linuxrc
6.4.5 initrd 구성
6.4.6 initrd 이미지 만들기
6.5 initramfs 사용하기
6.6 종료
6.7 요약
6.7.1 더 읽어 보기

Chapter 7 부트로더
7.1 부트로더의 역할
7.2 부트로더의 도전 과제
7.2.1 DRAM 컨트롤러
7.2.2 플래시와 RAM
7.2.3 이미지 복잡도
7.2.4 실행 컨텍스트
7.3 유니버설 부트로더 : Das U-Boot
7.3.1 시스템 구성 : U-Boot
7.3.2 U-Boot 명령어 셋
7.3.3 네트워크 동작
7.3.4 저장 장치 서브시스템
7.3.5 디스크로부터 부팅하기
7.4 U-Boot 포팅하기
7.4.1 EP405를 위한 U-Boot 포팅
7.4.2 U-Boot makefile의 구성 타깃
7.4.3 EP405 프로세서 초기화
7.4.4 보드에 따른 초기화
7.4.5 포팅 요약
7.4.6 U-Boot 이미지 형식
7.5 기타 부트로더
7.5.1 Lilo
7.5.2 GRUB
7.5.3 더 많은 부트로더
7.6 요약
7.6.1 더 읽어 보기

Chapter 8 디바이스 드라이버 기초
8.1 디바이스 드라이버의 개념
8.1.1 로드 가능한 모듈
8.1.2 디바이스 드라이버 아키텍처
8.1.3 최소 디바이스 드라이버 예제
8.1.4 모듈 빌드를 위한 기반
8.1.5 디바이스 드라이버 설치하기
8.1.6 모듈 로드하기
8.2 모듈 유틸리티
8.2.1 insmod
8.2.2 모듈 파라미터
8.2.3 lsmod
8.2.4 modprobe
8.2.5 depmod
8.2.6 rmmod
8.2.7 modinfo
8.3 드라이버의 메서드
8.3.1 드라이버의 파일 시스템 오퍼레이션
8.3.2 디바이스 노드와 mknod
8.4 한데 묶기
8.5 디바이스 드라이버와 GPL
8.6 요약
8.6.1 더 읽어 보기

Chapter 9 파일 시스템
9.1 리눅스 파일 시스템의 개념
9.1.1 파티션
9.2 ext2
9.2.1 파일 시스템 마운트하기
9.2.2 파일 시스템 무결성 검사
9.3 ext3
9.4 ReiserFS
9.5 JFFS2
9.6 cramfs
9.7네트워크 파일 시스템(NFS)
9.7.1 NFS를 이용한 루트 파일 시스템
9.8 의사 파일 시스템
9.8.1 Proc 파일 시스템
9.8.2 sysfs
9.9 기타 파일 시스템
9.10 간단한 파일 시스템 만들기
9.11 요약
9.11.1 더 읽어 보기

Chapter 10 MTD 서브시스템
10.1 MTD 서비스 활성화하기
10.1.1 MTD 만들기
10.2 MTD 기초
10.2.1 MTD 구성하기
10.3 MTD 파티션
10.3.1 Redboot 파티션 테이블 나누기
10.3.2 커널 커맨드 라인에서 파티션 생성하기
10.3.3 매핑 드라이버
10.3.4 플래시 칩 드라이버
10.3.5 보드에 따른 초기화
10.4 MTD 유틸리티
10.4.1 JFFS2 루트 파일 시스템
10.5 요약
10.5.1 더 읽어 보기

Chapter 11 BusyBox
11.1 BusyBox 소개
11.1.1 BusyBox는 쉽다
11.2 BusyBox 구성하기
11.2.1 BusyBox 교차-컴파일하기
11.3 BusyBox의 기능
11.3.1 BusyBox Init
11.3.2 rcS 초기화 스크립트 예제
11.3.3 BusyBox를 타깃 보드에 설치하기
11.3.4 BusyBox 명령어
11.4 요약
11.4.1 더 읽어 보기

Chapter 12 임베디드 개발 환경
12.1 교차-개발 환경
12.1.1 임베디드 “Hello World”
12.2 호스트 시스템 요구 사항
12.2.1 하드웨어 디버깅 장비
12.3 타깃 보드 호스팅하기
12.3.1 TFTP 서버
12.3.2 BOOTP/DHCP 서버
12.3.3 NFS 서버
12.3.4 타깃 시스템에 NFS 루트 파일 시스템 마운트하기
12.3.5 U-Boot를 이용한 NFS 루트 파일 시스템 마운트 예제
12.4 요약
12.4.1 더 읽어 보기

Chapter 13 개발 도구
13.1 GNU 디버거(GDB)
13.1.1 코어 덤프 디버그하기
13.1.2 GDB 실행하기
13.1.3 GDB의 디버그 세션
13.2 데이터 표시 디버거
13.3 cbrowser/cscope
13.4 추적 및 프로파일링 도구
13.4.1 strace
13.4.2 strace의 다양한 기능
13.4.3 ltrace
13.4.4 ps
13.4.5 top
13.4.6 mtrace
13.4.7 dmalloc
13.4.8 커널 웁스(Oops)
13.5 바이너리 유틸리티
13.5.1 readelf
13.5.2 readelf를 이용해서 디버깅 정보 보기
13.5.3 objdump
13.5.4 objcopy
13.6 기타 바이너리 유틸리티
13.6.1 strip
13.6.2 addr2line
13.6.3 strings
13.6.4 ldd
13.6.5 nm
13.6.6 prelink
13.7 요약
13.7.1 더 읽어 보기

Chapter 14 커널 디버깅 기술
14.1 커널 디버깅의 어려움
14.2 KGDB를 이용한 커널 디버깅
14.2.1 KGDB 커널 구성
14.2.2 KGDB를 활성화시킨 타깃 부팅하기
14.2.3 유용한 커널 브레이크 포인트
14.3 리눅스 커널 디버깅하기
14.3.1 gdb 원격 시리얼 프로토콜
14.3.2 최적화된 커널 코드 디버깅하기
14.3.3 gdb 사용자 정의 명령어
14.3.4 유용한 커널 gdb 매크로
14.3.5 적재 가능 모듈 디버깅하기
14.3.6 printk 디버깅
14.3.7 매직 SysReq 키
14.4 하드웨어를 이용한 디버깅
14.4.1 JTAG 프로브를 이용해서 플래시 기록하기
14.4.2 JTAG 프로브를 이용한 디버깅
14.5 부팅이 되지 않을 때
14.5.1 초기 시리얼 디버그 출력
14.5.2 printk 로그 버퍼의 내용 덤프하기
14.5.3 커널 패닉에서 KGDB 사용하기
14.6 요약
14.6.1 더 읽어 보기

Chapter 15 임베디드 리눅스 어플리케이션 디버깅하기
15.1 타깃 디버깅
15.2 원격 (교차) 디버깅
15.2.1 gdbserver
15.3 공유 라이브러리 디버깅
15.3.1 GDB의 공유 라이브러리 이벤트
15.4 여러 태스크 디버깅하기
15.4.1 다중 프로세스 디버깅
15.4.2 다중 쓰레드 어플리케이션 디버깅
15.4.3 부트로더 및 플래시에 있는 코드 디버깅
15.5 추가 원격 디버그 옵션
15.5.1 시리얼 포트로 디버깅하기
15.5.2 실행중인 프로세스에 연결하기
15.6 요약
15.6.1 더 읽어 보기

Chapter 16 리눅스 포팅
16.1 리눅스 소스 코드의 구조
16.1.1 아키텍처 브렌치
16.2 자체 보드를 위한 리눅스
16.2.1 선행 조건과 가정
16.2.2 커널 초기화 커스터마이징
16.2.3 정적인 커널 커맨드 라인
16.3 플랫폼 초기화
16.3.1 초기 변수 접근
16.3.2 보드의 정보 구조
16.3.3 머신 종속적인 호출
16.4 한데 묶기
16.4.1 기타 아키텍처
16.5 요약
16.5.1 더 읽어 보기

Chapter 17 리눅스와 리얼 타임
17.1 리얼 타임
17.1.1 소프트 리얼 타임
17.1.2 하드 리얼 타임
17.1.3 리눅스의 스케줄링
17.1.4 지연
17.2 커널 선점
17.2.1 선점의 장애물
17.2.2 선점 모델
17.2.3 SMP 커널
17.2.4 선점 지연의 원인
17.3 리얼 타임 커널 패치
17.3.1 리얼 타임 기능
17.3.2 O(1) 스케줄러
17.3.3 리얼 타임 프로세스 생성하기
17.3.4 크리티컬 섹션 관리
17.4 리얼 타임 커널 디버깅하기
17.4.1 소프트 락업 감지
17.4.2 선점 디버깅
17.4.3 깨어나는 시간 디버깅
17.4.4 깨어나는 지연 시간 기록
17.4.5 인터럽트 차단 시간
17.4.6 인터럽트 차단 시간 기록
17.4.7 지연 시간 추적
17.4.8 데드락 상태 디버깅하기
17.4.9 락 모드 제어하기
17.5 요약
17.5.1 더 읽어 보기

Appendix A GNU 일반 공중 사용 허가서
전문
복제와 개작 및 배포에 관한 조건과 규정
보증의 결여(제11조, 제12조)

Appendix B U-Boot의 구성 가능 명령어 셋

Appendix C BusyBox 명령어

Appendix D SDRAM 인터페이스 고려 사항

D.1 SDRAM 기초
D.1.1 SDRAM 리프레시
D.2 클럭
D.3 SDRAM 설정
D.4 요약
D.4.1 더 읽어 보기

Appendix E 오픈 소스 리소스
소스 저장소 및 개발자 정보
메일링 리스트
리눅스 뉴스 및 개발 정보
오픈 소스에 대한 이해 및 토론

Appendix F 예제 BDI-2000 구성 파일

저자 소개

저자 : 크리스토퍼 할리난
미국 몬타 비스타 소프트웨어 사에서 필드 어플리케이션 엔지니어로 일하고 있는 크리스토퍼 할리난은 20년 이상을 엔지니어에서 엔지니어 관리, 마케팅에서 사업 개발에 이르는 다양한 분야에서 일한 경험을 갖고 있다. 또한 그는 4년간 독립적으로 임베디드 리눅스를 위한 개발 컨설턴트로 일한 경험도 가지고 있다. 그가 작업한 연구에 대해서는 전기통신 매거진(Telecommunications Magazine), 광섬유 매거진(Fiber Optics Magazine), Aviation 다이제스트 등에서 볼 수 있다.

관련 분류

품목정보

발행일
2008년 07월 10일
쪽수, 무게, 크기
625쪽 | 1142g | 186*234*35mm
ISBN13
9788956744377

줄거리

- 임베디드 리눅스에서 주로 사용되는 프로세서들에 대한 비교
- 리눅스 커널의 초기화 과정을 상세히 설명
- 임베디드 리눅스 시스템에서 부트로더가 갖는 특별한 역할을 배우고, 특히 U-Boot에 대해서 자세히 설명한다.
- 임베디드 리눅스에서 JFFS2를 포함한 파일 시스템들을 사용해 본다. 플래시에 저장시킬 파일 시스템 이미지를 만드는 방법도 설명할 것이다.
- 플래시 메모리 장치 (또는 다른 장치)를 위한 메모리 기술 장치 서브시스템을 설명한다.
- gdb, KGDB 그리고 하드웨어 JTAG을 이용한 디버깅을 배워본다.
- 리눅스 커널 내에서 사용할 만한 팁과 디버깅 기술을 설명한다.
- 교차 개발 환경을 이용해서 생산성을 극대화시키는 방법을 설명한다.
- TFTP, DHCP 그리고 NFS 서버를 포함해서 전체 개발 환경을 갖추는 법에 대해서 설명한다.
- 자신의 시스템의 요구조건에 맞게 BusyBox를 구성하고 빌드 및 초기화하는 방법을 배운다.

리뷰/한줄평1

리뷰

8.0 리뷰 총점

한줄평

첫번째 한줄평을 남겨주세요.