1부. 임베디드 리눅스의 요소
1장. 시작
__리눅스 선택하기
__리눅스를 선택하지 말아야 할 때
__참여 단체들
__프로젝트 생명주기
____임베디드 리눅스의 4요소
__오픈소스
__라이선스
__임베디드 리눅스를 위한 하드웨어 선택하기
__이 책에서 사용하는 하드웨어
____라즈베리 파이 4
____비글본 블랙
____QEMU
__개발 환경
__요약
2장. 툴체인을 배우자
__기술적 요구 사항
__툴체인 소개
____툴체인의 종류
____CPU 아키텍처
____C 라이브러리 고르기
__툴체인 찾기
__crosstool-NG를 이용해 툴체인 빌드하기
____crosstool-NG 설치
____비글본 블랙용 툴체인 빌드
____QEMU용 툴체인 빌드
__툴체인의 구조
____크로스 컴파일러를 알아보자
____sysroot, 라이브러리, 헤더 파일
____툴체인 안의 다른 도구들
____C 라이브러리의 요소를 살펴보자
__라이브러리와 링크하기: 정적 링크와 동적 링크
____정적 라이브러리
____공유 라이브러리
__크로스 컴파일 기술
____단순 makefile
____Autotools
____패키지 구성
____크로스 컴파일 관련 문제
____CMake
__요약
__추가 자료
3장. 부트로더에 대한 모든 것
__기술적 요구 사항
__부트로더는 무슨 일을 하는가?
__부트 순서
____1단계: 롬 코드
____2단계: SPL
____3단계: TPL
__부트로더에서 커널로 이동
__장치 트리 소개
____장치 트리 기초
____reg 프로퍼티
____레이블과 인터럽트
____장치 트리 인클루드 파일
____장치 트리 컴파일하기
__U-Boot
____U-Boot 빌드하기
____U-Boot 설치하기
____U-Boot 사용하기
____리눅스 부팅
____U-Boot를 새로운 보드에 이식하기
____빌드와 테스트
____팔콘 모드
__요
이 책에서 다루는 내용
- Buildroot와 Yocto 프로젝트를 이용해 임베디드 리눅스 시스템을 만든다.
- BitBake 빌드 오류를 해결하고 Yocto 개발 워크플로를 간소화한다.
- Mender나 balena를 이용해 IoT 장치를 안전하게 업데이트한다.
- 회로도를 읽고, 장치 트리를 수정하고, 브레이크아웃 보드를 납땜하고, 로직 분석기로 핀을 프로브해 주변 장치 추가를 프로토타이핑한다.
- 커널 장치 드라이버를 작성하지 않고도 하드웨어와 상호작용한다.
- 시스템을 BusyBox runit으로 관리되는 서비스로 나눈다.
- GDB를 이용해 장치를 원격으로 디버깅하고 perf, ftrace, eBPF, Callgrind 같은 도구를 이용해 시스템의 성능을 측정한다.
이 책의 대상 독자
임베디드 컴퓨팅과 리눅스에 관심이 있고 자신들의 지식을 해당 주제의 다양한 분야로 확장하려는 개발자들을 위한 책이다. 리눅스 명령줄(Linux command line의 기초를 이해하는 독자들이 읽기 적합하며, 프로그래밍 예제에서는 C와 파이썬 언어에 대한 실무 지식이 있다고 가정하고 설명한다. 몇 개의 장은 임베디드 타깃 보드에 들어가는 하드웨어에 초점을 두므로, 하드웨어와 하드웨어 인터페이스에 익숙하면 분명히 해당 경우에 이점이 있을 것이다.
이 책의 구성
1장. ‘시작’에서는 임베디드 리눅스 생태계를 살펴보고, 프로젝트를 시작할 때 시스템 설계자가 어떤 선택을 할 수 있는지를 설명한다.
2장. ‘툴체인을 배우자’에서는 툴체인의 요소를 설명하고, 타깃 보드용으로 크로스 컴파일하기 위한 툴체인을 만드는 방법을 보여준다. 어디서 툴체인을 구할 수 있는지 살펴보고, 소스 코드로부터 빌드하는 방법을 자세히 설명한다.
3장. ‘부트로더에 대한 모든 것’에서는 리눅스 커널을 메모리로 로드하는 부트로더의 역할을 설명하고 U-Boot와 Bareboot를 예로 사용한다. 이어서 장치 트리도 설명한다. 장치 트리는 하드웨어의 자세한 내용을 부호화