Top

GNU/Linux 쾌속 임베디드 프로그래밍 [보드를 활용한 임베디드 시스템 개요 및 주변 장치 사용법]

  • 원서명GNU/Linux Rapid Embedded Programming: Your one-stop solution on embedded programming on GNU/Linux (ISBN 9781783552078)
  • 지은이로돌포 지오메티(Rodolfo Giometti)
  • 옮긴이정병혁
  • ISBN : 9791161751665
  • 50,000원
  • 2018년 06월 28일 펴냄
  • 페이퍼백 | 896쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 임베디드 시스템

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약

임베디드 컴퓨터는 최근 몇 년간 매우 복잡해져, 개발자는 좋은 주변 장치를 찾거나 주변 장치를 관리하는 데 시간을 소비하지 않고 문제 해결법에만 집중해야 빠른 개발이 가능하다. 이 책은 업계에서 많이 사용하는 비글본 블랙과 SAMA5D3 Xplain, Wandboard를 사용해 주변 장치를 쉽고 빠르게 관리 하는 실제 예제를 담고 있으며, GNU/리눅스 임베디드 시스템을 신속하게 프로그래밍 및 관리하도록 도와주는 안내서다.

이 책에서 다루는 내용

█ 임베디드 시스템을 사용해 프로젝트 구현
█ 임베디드 시스템용 주변 장치 접근 및 관리
█ C와 파이썬, 배시, PHP 등의 언어를 사용해 임베디드 시스템 프로그래밍
█ 데비안 및 우분투 같은 완전한 배포판이나 OpenWrt 및 Yocto같은 임베디드 배포판 사용
█ 디바이스 통신을 최적화하기 위해 디바이스 드라이버 기능 이용
█ GPIO와 시리얼 포트, PWM, ADC, 이더넷, Wifi, 오디오, 비디오, I2C, SPI, One Wire, USB, CAN 등 다양한 종류의 디바이스를 통해 데이터 접근
█ RFID 리더와 스마트 카드 리더, 바코드 리더, Z-Wave 디바이스, GSM/GPRS 등 여러 디바이스의 실제 예제 사용
█ 빛과 압력, 습도, 온도, 적외선, 전원, 동작 등 여러 센서 사용

이 책의 대상 독자

임베디드 머신 러닝 능력 사용법을 배우거나, 주변 장치로부터 데이터를 모으거나, 디바이스를 제어하기 위해 GNU/리눅스 디바이스 드라이버를 사용하길 원하는 독자에게 적합하다.
산업 애플리케이션용 GNU/리눅스 기반의 시스템을 모니터링하거나 기능 제어 구현을 위해 다른 컴퓨터 주변 장치를 쉽고 빠르게 접근하는 방법에 관심이 있는 독자에게도 적합하다.
하드웨어나 전자공학 지식과 유닉스 환경에서 C와 배시, 파이썬, PHP 프로그래밍 기본 지식을 임베디드 시스템에서 사용해보고 싶은 독자에게도 적합하다.

이 책의 구성

