“이 책을 읽는 가장 좋은 방법은 소설책 읽듯이 반복하여 읽어 기초 이론과
시스템 개발 규칙 간의 연관관계에 대해 이해하는 것입니다.”
CPU(Central Processing Unit)는 목표하는 동작을 수행하기 위해 명령을 읽고 해석하여 처리하는 중앙 처리 장치로 정의된다. 수동 소자, 능동 소자와 반도체 IC. 특히 플립플롭 같은 메모리 소자들을 모두 이용한 회로를 하나의 패키지에 집적하여 만들어진 IC가 CPU이며, 집적회로의 최고봉이라 할 수 있다.
CPU의 사용은 하드웨어만으로 설계된 시스템에 비하여 소프트웨어만 변경함으로써 시스템의 구현 및 수정을 쉽게 할 수 있다는 최대의 장점으로 대부분의 전기/전자 시스템에 사용되므로 구조 및 동작에 대해 알아 두어야 한다. 특정 CPU를 지정하여 자세히 알아보는 것도 충분히 의미가 있겠지만, 여기서는 CPU의 일반적인 구성 요소들과 동작에 대해서 살펴봄으로써, 사용하게 될 CPU의 종류가 바뀌더라도 쉽게 접근할 수 있는 능력 배양을 목표로 한다.
Contents
I. CPU 기초 이론
1. CPU 일반
1.1. CPU의 구조 및 동작
1.1.1. CPU의 구조 및 기능
1.1.2. CPU의 동작 단계
1.2. 명령어 구조와 실행 파일
1.2.1. 명령어 구조로 보는 RISC/CISC CPU 구조
1.2.2. CPU의 동작과 실행 바이너리 파일
1.3. CPU동작을 위한 주변 하드웨어
1.3.1 전원 (Power)을 위한 레귤레이터
1.3.2. 클럭 (Clock)
1.3.3. 메모리 (Memory)
1.3.4. CPU 버스 구조
1.3.5. 리셋(Reset)
1.4. 리셋 후 펌웨어 부팅 과정
1.4.1. 리셋 벡터
1.4.2. Reset_Handle
1.5. 인터럽트
1.5.1. 인터럽트의 동작
2. MCU(Micro Controller Unit)
2.1. GPIO
2.1.1. 부가 기능 (Alternate Function)
2.1.2. GPIO 내부 회로
2.2. 직렬 통신 이론 일반
2.2.1. 7 계층(Layer)
2.2.2. 프로토콜(Protocol)
2.2.3. 직렬 (Serial) 통신 방식의 구분
2.2.4. 통신 신호의 SNR(Signal to Noise Ratio) 강화
2.2.5. 통신 오류 검출 방법
2.3. 직렬 통신
2.3.1. UART (Universal Asynchronous Receiver & Transmitter)
2.3.2. I2C
2.3.3. SPI (Seri2.3.3. SPI (Serial Peripheral Interface)
2.4. ADC와 DAC&PWM
2.4.1. ADC(Analog To Digital Converter)
2.4.2. DAC (Digital to Analog Converter)
2.4.3. PWM(Pulse Width Modulation)
2.5. MCU 선택의 고려사항
II. 시스템 개발 프로세스
III. 펌웨어 개발 규칙
1. 펌웨어의 설계 및 구현 규칙
1.1. 펌웨어의 설계
1.1.1. HAL 구조 설계
1.1.2. 데이터 취득 및 제어 방식
1. 1.3. 펌웨어 설계 도구
1.2. 펌웨어의 구현 전략
1.2.1. 시스템에 맞는 컴파일 환경 설정
1.2.2.가독성을 위한 규칙
1.2.3. 하드웨어 접근 코딩
1.3. 펌웨어의 안전성
1.4. 펌웨어의 성능
1.4.1. 알고리즘 구현
1.4.2. 메모리 정렬 (Align)
1.4.3. 매크로와 Inline 함수의 사용
1.4.4. 실수 사용의 고려사항
1.4.5. 테스크의 병렬 처리
1.4.6. 기타 성능 규칙
1.5. 펌웨어의 양산 및 유지보수
2. Low Level 펌웨어
2.1. CPU의 동작과 바이너리 파일 생성 과정
2.1.1. 빌드 (Build) 과정
2.2. Low Level 프로그래밍 실습
2.2.1. 소스 파일 생성
2.2.2. 링커 스크립트 작성 .
2.2.3. Startup 코드 작성
2.2.4. Main() 함수 작성
2.2.5. Makefile 작성
2.2.6. 컴파일로 컴파일로 이진 바이너리 파일 생성
2.2.7. [ 참고 ] ELF 파일에서 정보 얻기
3. 펌웨어 설계 및 구현 실습
3.1. 모드버스(Modbus) RTU 프로토콜
3.1.1. 필드 버스 (Field Bus) 일반
3.1.2. 모드버스(Modbus) RTU
3.2. 펌웨어 설계
3.2.1. 블록 다이어그램
3.2.2. 플로우 차트
3.3. 펌웨어 구현 및 테스트
3.3.1. Modbus_io 모듈 소스 구현
3.3.2. Modbus COM 모듈
3.3.3. Main 함수
3.4. 펌웨어 취약점 보완
4. 기초 알고리즘
4.1. [일반] 채터링 방지 알고리즘
4.1.1. 일정 시간 반복 체크 법
4.1.2. 저주파 필터를 이용한 채터링 방지 방법
4.2. 자료 구조론
4.2.1. 데이터 정렬
4.2.2. 원형 큐(Circular Queue)
4.3. 수치 해석
4.3.1. 테일러 급수 (Taylor Series)
4.3.2. 연립 방정식의 해
4.3.3. 방정식의 근
4.3.4. 보간법 (Interpolation)
4.3.5. 수치 미분
4.3.6. 수치 적분
4.4. 디지털 신호 처리(DSP)
4.4.1. 샘플링 샘플링 주파수
4.4.2. 저주파 통과 필터
4.4.3. 고주파 통과 필터
IV. [참고] 디버깅
1. 디버깅 절차
2. 측정 장비 및 디버깅 예
2.1. 전기 신호 측정 장비
2.2. 디버깅/측정 항목
Author
장선웅
1999년도 충남대학교 메카트로닉스학과를 졸업했다. 이후 반도체 팹리스 업체에서 18년 동안 엔지니어로 근무하면서, 특허청장 표창을 받은 이력이 있다.
1999년도 충남대학교 메카트로닉스학과를 졸업했다. 이후 반도체 팹리스 업체에서 18년 동안 엔지니어로 근무하면서, 특허청장 표창을 받은 이력이 있다.