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