1장, ‘개발 시스템 설치’에서는 산업용 애플리케이션으로 가장 많이 사용하는 개발 도구인 비글본 블랙과 SAMA5D3 Xplain, Wandboard를 설명한다. 각 보드를 간단히 소개한 후 GNU/리눅스 배포판이 동작하도록 하기 위해 이 보드를 어떻게 설정하는지 살펴본다. 각 보드와 호스트 시스템(심지어 가상 머신 상에도)에 모든 개발 시스템을 설치하는 방법도 설명한다.
2장, ‘시스템 콘솔 관리’에서는 개발자 도구와 호스트 PC 설치법을 설명하고, 시리얼 콘솔과 이 콘솔에서 동작하는 셸(shell)에 대해 좀 더 자세히 살펴본다. 2장의 끝부분에서는 부트로더 명령어도 다룬다.
3장, ‘C 컴파일러와 디바이스 드라이버, 유용한 개발 비법’에서는 C 컴파일러(이와 함께 크로스 컴파일러까지)를 다룬다. 그리고 커널 모듈과 디바이스 드라이버, 네트워크 파일 시스템에 대한 설명과 함께 파일 시스템 내부에 대해 살펴본다. 마지막으로 호스트 PC에서 타깃 머신의 데비안 배포판을 실행하기 위해 개발자가 에뮬레이터를 어떻게 사용하는지 다룬다.
4장, ‘스크립트를 사용한 빠른 프로그래밍과 시스템 데몬’에서는 시스템 데몬이 무엇인지와 가장 유명하고 유용한 데몬 사용법을 살펴본다. 그리고 배시와 PHP, 파이썬 언어를 사용하는 스크립트 프로그래밍을 다룬다.
5장, ‘임베디드 OS 설치’에서는 플래시 메모리와 이 메모리를 관리할 때 사용하는 소프트웨어를 설명하고, 리눅스의 메모리 기술 디바이스(MTD)와 (MTD)상에서 동작하는 두 가지 주요 파일 시스템인 JFFS2와 UBIFS를 다룬다. 근래에 사용하는 가장 유명한 임베디드 배포판인 Yocto, Openwrt, 임베디드 개발자가 애플리케이션을 작성하고, 이들 배포판에 추가하는 방법도 설명한다.
두 번째 파트는 임베디드 개발자가 마주하게 될 모든 유형의 주변 장치 디바이스에 대해 자세히 설명한다. 각 주변 장치마다 이 책에서 지원하는 각 임베디드 도구가 어디에서 사용할 수 있는지와 어떻게 접근하고 사용하는지를 설명할 것이다. 각 디바이스 별로 실례를 통해 디바이스를 쉽게 관리하는 방법도 배우게 된다.
6장, ‘범용 입출력 신호 – GPIO’에서는 GPIO 회선과 간단한 설명을 소개하고, 이 회선이 임베디드 머신의 물리적으로 어디에 위치하는지 살펴본다. 그리고 간단한(그러나 효율적이지는 않은) 방식과 더 효율적인(하지만 좀 더 복잡한) 방식으로 GPIO 회선을 사용하는 방법을 자세히 살펴본다. 마지막으로 커널 내부에서 GPIO 관리하는 방식에 대한 빠른 소개와 IRQ 관리, LED 디바이스 지원을 다룬다.
7장, ‘시리얼 포트와 TTY 디바이스 – TTY’에서는 컴퓨터(적어도 제어 자동화 분야에서 사용하는 컴퓨터)가 가질 수 있는 가장 중요한 주변 장치 중 하나인 시리얼 포트를 소개한다. 시리얼 포트나 시리얼 디바이스가 무엇인지 간단히 설명한 후 실제 시리얼 디바이스를 사용하기 위해 GNU/리눅스에서 시리얼 포트와 디바이스를 관리하는 방법을 살펴본다. 그리고 두 임베디드 시스템이 이더넷 케이블로 연결된 것처럼, 시리얼 선을 사용해 두 임베디드 시스템이 통신할 수 있는 유용한 커널 트릭을 살펴본다.
8장, ‘USB’에서는 다용도로 쓰이고, 최근 PC에서 많이 사용하는 USB 버스를 소개한다. 이 버스는 전자 장치를 컴퓨터에 꽂을 수 있게 해준다. 예를 들어, 하드 디스크나 키보드, 시리얼 디바이스는 같은 USB 포트를 통해 한 컴퓨터에 모두 연결될 수 있다.
9장, ‘Inter-Integrated Circuits - I2C’에서는 같은 보드상에 있는 디바이스를 가진 메인 컴퓨터인 온보드(on-board) 장치를 연결할 때 사용하는 I2C를 소개한다. 여러 디바이스들은 I2C를 사용해 CPU와 통신하며, 이 장에서는 이런 장치를 가능한 많이 소개한다. 이 버스가 제공하는 많은 조합을 다루기 위해 각기 다른 장치와 다른 설정을 살펴본다.
10장, ‘시리얼 주변 장치 인터페이스 – SPI’에서는 I2C처럼 온보드 디바이스를 연결할 때 일반적으로 사용하는 SPI 버스를 소개한다. 이 버스는 I2C와 달리, I2C보다 높은 속도로 데이터를 전송할 수 있다. 버스가 양방향 통신이기 때문에 데이터 전송이 동시에 양방향으로 일어날 수 있다. 이런 SPI의 특성 때문에 이 버스는 보통 멀티미디어 애플리케이션이나 디지털 신호 처리 혹은 원격 통신 장치, SD 카드용으로 효율적인 데이터 스트림 등을 구현할 때 사용된다.
11장, ‘1-Wire - W1’에서는 속도는 느리지만 단 하나의 선을 사용해 원격에 있는 디바이스와 통신할 수 있는 1-Wire 버스를 소개한다. 이 버스는 CPU와 주변 장치 간 연결을 간단하게 만들어 가장 경제적이고, 식별과 인증, 보정 데이터나 제조 정보 전송을 위한 전자 장치를 컴퓨터 보드에 추가할 수 있는 간단한 방법을 제공한다.
12장, ‘이더넷 네트워크 디바이스’에서는 매우 먼 거리에 있는 다른 디바이스와 통신이 가능한 이더넷 디바이스를 소개한다. GNU/리눅스 기반의 시스템은 이더넷 디바이스와 관련 네트워킹(networking) 프로토콜에 대한 지원이 훌륭하기 때문에, 전세계 대부분의 네트워킹 디바이스는 이더넷 기술을 기반으로 한다.
13장, ‘무선 네트워크 디바이스 – WLAN’에서는 유선을 사용하지 않고 여러 컴퓨터 간 통신이 가능한 무선 네트워크 디바이스를 소개한다. 흥미로운 점은 이더넷 인터페이스에서 사용하는 대부분의 통신 프로토콜이 무선 네트워크 장치에서도 동작한다는 것이다.
14장, ‘제어기 영역 통신망’에서는 마이크로 컨트롤러와 컴퓨터, 디바이스가 호스트 컴퓨터 없이도 메시지 기반의 프로토콜을 사용해 애플리케이션 간 서로 통신할 수 있도록 해주는 CAN 버스를 소개한다. CAN 버스는 이더넷이나 와이파이(WiFi)처럼 유명하지는 않지만, 임베디드 세계에서는 이 버스를 디폴트로 지원하는 SoC도 어렵지 않게 볼 수 있다.
15장, ‘사운드 디바이스 – SND’에서는 사운드 디바이스를 소개하고, 독자가 오디오를 생성하기 위한 사운드 디바이스 사용법과 간단하고 저가인 오실로스코프(oscilloscope) 구현법을 소개하기 위한 예제를 제공한다.
16장, ‘비디오 디바이스 - V4L’에서는 일반적인 비디오 획득 장치를 소개하고, 책에서 소개하는 임베디드 도구를 독자가 감시 카메라나 원격 이미지 레코더로 바꿀 수 있는 몇 가지 예제를 제공한다.
17장, ‘아날로그-디지털 변환기 – ADC’에서는 실제 환경에서 아날로그 신호를 얻기 위해 사용하는 ADC를 소개한다. 또한 ADC 사용법과 특정 시점이나 어떤 이벤트가 발생했을 때 변환을 시작하기 위한 특별한 소프트웨어와 하드웨어 트리거(trigger) 사용법을 설명한다.
18장, ‘펄스 폭 변조’에서는 디지털 소스를 사용해 아날로그 신호를 만들기 위해 메시지를 펄싱(pulsing) 신호(보통 구형파(squre waveform))로 인코딩할 수 있는 PWM을 소개한다. 이런 메시지는 전기 모터나 다른 전자 장치에 공급되는 전원을 제어하거나 18장에서 살펴볼 서보(servo) 모터의 위치 제어를 위해 사용한다.
19장, ‘기타 장치’에서는 위의 장과 연관돼 있지만, 가독성을 위해 언급하지 않았던 주변 장치를 소개한다. 또한 RFID와 스마트카드 리더, 디지털/아날로그 센서 GSM/GPRS 모뎀, Z-wave와 같은 모니터링 혹은 제어 시스템에서 마주하게 될 부가적인 병렬 장치를 소개한다.

