규칙으로 배우는 임베디드 시스템 : CPU 이론 및 펌웨어 개발 규칙 (개정증보판)

규칙으로 배우는 임베디드 시스템 : CPU 이론 및 펌웨어 개발 규칙 (개정증보판)

$20.06
저자

장선웅

1999년도충남대학교메카트로닉스학과를졸업했다.이후반도체팹리스업체에서18년동안엔지니어로근무하면서,특허청장표창을받은이력이있다.

목차


I.CPU기초이론
1.CPU일반
1.1.CPU의구조및동작
1.1.1.CPU의구조및기능
1.1.2.CPU의동작단계
1.2.명령어구조와실행파일
1.2.1.명령어구조로보는RISC/CISCCPU구조
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(MicroControllerUnit)
2.1.GPIO
2.1.1.부가기능(AlternateFunction)
2.1.2.GPIO내부회로
2.2.직렬통신이론일반
2.2.1.7계층(Layer)
2.2.2.프로토콜(Protocol)
2.2.3.직렬(Serial)통신방식의구분
2.2.4.통신신호의SNR(SignaltoNoiseRatio)강화
2.2.5.통신오류검출방법
2.3.직렬통신
2.3.1.UART(UniversalAsynchronousReceiver&Transmitter)
2.3.2.I2C
2.3.3.SPI(Seri2.3.3.SPI(SerialPeripheralInterface)
2.4.ADC와DAC&PWM
2.4.1.ADC(AnalogToDigitalConverter)
2.4.2.DAC(DigitaltoAnalogConverter)
2.4.3.PWM(PulseWidthModulation)
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.LowLevel펌웨어
2.1.CPU의동작과바이너리파일생성과정
2.1.1.빌드(Build)과정
2.2.LowLevel프로그래밍실습
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.필드버스(FieldBus)일반
3.1.2.모드버스(Modbus)RTU
3.2.펌웨어설계
3.2.1.블록다이어그램
3.2.2.플로우차트
3.3.펌웨어구현및테스트
3.3.1.Modbus_io모듈소스구현
3.3.2.ModbusCOM모듈
3.3.3.Main함수
3.4.펌웨어취약점보완

4.기초알고리즘
4.1.[일반]채터링방지알고리즘
4.1.1.일정시간반복체크법
4.1.2.저주파필터를이용한채터링방지방법
4.2.자료구조론
4.2.1.데이터정렬
4.2.2.원형큐(CircularQueue)
4.3.수치해석
4.3.1.테일러급수(TaylorSeries)
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.디버깅/측정항목

출판사 서평

책속에서

C언어,어셈블리어등의프로그래밍언어를이용하여원하는동작을구현(코딩,프로그래밍)한텍스트파일(코드파일)을컴파일하여얻어지는CPU가해독할수있는이진기계어명령의집합을펌웨어(Firmware)라한다.이펌웨어를메모리에저장하면CPU는메모리에서기계어명령을읽어해석하고실행한다.이런일련의과정을이해하기위하여CPU가전원이들어온후펌웨어를동작시키는과정에대해살펴보도록할것이다.
---p.1

전기/전자시스템에는EMI/EMC와전기안전규격이있어그에맞는회로설계및PCB설계를통하여하드웨어의안전성을확보해야하는규칙이있다.마찬가지로,펌웨어측면에도안전성은매우중요한항목으로,안전한펌웨어는어떠한경우라도오동작을하지않는펌웨어를의미한다.ESD,EOS등의전기적충격에의한레지스터,메모리의값의손상이제품의동작의정지로이어진다면오히려안전하다할수있겠지만,펌웨어의오동작,예를들면모터를멈춰야하는시점에하드웨어메모리의손상으로플래그가모터를돌려야하는조건에들어온다면안전에문제가된다.특히,화재및감전,인체손상과같은심각한결과를유발할수있는가전기기에서의안전한펌웨어의구현은매우중요하다할수있다.

소프트웨어안전측면에도국제규격의안전성(Safety)을시험하는항목이있는데,가정용및이와유사한자동제어장치에대한시험규격인IEC60730-1이좋은예이며,여기에는노이즈또는전기충격,환경변화등에의해발생할수있는하드웨어손상에의한펌웨어오동작에대한시험항목들이있다.이시험항목에대해간단하게살펴보면,CPU의PC레지스터및기본레지스터의훼손에의한오동작,잘못된인터럽트에대한오동작,비트단위의메모리훼손시메모리에의한오동작,통신데이터훼손에의한오동작,디지털IO/ADC/DAC입력오류로인한오동작등이있을수있는데,이때기기는이오류를검출하여정지하거나리셋을통해다시시작하는방법등으로펌웨어가오동작을하지않도록해야한다.FailSafe는오류에대한예외처리를의미하는용어로이번장에서간단하지만일반적으로사용되는FailSafe기법에대해서살펴본다.
---p.152

만약,샘플링주기가100ms즉,10Hz라면처리할수있는최대주파수는10Hz/2=5Hz의주파수가된다.5Hz이상의아날로그신호가입력된다면,디지털필터에서는저주파로잘못해석되어처리되기때문에오류가된다.정리하자면,처리하고자하는신호의최대주파수보다2배이상빠른주기로샘플링해야한다는것을의미하며,이를나이퀴스트샘플링이론(NyquistSamplingTheorem)이라한다.나이퀴스트샘플링이론은측정하려는밴드제한(Band-Limit)된연속신호의최대주파수보다최소2배이상의샘플링주파수를가지면,주파수의간섭(Aliasing,에일리아싱)없이원본신호를완전히복원가능하다라고정의된다.이런이유로ADC에서잠깐보았던안티에일리아싱하드웨어필터가샘플링주파수/2이상의신호를하드웨어적으로미리제거함으로써,샘플링주파수/2이상의데이터가디지털데이터로변환되지못하도록하는용도이다.
---p.279