이 상품은 구매 후 지원 기기에서 예스24 eBook앱 설치 후 바로 이용 가능한 상품입니다.
|
1부. 고성능 임베디드 시스템 기초
1장. 고성능 임베디드 시스템 설계 __기술 요구 사항 __임베디드 시스템 요소 ____전원 ____시간 축 ____디지털 처리 ____메모리 ____소프트웨어와 펌웨어 ____특수 회로 ____환경으로부터 입력 ____환경으로 출력 ____네트워크 통신 ____사물인터넷 __실시간 동작 ____주기적 동작 ____이벤트 기반 동작 ____실시간 운영체제 __임베디드 시스템에서의 FPGA ____디지털 논리 게이트 ____플립플롭 ____FPGA 요소 ____FPGA 합성 ____하드웨어 설계 언어 ____임베디드 시스템 설계에서 FPGA 사용의 장점 ____자일링스 FPGA 및 개발 도구 __요약 2장. 세계를 감지하기 __기술 요구 사항 __수동 선서, 능동 센서, 스마트 센서의 개요 __아날로그-디지털 변환기 적용 __임베디드 시스템이 사용하는 센서 유형 ____빛 ____온도 ____압력 ____습도 ____유체 흐름 ____힘 ____초음파 ____오디오 ____자기 ____화학 ____이온화 방사선 ____레이더 ____라이다 ____비디오와 적외선 ____관성 ____GPS __센서와의 통신 ____GPIO ____아날로그 전압 ____I2C ____SPI ____CAN 버스 ____무선 __센서 데이터 처리 __요약 3장. 실시간 동작 __기술 요구사항 __실시간의 의미 __실시간 임베디드 시스템의 속성 ____다중 작업 수행하기 ____비율 단조 스케줄링 __주요 RTOS 기능 및 과제 이해 ____뮤텍스 ____세마포어 ____큐 ____이벤트 플래그 ____타이머 ____동적 메모리 할당 ____교착상태 ____우선순위 역전 __많이 사용되는 실시간 운영체제 ____embOs ____FreeRTOS ____INTEGRITY ____Neutrino ____μc/OS-III ____VxWorks __요약 2부. 고성능 임베디드 시스템 설계 및 구축 4장. FPGA 프로그램 개발 시작하기 __기술 요구사항 __실시간 임베디드 시스템 설계에서 FPGA 사용 ____블록 램과 분산 램 ____FPGA 입출력 핀과 관련 기능 ____전문 하드웨어 자원 ____프로세서 코어 __FPGA 0구현 언어 ____VHDL ____Verilog ____블록 다이어그램 ____C/C++ __FPGA 개발 과정 ____시스템 요구사항 정의하기 ____FPGA에 기능 할당하기 ____필요한 FPGA 기능 식별하기 ____FPGA 설계 구현하기 __첫 FPGA 프로젝트 개발 ____프로젝트 설명 ____Vivado 도구 설치하기 ____프로젝트 만들기 ____VHDL 소스 파일 만들기 ____로직 동작 테스트하기 ____입출력 신호 정의하기 ____최상위 VHDL 파일 만들기 ____FPGA 비트스트림 합성 및 구현하기 ____비트스트림을 보드에 다운로드하기 ____비트스트림을 탑재된 플래시 메모리에 프로그램하기 __요약 5장. FPGA로 시스템 구현하기 __기술 요구사항 __FPGA 컴파일 과정 ____설계 엔트리 ____로직 합성 ____설계 최적화 ____상위 수준 합성 ____최적화와 제약사항 __FPGA 구현에 최적인 알고리듬 유형 ____고속 데이터 스트림을 처리하는 알고리듬 ____병렬 알고리듬 ____비표준 데이터 크기를 사용하는 알고리듬 __오실로스코프 FPGA 프로젝트 시작 ____프로젝트 설명 ____기본 Vivado 프로젝트 __요약 6장. KiCad를 이용한 회로 설계하기 __기술 요구사항 __KiCad 소개 __KiCad 기본 절차 ____회로 부품 배치 및 연결 ____부품 심볼 생성 __프로젝트 회로도 다이어그램 개발 ____텍스트 주석 추가 ____신호 레이블 추가 ____전역 레이블 추가 ____차동 신호 쌍 생성 ____외장 연결 생성 ____심볼 주석 및 전기 규칙 확인 __PCB 레이아웃 만들기 __회로기판 프로토타입 만들기 __요약 7장. 고성능 디지털 회로 만들기 __기술 요구사항 __회로 기판 조립 도구 및 과정 ____광학 확대 ____핀셋 ____플럭스 ____땜납 ____정전기 보호 ____수작업 납땜 ____솔더 윅 ____솔더 페이스트 애플리케이션 ____리플로우 납땜 ____조립 준비 및 부품 배치 __리플로우 납땜과 수작업 납땜 ____리플로우 납땜 ____수작업 납땜 __조립 후 보드 세척 및 검사 ____플럭스 제거 ____조립 후 시각적 검사 ____전기적 단락 검사 __요약 3부. 실시간 펌웨어 구현 및 테스트 8장. 처음으로 보드 브링업하기 __기술적 요구사항 __전원 켜기 준비 ____기판 전원 공급 __회로 기본 기능 검사 ____기판 전원 공급 검사 ____아날로그 증폭기 검사 ____ADC 검사 __문제 발생 시 회로 수정 ____PCB 트레이스 절단 ____솔더 점퍼와 점퍼 와이어 설치 ____부품 제거 ____부품 추가 __FPGA 로직 추가 및 I/O 신호 검사 ADC 인코더 클럭과 1KHz 보정 신호 생성 __요약 9장. 펌웨어 개발 과정 __기술 요구사항 __FPGA 알고리듬 설계 및 구현 ____디지털 오실로스코프 시스템 개요 ____직병렬 변환기 추가 ____FIFO 버퍼 추가 ____AXI 버스 인터페이스 추가 ____MQTT 프로토콜 추가 __코딩 스타일 ____이름 규칙 ____코드 내 주석 ____리터럴 숫자 값 피하기 ____괄호와 들여쓰기, 세로 간격 ____가독성과 정확도에 우선순위 두기 ____어설픈 최적화 피하기 ____구현 정의된 동작 피하기 ____무조건 점프 피하기 ____식별자 범위 최소화 ____상수 항목은 상수로 표현하기 ____코드 자동 포맷팅 __소스코드 정적 분석 ____소스코드 정적 분석의 의미 ____정적 소스 분석 도구 ____정적 코드 분석을 효과적으로 사용하기 ____가장 중요한 메시지부터 시작하기 ____분석기 출력 메시지 해결하기 ____일반적인 소스 코드 분석기 메시지 __소스코드 버전 제어 ____Git을 사용한 버전 제어 ____테스트 주도 개발 ____임베디드 시스템에 적용되는 TDD __요약 10장. 임베디드 시스템 테스트 및 디버깅 __기술적 요구사항 __시스템 수준 테스트 설계 ____요구사항 주도 테스트 ____수행 가능한 조건과 수행 가능하지 않은 조건에서 테스트 ____단위 테스트와 기능 테스트 ____음성 테스트와 침투 테스트 ____시뮬레이션된 환경에서 테스트 ____반복 가능한 테스트 결과 얻기 ____테스트 계획 개발 __테스트 수행 및 결과 기록 ____수집할 데이터 식별 ____테스트 할 시스템 구성 ____테스트 절차 수행 ____테스트 결과에 관한 빠른 평가 ____필요 시 테스트 반복 ____기존 코드의 회귀 테스트 __포괄적인 테스트 범위 보장 ____요구사항 추적성 매트릭스 ____코드 적용 범위 추적 ____어느 수준의 테스트가 충분한지 정의하는 기준 설정 __효과적인 디버깅 기법 ____문법 혹은 컴파일 에러 및 경고 처리 ____정적 코드 분석과 단위 테스트 사용 ____문제를 명확히 정의하고 재현하기 ____입력이 올바른지 결정하기 ____시스템에 대한 가시성 확보 방법 찾기 ____이진 탐색 디버깅 과정 사용 ____기능의 일부를 임시로 제거하기 ____문제를 나타내는 가장 작은 프로그램 만들기 __고성능 임베디드 시스템 개발의 모범사례 요약 ____테스트를 위한 설계 ____개선을 위한 여지 남기기 ____미래의 기능을 고려한 하드웨어 설계 ____현재 필요한 코드만 개발하기 ____철저한 버전 제어 유지하기 ____코드 개발 중에 단위 테스트 개발하기 ____기능이 구현되는 시점부터 시스템 수준 테스트 시작하기 __요약 |
Jim Ledin
|
◈ 이 책에서 다루는 내용 ◈
◆ 실시간 임베디드 시스템과 센서의 기본 ◆ FPGA의 기능과 개발 도구 사용법 ◆ 디지털 회로 설계와 KiCad를 사용한 PCB 레이아웃 ◆ 저렴한 비용으로 고속 회로 보드 프로토타입 제작 ◆ FPGA용 고성능 알고리듬 설계 및 개발 ◆ C를 이용한 견고하고 안정적이며 효과적인 펌웨어 개발 ◆ 임베디드 디바이스 하드웨어와 펌웨어의 완전한 테스트 및 디버깅 ◈ 이 책의 대상 독자 ◈ 소프트웨어 개발자나 하드웨어 엔지니어, 사물인터넷 개발자, 고성능 임베디드 시스템 개발 과정을 이해하고자 하는 이들을 위한 책이다. FPGA 개발의 기본 및 C나 C++로 작성된 펌웨어 개발에 관심이 있다면 도움이 될 것이다. C 언어와 디지털 회로, 전자 부품 납땜(솔더링)등의 기초를 알고 있어야 한다. ◈ 이 책의 구성 ◈ 1장, ‘고성능 임베디드 시스템 설계’에서는 임베디드 시스템 구조를 이루는 요소를 소개하고 여러 임베디드 애플리케이션에서 공통적으로 사용하는 주요 시스템 기능을 소개한다. 2장, ‘세계를 감지하기’에서는 다양한 임베디드 애플리케이션에서 사용되는 센서의 이론 및 구현을 소개한다. 3장, ‘실시간 동작’에서는 임베디드 시스템이 센서나 다른 자원들로부터 측정된 입력에 대해 실시간 응답을 생성해야 할 필요성을 다룬다. 실시간 운영체제(RTOS)의 개념 및 주요 기능을 소개하며, 실시간 애플리케이션에서 멀티태스킹을 구현할 때 흔히 겪는 어려움도 알아본다. 4장, ‘FPGA 프로그램 개발 시작하기’에서는 실시간 임베디드 시스템에서 FPGA 장치의 효과적인 사용법이 무엇인지 설명한다. 표준 FPGA에 포함된 기능적 요소를 알아본다. HDL(하드웨어 명세 언어)와 블록 다이어그램 기법, C나 C++ 같은 자주 사용되는 소프트웨어 프로그래밍 언어를 포함하는 다양한 FPGA 설계 언어를 소개한다. 5장, ‘FPGA로 시스템 구현하기’에서는 FPGA를 사용한 임베디드 디바이스 설계 및 구현 과정을 깊게 살펴본다. 6장, ‘KiCad를 이용한 회로 설계하기’에서는 훌륭한 전자 설계 및 자동화 도구 오픈소스인 KiCad를 소개한다. KiCad을 통해 회로도를 사용한 회로를 설계하고 해당 인쇄 회로 기판 레이아웃을 개발한다. 7장, ‘고성능 디지털 회로 만들기’에서는 표면 실장(surface mount)과 삽입 실장(through hole) 전자부품을 사용한 프로토타입 고성능 디지털 회로 조립 관련 과정과 기법을 설명한다. 그리고 솔더링 스테이션과 확대경, 현미경, 작은 부품을 처리하기 위한 핀셋 등의 도구들을 추천한다. 8장, ‘처음으로 보드 브링업하기’에서는 이미 설계 및 구성, 청소, 검사된 인쇄 회로 기판에 전원을 공급하는 방법 즉, 악명 높은 기초 안전성 검사(스모크 테스트) 수행하는 법을 다룬다. 9장, ‘펌웨어 개발 과정’에서는 기본 동작하는 회로 보드에 아날로그-디지털 변환기(ADC)와의 통신을 포함한 FPGA 알고리듬의 남은 주요 과정들을 다루며, 마이크로 블레이즈 프로세서 펌웨어를 개발한다. 10장, ‘임베디드 시스템 테스트 및 디버깅’에서는 이제 임베디드 시스템 개발이 거의 완성됐으므로 시스템이 동작할 환경에서 완전한 테스트 방법을 설명한다. 또한 권장하는 디버깅 과정에 관한 논의와 고성능 임베디드 시스템 개발의 모범 사례를 살펴본다. |