저자/역자 소개

지은이의 말

이 책은 업계에서 사용하는 특정 주변 장치를 외부 환경과 연동하는 법을 설명한다. 최신 리눅스 커널 버전(4.4+)과 데비안, 우분투 배포판을 사용한다. 유명하고 사용자 친화적이며, 산업용 어플리케이션용으로 많이 사용되는 비글본 블랙과 SAMA5D3 Xplain, Wandboard 같은 보드를 설명하고, 이 보드에서 실제 주변 장치를 사용하는 예제를 제공한다. 외부 주변 장치를 접근하기 위해 C와 배시, 파이썬, PHP 언어를 사용해 임베디드 플랫폼을 프로그래밍하는 첫 단계를 설명한다.
또한 이 책을 통해 C 프로그래밍이나 스크립트 언어를 사용해 외부 주변 장치에 데이터를 읽고 쓰는 법을 배우고, 특정 하드웨어용 디바이스 드라이버를 설정하는 법을 살펴본다. 이 책에서 배운 기술을 실제 프로젝트에 적용할 수 있게 될 것이다.

지은이 소개

로돌포 지오메티(Rodolfo Giometti)

엔지니어이자 IT 전문가, GNU/리눅스 전문가, 자유 소프트웨어 전도자다. 팩트출판사에서 출간한 『BeagleBone Essentials』(2015)과 『BeagleBone Home Automation Blueprints』(2016)의 저자며, 리눅스 PPS(리눅스 Pulse Per Second subsystem) 프로젝트 관리자로서 리눅스 소스 코드에 많은 패치를 올리고 있고, 산업 애플리케이션 디바이스용 새로운 디바이스 드라이버를 만들고 있다. x86과 ARM, MIPS, PowerPC 기반 플랫폼에서 20여 년 넘게 일했다.
HCE Engineering S.r.l의 공동 수석(co-chief)이고, 산업 환경과 제어 자동화, 원격 모니터링 분야에서 프로토타이핑을 빨리 만들어낼 수 있는 새로운 하드웨어 및 소프트웨어와 관련된 Cosino 프로젝트의 공동 설립자다.

