저자

다니엘라카메라

여러산업계의임베디드시스템에대한소프트웨어설계및개발에서방대한경험을갖춘소프트웨어전문가이자연구원이다.현재는프리랜서소프트웨어개발자및트레이너로일하고있다.TCP/IP와전송프로토콜설계및최적화분야의세계적인전문가이며,이주제로20개이상의논문을썼다.리눅스커널을비롯한몇몇프로젝트에기여하고,IoT의무료및오픈소스소프트웨어사용을권장하는여러커뮤니티와조직에참여함으로써자유소프트웨어를지원한다.

목차

1장.임베디드시스템:실용주의적접근__도메인정의____임베디드리눅스시스템____저사양8비트마이크로컨트롤러____하드웨어아키텍처____도전과제이해하기____멀티스레딩__RAM__플래시메모리__인터페이스와주변장치____비동기식UART기반직렬통신____SPI____I2C____USB__연결시스템__레퍼런스플랫폼____ARM레퍼런스설계____Cortex-M마이크로프로세서__요약2장.작업환경과워크플로최적화__워크플로개요____C컴파일러____링커____빌드자동화____디버거____임베디드워크플로__GCC툴체인____크로스컴파일러____컴파일러컴파일____실행파일링크____바이너리포맷변환__타깃과의상호작용____GDB세션__검증____기능테스트____하드웨어도구____오프타깃테스트____에뮬레이터__요약3장.아키텍처패턴__환경설정관리____리비전제어____추적활동____코드리뷰____지속통합__소스코드구성____하드웨어추상화____미들웨어____애플리케이션코드__임베디드프로젝트의생애주기____프로젝트단계정의____프로토타입제작____리팩토링____API와문서__요약4장.부트업과정__인터럽트벡터테이블____시작코드____리셋핸들러____스택할당____장애핸들러__메모리레이아웃__부트코드빌드및실행____makefile____애플리케이션실행__다중부트단계____부트로더____이미지빌드____다중단계시스템디버깅____공유라이브러리__요약5장.메모리관리__메모리매핑____메모리모델과주소공간____코드구역____RAM구역____주변장치접근구역____시스템구역____메모리트랜잭션순서__실행스택____스택배치____스택오버플로____스택페인팅__힙관리____사용자정의구현____newlib사용____힙제한____다중메모리풀____일반적인힙사용오류__메모리보호유닛____MPU환경설정레지스터____MPU프로그래밍__요약6장.일반목적주변기기__인터럽트컨트롤러____주변장치인터럽트환경설정__시스템시간____플래시대기상태적용____클록환경설정____클록배분____SysTick활성화__일반타이머__범용I/O____핀환경설정____디지털출력____PWM____디지털입력____인터럽트기반입력____아날로그입력__워치도그__요약7장.로컬버스인터페이스__직렬통신소개____클록과심볼동기화____버스와이어링____주변장치프로그래밍__UART기반비동기직렬버스____프로토콜상세____컨트롤러프로그래밍____HelloWorld!____newlibprintf____데이터수신____인터럽트기반입출력__SPI버스____프로토콜상세____트랜시버프로그래밍____SPI트랜잭션____인터럽트기반SPI전송__I2C버스____프로토콜상세____클록늘리기____다중마스터____컨트롤러프로그래밍____인터럽트처리__요약8장.저전력최적화__시스템환경설정____하드웨어설계클록관리________전압제어____저전력운영모드____딥슬립환경설정____정지모드____대기모드____웨이크업간격__전력측정____개발보드__저전력임베디드애플리케이션설계____비지루프를슬립모드로대체____긴비활성기간동안의딥슬립____클록속도선택____전력상태전환__요약9장.분산시스템과IoT아키텍처__네트워크인터페이스____매체접근제어____이더넷____와이파이____저속무선개인영역네트워크(LR-WPAN)____LR-WPAN산업링크계층확장____6LoWPAN____블루투스____모바일네트워크____저전력원거리네트워크(LPWAN)____적절한네트워크인터페이스선택__인터넷프로토콜____TCP/IP구현____네트워크장치드라이버____TCP/IP스택구동____소켓통신____메시네트워크와동적라우팅__전송계층보안____보안소켓통신__애플리케이션프로토콜____메시지프로토콜____REST구조패턴____분산시스템(단일실패지점)__요약10장.병렬태스크와스케줄링__태스크관리____태스크블록____컨텍스트스위칭____태스크생성__스케줄러구현____슈퍼바이저호출____협업스케줄러____동시성과타임슬라이스____블록되는태스크____자원대기____실시간스케줄링__동기화____세마포어____뮤텍스____우선순위도치__시스템자원분리____권한수준____메모리세그먼테이션____시스템호출__요약11장.임베디드운영체제__실시간애플리케이션플랫폼____FreeRTOS____ChibiOS__저전력IoT시스템____ContikiOS____RiotOS__POSIX호환시스템____NuttX____Frosted__안전한임베디드시스템의미래____프로세스분리(Tock)__요약

출판사 서평

★이책에서다루는내용★

■임베디드상품의설계및정의단계에참여
■ARMCortex-M마이크로컨트롤러를위한코드작성법
■임베디드개발실험환경구축및워크플로최적화
■메모리안전코드작성
■통신인터페이스이면의아키텍처이해
■IoT영역에연결및배포된설계및개발패턴이해
■멀티태스크병렬실행패턴과실시간운영체제이해

★이책의대상독자★

대부분의내용은임베디드시스템에대해배우고자하는다른분야의경험을갖춘소프트웨어개발자및설계자를대상으로한다.
초심자나경험이부족한임베디드프로그래머는특정개발영역으로지식을확장할수있다.
숙련된임베디드소프트웨어엔지니어들은이책에서제기된논의점,특히차세대임베디드시스템을위한안전성,보안연결,그리고에너지효율성에대한영감을얻을수도있다.

★이책의구성★

1장'임베디드시스템:실용주의적접근'마이크로컨트롤러기반임베디드시스템에대해소개한다.
2장'작업환경과워크플로최적화'사용되는도구및개발워크플로를설명한다.
3장'아키텍처패턴'협업개발과테스트를위한계획및개발방법론을다룬다.
4장'부트업과정'임베디드시스템의부트절차,부트단계및부트로더에대해분석한다.
5장'메모리관리'메모리관리를위한최적의전략을제시한다.
6장'범용주변장치'GPIO핀과기타일반내장주변장치에대한접근을설명한다.
7장'로컬버스인터페이스'직렬버스컨트롤러(UART,SPI,I2C)의통합으로독자를안내한다.
8장'저전력최적화'에너지효율시스템의전력소모를줄이는데이용가능한기술을살펴본다.
9장'분산시스템과IoT아키텍처'분산및연결된시스템을구축하기위해요구되는사용가능한프로토콜과인터페이스를소개한다.
10장'병렬태스크와스케줄링'실시간작업스케줄러의구현으로멀티태스킹운영체제의인프라를설명한다.
11장'임베디드운영체제'구현된안전성과보안메커니즘에초점을두고,임베디드세계에서이용가능한오픈소스운영체제를알아본다.