목차
제1장 임베디드 소프트웨어란? ... 1
   1 임베디드 소프트웨어는 대중적인 소프트웨어 ... 2
   2 임베디드 소프트웨어와 C 언어 ... 4
   3 임베디드 소프트웨어의 특징 ... 7
      3.1 하드웨어와의 관련 ... 7
      3.2 신뢰성 등의 품질 ... 8
      3.3 제약 ... 9
      3.4 크로스 플랫폼 ... 11
      3.5 이식성에 대한 고려 ... 13
   4 임베디드 소프트웨어를 구성하는 요소 ... 14
   5 임베디드 소프트웨어의 개발 공정 ... 16
제2장 임베디드 프로그램의 품질 ... 25
   1 C 언어의 일반적인 특징과 포인트 ... 26
      1.1 저 레벨의 처리를 기술할 수 있는 고급 언어 ... 26
      1.2 프리 포맷 ... 28
      1.3 선행처리기 ... 29
      1.4 포인터 ... 30
      1.5 데이터의 형변환 ... 31
      1.6 연산자의 우선순위 ... 31
   1.7 독자적인 확장 ... 32
   2 품질을 높이려면? 품질의 다양한 측면을 알자 ... 33
      2.1 품질 정의 ... 34
      2.2 기능성 품질 ... 34
      2.3 효율성 품질 ... 35
      2.4 신뢰성 품질 ... 37
      2.5 유지보수성 품질 / 이식성 품질 ... 38
      2.6 사용성 품질 ... 43
   3 품질을 높이려면? 견고한 설계를 하자 ... 45
      3.1 모듈간 구조를 설계하자 ... 45
      3.2 모듈 응집도를 생각하자 ... 47
      3.3 모듈 결합도를 생각하자 ... 48
      3.4 모듈 분할의 지침을 의식하자 ... 49
      3.5 인클루드 파일 분할의 지침을 의식하자 ... 51
      3.6 모듈의 내부 구조를 단순하게 설계하자 ... 53
   4 품질을 높이려면? 리뷰를 하자 ... 58
      4.1 왜 리뷰를? ... 58
      4.2 리뷰에서 체크하는 관점의 예 ... 63
      4.3 리뷰 결과에 대한 대처 ... 64
      4.4 리뷰에서 하면 안 되는 사항 ... 64
      4.5 정적 해석 도구는 리뷰를 대신할 수 있는가? ... 65
   5 품질을 높이려면? 좋은 코드를 만들자 ... 67
      5.1 좋은 코드란? ... 67
      5.2 C 언어에서 빠지기 쉬운 함정 ... 76
      5.3 좋은 코드 : 신뢰성에 대한 예 ... 86
      5.4 좋은 코드 : 효율성에 대한 예 ... 107
      5.5 좋은 코드 : 유지보수성 / 이식성에 대한 예 ... 121
   6 품질을 높이려면? 좋은 재사용을 하자 ... 140
      6.1 모듈 단위의 재사용 ... 140
      6.2 클래스 상속에 의한 재사용 ... 141
      6.3 복사와 붙여넣기에 의한 재사용 ... 142
      6.4 재사용과 지적 재산권 ... 142
   7 품질을 확인하려면? 테스트를 하자 ... 144
      7.1 테스트의 진행 방법 ... 144
      7.2 커버리지와 핀포인트 ... 150
      7.3 모듈 단독 테스트 ... 150
      7.4 모듈 결합 테스트(함수의 결합) ... 158
      7.5 상태 천이 테스트 ... 164
      7.6 테스트하기 쉬운 프로그램을 만들자 ... 165
   8 품질을 높이려면? 원리를 알자 ... 167
   9 품질을 높이려면? 구성을 관리하자 ... 168
   10 품질을 높이려면? 변경을 관리하자 ... 170
   11 품질을 높이려면? 결함을 관리하자 ... 173
제3장 C 프로그램 실행의 내부 구조 ... 175
   1 CPU는 프로그램을 어떤 방식으로 실행시키는가? ... 176
   2 메모리와 C 프로그램 ... 178
      2.1 메모리 맵 ... 178
      2.2 스택 ... 180
      2.3 함수 호출 ... 182
      2.4 변수 배치 ... 182
      2.4 코드 배치와 포인터 ... 194
   2.5 I / O 포터 ... 196
   3 인터럽트 설정 ... 200
      3.1 인터럽트란? ... 200
      3.2 인터럽트 설정 ... 200
      3.3 인터럽트 처리의 전후에 필요한 소프트웨어 처리 ... 202
      3.4 다중 인터럽트와 인터럽트의 우선순위 ... 204
      3.5 인터럽트 처리를 기술할 때의 주의점 ... 209
   4 스타트업 루틴 ... 213
   5 컴파일과 링크 ... 216
      5.1 컴파일러가 하는 일 ... 216
      5.2 링키지 에디터가 하는 일 ... 232
      5.3 컴파일러를 믿지 마라? ... 236
   6 하드웨어와 친해지자 ... 239
      6.1 하드웨어에 대한 액세스는 어떻게 하는 것일까? ... 239
      6.2 프로그램에서 하드웨어에 액세스하는 방법 ... 244
      6.3 메모리 종류와 액세스 속도 ... 246
      6.4 입출력에 관한 회로 요소의 지식 ... 247
      6.5 하드웨어의 특성 ... 256
   7 리얼타임 운영체제 ... 263
제4장 임베디드 프로그램의 관용구 ... 269
   1 비트 제어 ... 270
   2 버퍼 제어 ... 280
   3 메모리 배치 ... 284
   4 포인터 ... 286
   5 포트로의 액세스 ... 290
제5장 임베디드 프로그램의 샘플 ... 293
   1 임베디드 프로그램 샘플의 사양 ... 294
      1.1 프로그램 사양 ... 294
      1.2 하드웨어 사양 ... 294
   2 프로그램 샘플 1 ... 296
   3 프로그램 샘플 2 ... 310
부록 : 추천 도서/URL ... 316
INDEX ... 319
닫기