옮긴이의 말

요즘 소프트웨어 업계의 화두는 IoT와 Automotive다. 관련 업계를 살펴보면, 대기업들은 기존 핸드폰이나 TV 혹은 가전 사업에서 IoT 사업이나 Automotive 관련 전장 사업을 전략적 차세대 사업으로 중점 육성 중이며, 각종 반도체 하드웨어 업체들도 IoT에 대응할 목적으로 임베디드 소프트웨어 SDK를 개발해 반도체와 함께 판매하고 있다. 이를 반영하듯 기존에는 강력한 시스템 성능을 가진 하드웨어가 뒷받침되는 일반적인 리눅스 시스템에 관한 책들이 많이 출간됐지만, 요즘에는 임베디드와 관련된 책들이 많이 출간되고 있다.
이 책은 현재 트렌드를 반영하는 임베디드 시스템과 관련돼 있다. 임베디드 컴퓨터는 최근 몇 년간 매우 복잡해져서 개발자는 좋은 주변 장치를 찾거나 관리하는 데 시간을 소비하지 않고 문제 해결법에만 집중해야 빠른 개발이 가능하다. 이 책은 업계에서 많이 사용하는 비글본 블랙과 SAMA5D3 Xplain, Wandboard를 사용해 주변 장치를 쉽고 빠르게 관리하는 실제 예제를 담고 있으며, GNU/리눅스 임베디드 시스템을 신속하게 프로그래밍 및 관리하도록 도와주는 안내서다. 임베디드에 경험이 많지 않은 프로그래머라도 이 책에서 설명하는 보드들의 실제 예제를 통해 임베디드 주변 장치 사용법을 빠르게 익힐 수 있고, 보드마다 비슷하지만 조금씩 다른 사용법을 비교해 가면서 사용법을 배울 수 있다. 또한 예제들은 임베디드 환경에서 최신 리눅스 커널 버전과 데비안/우분투 배포판을 사용하고 있으며, C나 배시, 파이썬 등을 사용해 주변 장치를 다루는 방법을 쉽게 설명하고 있다.
번역하는 도중 이해가 안 되는 부분이나 잘못된 부분들은 저자와 수 차례 메일을 통해 논의를 하면서 원서의 정오표를 수정했다. 아무쪼록 독자들이 임베디드 시스템을 쉽게 다루는 데 도움이 되길 바란다. 한창 열심히 크고 있는 아들 민우가 이 책을 보면서 엄마 은정을 위한 IoT 기기를 만들어줄 수 있는 날을 기다려본다.

옮긴이 소개

정병혁

고려대 컴퓨터학과와 동 대학원 네트워크 연구실을 졸업했다. 지금은 임베디드 환경에서 와이파이 드라이버 및 임베디드 애플리케이션 개발 및 유지보수를 하고 있다. LG 전자에서 DLNA 및 미디어 프레임워크를 개발했고, 브로드컴(Broadcom)에서 와이파이 엔지니어(WIFI engineer)로 활 동했다. 임베디드 환경에서의 RTOS, Media, WIFI, Driver에 관심이 많다.

목차

목차
  • 1장. 개발 시스템 설치
  • 2장. 시스템 콘솔
  • 3장. C 컴파일러와 디바이스 드라이버, 유용한 개발 비법
  • 4장. 스크립트를 사용한 빠른 프로그래밍과 시스템 대응
  • 5장. 임베디드 OS 설치
  • 6장. 범용 입출력 신호 – GPIO
  • 7장. 시리얼 포트와 TTY 디바이스
  • 8장. USB
  • 9장. Inter-Intergrated Circuits – I2C
  • 10장. 시리얼 주변 장치 인터페이스 – SPI
  • 11장. 1-Wire - W1
  • 12장. 이더넷 네트워크 디바이스
  • 13장. 무선 네트워크 디바이스 – WLAN
  • 14장. 제어기 영역 통신망
  • 15장. 사운드 디바이스 – SND

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안