728x90

1) CPU 메모리맵

메모리맵

- 메모리의 주소에 대한 정보

- 메모리 : RAM, ROM, 레지스터

 

레지스터

- CPU에 장착된 디바이스 제어용으로 만든 하드웨어

- 주소가지며, 바이트단위 접근, RW속성을 가져 메모리와 거의 동일

- 데이터 저장이아닌 디바이스 제어용

- 펌웨어 코드는 관련 레지스터 제어로 가능

 

LED 켜고 끄기

- GPIO로 제어

- LED가 연결된 핀을 찾아 해당 핀을 GPIO 관련 레지스터를 출력으로 바꿈

- 출력값을 결정하는 레지스터를 찾아 low로 할지 high 할지 결정

ex) 입출력 설정 레지스터 : 0x2000

    출력 값 레지스터 : 0x2001

*(0x2000) = 0b00000001;

*(0x2001) = 0b00000001;

 

메모리맵

- 레지스터를 통해 디바이스 제어시 반드시 필요

메모리 맵 예시

 

 

프로그램 메모리

-실행 코드가 저장된 메모리

- 128KB 크기의 플래시 메모리

- 16비트 단위 어드레싱 구조 -> 주소값 1개에 16비트 데이터를 저장하고 읽을수 있음

- $ : 16진수/ 0000 : 주소값 -> 16진수 0000부터 FFFF까지 주소값(=64K)을 가지고 한 주소마다 16비트(2byte)가 저장

프로그램 메모리

 

데이터 메모리

- 0000 ~ 001F는 32개 일반 레지스터

- 0020부터 005F 까지는 64개의 IO 레지스터

- 0060부터 10FF까지 160개의 확장 IO 레지스터

- 0100부터 10FF까지 4KB 크기의 내부 SRAM

- 8비트 단위 어드레싱 구조를 가지고 있어 한 주소값에 8비트 저장

 

데이터 메모리

EEPROM

- 0000 ~ 0FFF 주소값 가짐 -> 4KB

EPPROM

 

레지스터 맵

1. 일반 레지스터(32개) 

   - 주소값 : 0000 ~ 001F

   - ALU에 연결되어 산술/논리 연산에 사용됨

2. IO 레지스터(64개)

   - 주소값 : 0020~005F

   - CPU 내부 디바이스 제어

3. 확장 IO 레지스터(160개)

   - 주소값 : 0060 ~ 00FF

   - CPU 내부 디바이스 제어

 

레지스터 서머리

- 레지스터 주소 중 괄호 안 주소값이 유효한 값

- 모든 레지스터는 8비트 크기 가짐.

레지스터 주소

 

300x250
728x90

SoC

- System On Chip

- 하나의 집적회로에 집적된 컴퓨터나 전자 시스템 부품

 

SoC 구성

- 1개 이상 마이크로 컨트롤러 또는 마이크로 프로세서 코어 포함

- 디지털, 아날로그, RF 기능 등이 단일 칩에 구현

- 각 모듈을 IP(Intellectual Property)로 별개 블록을 조립하여 하나의 Chip으로 구성

- System on Board : 보드상에 구현

- 구성 블록 : GPIO, ADC, RTC, Serial port, ARM Core, Timer, RAM, USB, JTAG

 

어플리케이션 프로세서

- 각종 어플리케이션에 사용되는 칩으로 스마트폰, 태블릿 PC에 이용

- CPU, GPU 장착으로 그래픽 연산 가능

 

CISC

- Complex Instruction Set Computer

- 복잡한 명령체계를 가진 CPU

- CPU Core 개발자들이 필요에 따라 명령어를 계속 추가

- 명령어 길이와 개수가 길어져 해석하고 실행하는데 오랜 시간이 걸림

 

RISC

- Reduced Instruction Set Computer

- 실제 쓰이는 명령어는 얼마되지 않아 적은 수의 명령어만으로 구성한 집합

- 복잡한 명령어보다 간단한 명령어의 조합이 유리

- 간단한 하드웨어 구조로 저전력 구현에 유리

 

CISC 방식 CPU

- 인텔 x86

 

RISC 방식 CPU

- AVR, ARM, MIPS 등 대부분 임베디드 CPU

 

AVR 패밀리

- AVR은 Atmel 사의 CPU 시리즈

AVR 시리즈

MegaAVR과 TinyAVR

- ATmega8 : 작은 크기 프로그램에 적합

- ATmega128 : 범용적으로 가장 많이 사용

- AT90CAN128 : CAN 통신 분야에 사용

- AT90PWM38 : PWM 신호 사용시 활용

 

ATMega128

1) Core 특징

- RISC 타입의 하버드 구조

- 133개 명령어

- 1클럭 사이클에 1개 명령어 실행

- 16MHz 최대 동작주파수 => 16 MIPS(Million Instruction Per Second)

- 32개의 범용 레지스터와 주변 장치 제어 레지스터

 

2) AVR 코어

- ALU : 산술/논리연산 담당

- 32개의 8비트 범용 레지스터가 연결

- ALU와 범용 레지스터 -> 1클럭 1사이클로 1개 명령어 실행

- 32개 범용 레지스터 중 6개는 간접 주소 어드레스 용으로 사용

 -> 8비트 레지스터 2개 합쳐 16비트 레지스터로 간주

 -> 이 레지스터 조합을 어드레스로 간주. -> 각각 X/Y/Z 포인터 레지스터라 함

- 프로그램 카운터 PC

 현재 수행할 메모리 위치를 갖고있는 레지스터. PC 확인하면 현재 어떤 레지스터가 실행되고 있는지 확인가능

 

ATmega128 Core 구조

 

플래시 프로그램 메모리

- 비휘발성 -> 전원이 없어도 저장 값이 변경되지 않음

- 소스 코드 컴파일 하여 나온 바이너리를 ISP나 JTAG으로 프로그램을 다운로드

  * ISP는 SPI 인터페이스를 이용

- 크기는 128KB으로 약 10,000회 읽고 쓰기 가능

 

ISP

- In System Programming

- Atmel에서 설계한 방식

- 간단한 ISP 다운로더를 이용한 인터페이스

- SPI 인터페이스는 대표적인 직렬 인터페이스로 칩간 통신에서 자주 사용됨.

 

3) 메모리 구조

1. 프로그램 메모리(명령어) - 플래쉬 메모리(128KB)

2. 데이터 메모리(SRAM) - 변수, 상수값

  -> 내부 SRAM, 외부 SRAM, EEPROM

 

(2) ATmega128 주변장치 종류

1) 주변 장치 종류

주변 장치

- 2개의 8비트 타이머/카운터

- 2개 16비트 타이머/카운터

- 실시간 타이머 카운터

- 6개 PWM 채널

- 출력 비교 모듈레이터 및 아날로그 비교기

- 10비트 AD 변환기

- TWI(Two-Wire Serial Interface) 직렬 인터페이스

- 2개 USART

- SPI 직렬 인터페이스

- 와치독 타이머(CPU가 동작하는지 검사하는)

 

2) GPIO

- General Purpose Input Output Port

- 범용 목적 입력,출력 핀(포트)

- 입력 : 외부 장치가 high or low 신호를 출력하면 그 핀에 해당하는 레지스터를 읽어 그 신호 레벨을 CPU가인지가능

- 출력 : 외부 장치가 해당 핀으로 연결 시 High나 Low 출력해서 보내기 가능

- 내부 레지스터 값을 조정하여 부가 기능 사용 가능

 

3) 기타 주변장치

1. 타이머/카운터

- 타이머 : 스탑워치. 시간 설정시 CPU 입력되는 기본 클럭 신호로 일정하게 알림. 최대 16MHz 클럭 신호 입력가능

- 카운터 : 숫자 세는 용도

- 프리스케일러 : 여러 클럭을 세팅하여 긴 시간을 잴 수 있음

- 2개 8비트 타이머/카운터 : 짧은 시간 체크

- 2개 16비트 타이머/카운터 : 긴 시간 체크

- 실시간 타이머/카운터 : 초단위 시간 체크

 

2. AD컨버터

- 아날로그 신호를 디지털로 바꿔주는 변환기

- 10비트 AD 컨버터는 아날로그 신호를 10비트 짜리 디지털 값(0~1023)로 변환 가능

AD 컨버터

 

3. 인터럽트 컨트롤러

- 인터럽트 : 중간에 끼어들기. 특정 조건에 의해 중간에 다른 일 수행하는것

 ex) CPU가 1초마다 LED on,off 하다가 버튼이 눌렸을때 인터럽트를 통해 버튼이 눌린것을 인지할수있음.

- 인트럽트 컨트롤러 : 인터럽트를 수행하게하는 하드웨어 모듈

- 폴링 : 인터럽트 반대 개념으로 계속 감시하는 방법. 비효율적임

- ATmega128은 35개의 인터럽트 기능 가짐

 

4. TWI 직렬 인터페이스

- TWI Two-wire Serial Interface

- 2개 선으로 칩과 칩 통신에 많이 사용됨

- I2C(inter-integrated Circuit)과 동일 개념

- Protocol이 간편하며 여러 칩 연결시 2개의 선으로 인터페이스 가능

- 주로 제어용으로 사용되며 저속이기 때문에 전용 HW없이 일반 GPIO로 구현가능

- 기본 100kbs, 400kbps Fast mode, 1Mbps Fast Mode Plus

 

ex) TWI 예시

- 마스터 : 마이크로 프로세서, 슬레이브 : ADC, DAC, 마이크로 프로세서

- SDA : 데이터 라인, SCL : 클럭라인

 

5. UART

- Uniersal Asynchronous Serial Receiver And Transmitter

- 범용 비동기 직렬 통신 컨트롤러

- 컴퓨터의 COM1, COM2, COM3, COM4와 연관된 통신 컨트롤러(포트)

- 많은 CPU와 PC 등에 기본 장착.

- UART 포트는 총 9개 신호선가짐

COM(UART) 포트

 

- TxD, RxD, GND 만 연결하면 통신 가능

- 외부 장치와 통신시 전압을 -12v ~ 12V까지 올려야함 -> MAX232 사용

<-> 같은 보드 내 장치와 통신시는 필요없음

ATmega128과 외부 UART 장치 간 비동기 모드 시리얼 통신

 

300x250
728x90

CPU 선정시 고려사항

- 몇 비트 인지

 -> 기준 : CPU가 처리하는 명령어 길이

 -> 명령어 길이는 성능에 큰 영향 -> 긴 비트 CPU 성능이 좋음

-CPU Core가 어떤것인가

 -> ARM, PowerPC, MIPS 인지

- CPU 동작 주파수

- ROM과 RAM은 어떻게 구성되어있는지

- 가격

- 컴파일러 등 개발환경

- 래퍼런스보드 평가키트는 무엇인고 가격이 얼마인가

 -> CPU 성능 검증 혹은 시재품 개발 전 소프트 웨어 개발시 사용

- 운영체제 필요 한지, RTOS는 어떤걸 지원하는가

=> 데이터 시트에서 자세히 설명함

 

(1) 데이터 시트 정의

1) 전자 부품 설명서

 데이터 시트

- 전자 부품 설명서

- 복잡한 전자부품의 설명법과 내부 구조를 자세히 설명

- 제조사에서 만들어 대부분 공개

- 비밀 유지를 위해 간단한 소개만함

 

2) 데이터 시트 내용

- 제조사

- 부품번호 : Part Number

- 부품 특징

- 응용 분야

- 핀 설명

- 전체적인 하드웨어 블록 설명

- 각 하드웨어 블록 설명

- 레지스터 설명

- 패키지 설명 : 전자 부품의 외형

- 전기적인 특성 : 부품의 동작

- 전원 관련 해설

- Errata : 전자 부품의 문제

 

1. 제조사 및 부품 번호

제조사

- 부품 만든 회사 이름

부품 번호

 - 제조사에서 관리하는 부품명

 - 제조사에서 작성하여 그 이름에 정보들을 담고있음

 - 부품 특성을 쉽게 이해할수있게 일정 규칙으로 만듦

 

ex) 미국 텍사스 인스투러먼트사의 7404 부품 데이터 시트

- 부품번호가 74로 시작 -> 74시리즈. 논리 회로 구성부품으로 널리 사용

- 7404는 인버터를 구현한 유명한 부품

- 첫페이지 오른쪽 상단 : 부품번호

- HEX INVERTERS : 칩의 기능 -> 16진수 인버터

텍사스 인스투르먼트사 7404 부품 데이터 시트

 

2. Description

- 부품의 개략적인 설명

- TI 74LS04의 Description : 6개의 독립적인 인버터

 

3. Ordering Information

- 구입/주문시 확인해야하는 사항

- 많은 부품 구입시 혼선을 없애기위해 확인해야할 사항 정리 -> 온도, 패키지, 포장 등

ex) ORDERABLE PART :SN7404N -> 동작온도 : 0 ~70도, PDIP-N 타입 패키지

- TOP-SIDE Marking : 부품 상단에 인쇄되어 있는 글씨. SN7404N이라 찍혀 나옴

Ordering Information
PDIP-N 타입 패키지

4. Logic Diagram

- 기능을 기호로 표시한 그림

- SN7404 : 6개의 인버터로 구성

- 1A라는 입력은 인버터를 거쳐 1Y가 되는것을 기호로 표시

로직 다이어그램

5. Schematic

- 부품 내부 회로도

- 04와 LS04, S04로 끝나는 부품들이 각기 다른 회로를 가지고 있어 이 회로를 해석해 어떤 기능을하는 부품인지 확인 가능

- Each gate : 6개의 게이트가 각각 다음 회로도 처럼 구성됨

Schematic

6. Absolute Maximum Rating

- 최대 전원 전압, 최대 입력 핀 전압, 보관할때 온도 범위

- 이 부품이 견딜수잇는 전압, 보관 온도 등 정보

 

Absolute Maximum Ratings

 

7. Recommended Operating Conditions

- 추천 동작 조건

- 최대, 최소, 조건밥

ex) SN7404의 Vcc(전원전압)

 - 최대 : 5.25V

 - 최소 : 4.75V

 - 표준 : 5V

 => 최대 전압을 5.25V 인가시 동작 보장 할수없음

Recommended Operation Conditions

8. Electrical Characteristics

- 전기적 특성

- 일정한 테스트 환경에서 측정되는 전압이나 전류값

- 제조사가 이 값들을 보장한다는걸 의미함

Electrical Characteristics

ATmega128 데이터 시트 분석

1) 데이트 시트 구성

1. 개요

데이터 시트

- 총 380페이지 -> 복잡함

- 제조사 : ATMEL

- 부품번호 : ATmega128A

- 설명 : 128K바이트 크기의 프로그래밍이 가능한 플래시 메모리를 가진 AVR 마이크로 컨트롤러

- 특징 Features

 -> ATmega 128 성능 특징 정리

 -> 총 133개 명령어를 갖는 RISC 구조 프로세서

 -> 128KB 플래시메모리, 4KB EEPROM, 4KB SRAM 등 가짐

 -> 디버깅할수있는 JTAG 지원, 주변장치 특징, 패키지 설명, 동작 전압과 동작 주파수 등 설명

ATmega 128 데이터 시트

2. 목차

- 필요한 부분위주로 찾아 쓰기

- CPU core부

- 메모리 부

- 내부 주요 블록 : 메모리, Clock, 파워 관리, 리셋, 인터럽트나 타이머 등

- 주변 장치 : SPI, UART, TWI 같은 직렬통신, ADC와 JTAG 등

- Electrical Characteristic

- Typical Chracteristic

- Register SUmmary

- Ordering Information

- Packagin Information

- Errata

데이터 시트 목차

2) 주요 블럭 분석

1. Pin Configuration

- ATmega128 ; 총 64개 핀

- 핀 번호 : 모서리 점 기준으로 반시계 방향

- 핀 이름 : 각 핀 기능 명시

ex) 63번 핀 - 핀 이름 : GND -> 접지 핀

    52번 핀 - 핀 이름 : VCC -> 전원 핀

    61번 핀 - 핀 이름 : PF0(GPIO핀) -> GPIO 중 F포트의 0번 핀

- 괄호 안 이름은 선택적 가능 기능

ex) PF0(ADC0) - ADC0 : 0번째 Analog To Digital Converter 핀

    * 선택할수 있는 Alternative Function

ATmega128 Pin Configuration

2. Block Diagram

- 칩 내부 구조 설명

- 외부로 나온 핀 종류

- 칩 내부 하드웨어 블록의 구성

- 칩 내부 하드웨어 블록의 연결

- 외부 핀 : PF0 ~ PF7 -> 이 핀들이 어떻게 연결되어있는지 볼 수 있음.

 PORTF DRIVER<->DATAREGISTER<->DATA DIR REGISTER

   -> PORTF DRIVER : GPIO로 동작하게하는 하드웨어 회로 자체

   -> DATA Register, DATA DIR Regiter : GPIO를 제어하는 레지스터

- ADC : 아날로그 - 디지털 변환 회로

  AVCC <-> AGND <-> AREF로 연결

- Program Counter, Stack Pointer, SRAM 등 칩 내부 레지스터나 메모리, ALU같은 중요한 하드웨어 블록이 어떻게 연결되어있는지 확인 가능

- 크리스탈 : Clock 공급하는 부품. XTAL1 핀 및 XTAL2핀과 연결

=> 칩의 전체적인 구성 연결에 대한 정보 제공

Block Diagram

 

3. AVR CPU Core

AVR CPU Core Block Diagram

- Data Bus 8-bit와 ALU, General Purpose Register가 연결

- ALU : 산술/논리 연산하는 CPU 핵심적인 부분

- ALU가 8비트 버스로 다른부분이 연결됨 -> CPU가 8비트 CPU

- Program Counter Register : 다음 명령어 주소를 가리킴

AVR CPU Core Block Diagram

4. 각 항목별 구성

I/O Ports(GPIO)

- 다루는 하드웨어 블록 제목

- 소개

- 하드웨어 블록에 대한 설명

- 추가 부분 설명

- 관련 레지스터 설명

I/O Ports(GPIO) 목차

5. 레지스터 보는법

CPU 제어 방법

- 레지스터를 통해 CPU 제어 가능

- 레지스터는 일반 메모리 처럼 어드레스 가지며 비트 별로 읽고 쓰기 가능

- 레지스터는 어떤 비트에 일정 값을 씀으로써 CPU 내부 하드웨어를 조정

- CPU 제어 = 레지스터 제어

 

포트A - 포트 A 데이터 레지스터

Register Summary

- 레지스터의 이름과 주소들을 알려줌

Register Summary

 

3) 기타 항목

1. Absolute Maximum Rating

- 부품이 견딜수 있는 최대 전압, 보관시 온도, 범위 등 명시

 

2. Instruction Set Summary

- ATmega 128 명령어 요약본

- 어셈블리 종류 : 산술/논리 연산 명령, 분기 명령, 데이터 전송 명령, 비트 연산 명령, 제어 명령

- nemonics : 명령어 구분하기 위한 짧은 이름

- Operand : 피연산자로 연산에 사용되는 값

- Description : 명령어 해설

- Operation : 명령 동작을 기호화한것

- Flags : 연산에 영향을 미치는 Status 레지스터 비트

- # Clock : 해당 명령에 수행되는 시간. 1이면 1개 클럭만 필요하다는 뜻

Instruction Set Summary

3. Ordering Information

ATmega128-16AU

- CPU 동작 주파수 : 16MHz

- 공급 전원 : 4.5 ~ 5.5V

- 패키지 : 64A

- 동작 가능 온도 : -40 ~ 85도

Ordering Information

패키지 종류

- 64A : 핀이 밖으로 나옴

- 64M1 : 아래로 패드가 나옴

300x250
728x90

반도체 발달

-> 집적회로의 칩 집적도 상승

- 복잡도를 가진 내장 기술 발달

- 칩의 소형화 -> 칩 핀 크기도 작고 많아지는 경향

- 반도체 칩 핀형태 = 패키지 -> 패키지 모양만으로 그 칩의 집적도를 알 수 있음

 

패키지 발달

1. DIP Dual In line Package 타입

2. TSOP Thin Small Outline Package 타입

3. PQFP Pastic Quad Flat Pack 타입

4. BGA 타입

 

 

회로도

- 전자, 전기 회로를 설계하고 분석하기 쉽게 그림으로 표현한것

- schematic, 전기 도면, 전자도면

- 보드 : 반도체 부품이나 저항, 콘덴서, 인덕터와 같은 수동 소자 부품,, 커넥터와 같은 부품들이 서로 연결된것

- 회로도 : 단순하게 표시한 표준 기호

 -> 회로의 부품을 나타내고 부품들간 연결 표시. 신호 연결을 표시

 

회로도 이용

- OrCAD 같은 툴로 작성

- 회로 설계, 인쇄 회로 기판 PCB 배치,  보드 유지 보수 등에 사용

- 실제 PCB의 실제 위치는 회로도에서 부품 연결 위치와 일치하지 않음

 

회로도 특징

- 핀과 핀의 연결 정보만 보유

- 보드상의 실제 위치나 연결 구조까지 나타내지는 않음

<-> 회로도를 바탕으로 실제 PCB 구현 가능

-> 이 작업을 "레이아웃", "아트웍"이라 부름

 

회로도 구성

1) 부품과 결선

전자 부품 내부

- 여러 전자부품과 PCB 인쇄 회로기판과 결합

 

회로도

- 여러 전자부품이 PCB 기판의 전류가 통하는 결선에 의해 어떻게 연결되는지 알려주는 지도

-> 기호를 이용하여 부품 단순화, 어떤 부품인지 한 눈에 알아보게 해줌

 

2) 부품 종류

전자 부품

- 전원부 : 전원 공급 및 접지 연결하는 부분

- 수동 소자 : 전력을 소비하거나 축적하거나 감쇠

- 능동 소자 : 작은 신호(전력,전압,전류 중 하나)를 입력하여 큰 신호를 출력

- 진동 소자 : 압전 효과를 이용한 수동 소자로 고주파 생성 혹은 필터로 사용

- 디지털 논리 게이트 : AND, NOR, NAND 등 조합하여 디지털 논리 회로 설계

- 집적 회로 칩 : AVR이나 ARM 과 같은 CPU를 포함한 여러 종류 소자들

 

커넥터

- 전원 커넥터

- 보드 커넥더

- 헤더핀

스위치

 

3) 회로도 기호

1. 전원 부

- DC 전원 : 회로 상에 VCC, VDD 이름으로 나타냄. 

전원

- 접지 : 다음 기호 중 하나 사용

접지

2.. 수동 소자

- 이름 시작 문자에 따라 구분 가능. 저항 R, 인덕터 L, 캐패시터 C로 시작

- 어래이 저항 : 여러 저항이 같은 값으로 여러개 붙은 소자

어래이 저항

- 가변 저항 : 저항을 바꿀수있음

가변 저항

-인덕터

인덕터

- 캐패시터 

캐패시터

3) 진동 소자

- 크리스탈

크리스탈

- 오실레이터 : 크리스탈과 진동에 필요한 소자를 내장하여 전원과 접지를 추가한 부품

오실레이터

4) 능동 소자

- 다이오드

다이오드

- 트랜지스터 : BJT와 MOSFET으로 나뉨. BJT는 화살표 방향에 따라 구분

BJT 트랜지스터

- 연산 증폭기 : 4개 핀을 가짐. 하나나 여러 연산증폭기가 들어가 하나의 온전한 칩을 형성

연산 증폭기

5) 디지털 논리 게이트

 

6) 집적 회로 칩 : CPU, MCU

- 집적회로 칩 : CPU 처럼 독립된 칩

- 내부는 능동소자와 수동소자의 조합으로 구성

- 핀수나 배열들이 다양함

집적회로 칩

- U1-A, U1-B 처럼 하나의 칩을 나눠서 표현하기도 함

하나의 칩을 나눈 표현

7) 헤더와 커넥터

- J나 CON으로 시작

1열 10행짜리 헤더
2열 5행짜리 헤더
실제 보드 상 2열 5행 헤더

8) 스위치

- SW 이름으로 시작

 

4. 부품 연결

1) 와이어로 연결

- 부품 연결 -> 하나의 모듈 완성

* 연결선 : 와이어

- 수동 소자들은 서로 자유롭게 연결 가능

- 직접회로 칩들의 핀들은 특정 기능을 수행하기 위해 설계됨 -> 핀 기능은 데이터 시트에 설명됨

회로도 일부

- VCC 핀 : 전원 공급해야하는 핀. 전원부와 연결해야함

- GND 핀 : 접지와 연결해야함.

 

AVR CPU 해석

(1) 전체 회로 구성 분석

1. 주요 부품확인

 - 대개 U라는 이름으로 시작하여 배치

  -> U1, U2 부터 찾아서 확인

 - AVR CPU 회로도의 예시로 분석

   -> 주요 부품으로 AVR의 배치위치를 확인

2. 전원부 구성 파악

  - 전원 볼트값

  - 전원부 소자들의 부품 종류

  - 최대 전류 값 파악

  - 전원 커넥터 종류 파악

3. 진동 소자부 구성

  - CPU가 장착된 회루에는 32.768kHz의 RTC용 크리스탈, CPU를 동작시키는 메인 진동소자가 장착

4. 메모리부

 - CPU에 따라 내부에 ROM과 RAM을 모두 가지는 경우 외부에 메모리가 장착되지 않을 수 있음

 - 대부분 경우 RAM이나 ROM이 CPU 외부에 존재

5. 기타 주변장치 파악

 - 몇개 핀이 GPIO로 할당되어있는지

 - LED나 LCD 같은 출력 장치의 연결방법 파악

 - 버튼이나 스위치 연결 방법 파악

 

(2) 각 모듈 분석

1) 주요 부품

1. U1, ATmega128, 주요 MCU

2. U2, 74HC573 

     - 기본적인 MCU 구성에 많이 사용. MCU 외부에 RAM 장착시 사용

     - 외부 어드레스와 데이터를 분리시켜주는 역활. ALE 신호를 통해 데이터 신호와 어드레스 신호 구분

          * ALE가 low이면 어드레스 신호 출력, high 이면 데이터 신호로 간주

3. U3, K6X0808CID-GF70

      - 32K바이트 용량의 SRAM

4. U4, MAX232

      - UART 트랜시버, 시스템간 통신 위한 +12V ~ -12V의 UART 신호(거리를 멀리가기 위해 전압래밸이 높음)

      - 이 신호를 MCU가 인식할수 있도록 5V레벨 신호로 바꿔주는 역활

 

ATmega128
74HC573
K6X0808CID-GF70
MAX232

2) 전원부 구성 파악

- 전원이 어디서 공급되는지 파악

- 전원은 커낵터로부터 들어오므로 J로 시작하는 부품들 탐색

- USB로 전원 받는 경우가 많으므로 USB 회로 부분 조사

커넥터와 전원부

- 접지 : 회로 전체에 분포

 * 수동 소자를 제외한 거의 모든 부품 -> 접지와 연결 필요

- AVCC : 아날로그 전원

 

3) 진동 소자부

- 진동 소자 : Y로 시작하는 부품

- 16MHz(메인 클럭) -> ATmega128의 최대 동작 주파수, MCU 동작의 주요 클럭

- 32.768kHz(RTC 클럭) : 초단위 속도에 맞는 주파수 크리스탈

=> 메인 클럭과 RTC 클럭이 일반적인 구성

- 23, 24핀이 제대로 크리스탈과 연결되었는지 확인 -> MCU 레지스터 셋팅 등 미치는영향파악

- 외부 RTC 클럭이 잘 사용되려면 MCU 레지스터를 알맞게 세팅해야함 -> 데이터 시트에 존재

 * 외부 클럭 대신 내부 클럭 사용하는 경우도 있음

ATmega128과 진동 소자부

 

4) 메모리부

- 32K 바이트 크기의 외부 SRAM을 가지고 있음

- CPU들은 핀수가 많으므로 메모리를 읽고 쓰기 위한 데이터 버스와 어드레스 버스를 별도로 갖고 있음

- MCU는 핀수가 부족하므로 데이터 버스와 어드레스 버스를 공유하여 설계되어있음

  -> 한 핀이 어쩔때는 데이터버스/어드레스 버스역활을 함.

메모리부

 

74HC573 래치칩

- 메모리는 데이터와 어드레스가 다른 핀으로 할당되어 있음 -> MCU는 핀이 부족하여 버스를 공유해야함

- 래치칩(74HC573) :  MCU 외부 램을 추가할때 어드레스와 데이터 핀을 공유해서 쓰기 위해 사용하는 부품

- D1~D8 입력핀과 Q1 ~ Q8 출력 핀으로 구성

- OC -> Low : 출력을 입력핀값 출력. High : 출력핀의 출력 끊음

- C -> High : 입력값이 그대로 통과, Low : 입력 핀들의 연결을 끊음

- ALE

  -> 어드레스 사용시 : ALE 신호를 Low로 하여 D0 ~ D7의 데이터 버스를 끊어버림

  -> 데이터라인 사용시 : High 신호를 주어 D0 ~ D7 신혹 ㅏ들어갈수있도록 함

74HC573

(2) STM32F103 CPU 회로도 분석

1) 전체 회로 구성 분석

1. 주요 부품 확인

 - U라는 이름으로 시작. U1, U2 부터 시작

 - STM32F103 CPU 배치 위치를 실제 배치에서 확인 후 회도로에서 확인

2. 전원부 구성 파악

 - 사용 전원 볼트 파악

 - 전원부 소자들의 사용 부품 종류 파악

 - 최대 전류값 파악

 - 연력하는 전원 커넥터 종류 파악

 - USB 회로도 파악

3. 진동 소자부 구성

 - CPU가 장착된 회로에는 CPU 동작용 메인 크리스탈과 RTC용 32.768KHz RTC용 크리스탈이 장착

4. 메모리 부

 - CPU에 따라 내부에 ROM과 RAM을 가지고 있는경우 외부에 메모리가 없을수있으나

 - 많은 경우 RAM or ROM 이 외부에 장착

5. 기타 주변장치 파악

 - 몇개의 핀이 GPIO로 할당되어있는지

 - LED나 LCD같은 출력장치의 연결방법파악

 - 버튼이나 스위치의 연결방법 파악

 - JTAG 인터페이스 등 연결여부 파악

STM32F103 CPU 전체 회로도

(2) 각 모듈 분석

1) 주요 부품

1. U1, STM32F103 - 주요 MCU

2. U2, YDSR-1031AM - 7segment LED

3. U3, AME8805AEETZ-3.3

   - 5V를 3.3V로 변환하는 레귤레이터

   - STM32F103은 저전력으로 구동하므로 USB 전원을 사용해도 문제 없음

   -> USB 볼트 전원을 레귤레이터를 통해 5V를 3.3V로 전환하여 사용

4. U4, SP3232C - UART 트랜시버. +12V ~ -12V의 UART신호를 3.3V 레벨 신호로 변환

 

STM32F103
YDSR-1031AM

 

AME8805AEETZ-3.3
SP3232C

 

2) 전원 구성부 파악

- USB_5V에서 전원을 가져와 AME8805AEETZ 레귤레이터 구동 -> 5V를 3.3V로 전환하여 메인 전원으로 사용

  -> R28 연결 : USB 전원 이용

  -> 미연결 : 커넥터 등에서 바로 3.3V를 연결해 사용

전원부 구성

- LD4 :3.3V가 인가되면 켜지는 파워 인디케이터 LED

  -> VDD_3v3  이란 전원은 주요 부품에 모두 인가되어 보드를 동작시킴

  -> 회로의 어디에 사용되는지 확인

- STM32F103의 전원 핀과 접지핀 연결 여부 확인

 -> 전원핀 32, 48, 64, 19 등 모두 VDD_3v3에 연결됨. 접지 핀도 연결됨

STM32F103과 전원 연결

- VDDA 핀 : 아날로그 전원핀

 -> VDD_3v3전원이 연결됨. 디지털 노이즈가 아날로그 쪽으로 전파되지 않도록 BEAD 칩을 연결/

 -> VSSA : 아날로그 그라운드

아날로그 전원부

 

3) 진동 소자부

- 진동 소자 : X로 시작

- X1 : 12MHz 크리스탈 -> STM32F103 CPU 메인 클럭

- X2 : 32.768KHZ 크리스탈 ->초단위에 맞는 주파수. RTC 클럭

진동 소자부

- STM32F103은 외부 진동 소자 없이 구동 가능하나 몇가지 단점으로 외부 진동소자 사용

진동 소자부의 STM32F103 연결

300x250
728x90

ROM

- Read Only Memory

- 일반 인은 쓰지 못하고 읽기만 가능한 메모리

- 제조사에서 한번은 원하는 값을 써야함

 

ROM 의 발전

- Mask ROM : 최초의 롬. 사진을 현상하듯 같은값만 찍는 방식

- PROM programmable ROM : 사용자가 1회 한해서 새 내용을기록가능한 롬.

                                       높은 전압을 가해 롬 내부 퓨즈를 끊는 방식으로 한번 수정 가능

- EPROM Erasable PROM : 여러번 수정 가능한 롬으로 투명한 창이 있어 자외선을 쏘여 자우는 방식

                                   지우려면 3~40분 정도 시간 소요. 지울수있는 횟수도 20회 전후

- EEPROM Electrically Erasable PROM : 전기적으로 지울수 있는 롬으로 12V 높은 전압 필요. 소켓형태로 롬을부착가능

- Flash : 보드 상에서 바로 지우고 쓸수있는 롬

 

ATmega128

- 총 53개 GPIO 핀

- Pxn(x 는 X~G, n은 0~7)

- 각 핀은 입,출력 설정 레지스터를 통해 소프트웨어로 선택가능

- DDRx 레지스터가 입력, 출력 선택 레지스터(Data Direction Register)

- 설정을 위해 각 핀은 DDRx, PORTx, PINx 세 종류 레지스터 사용

ATmega128 GPIO

DDR 레지스터

- 입력과 출력 핀 설정

  ex) PA0핀을 입력으로 할시 -> DDRA 레지스터의 0번 비트를 0으로 하면 됨

PORT 레지스터

- GPIO를 출력한다면 PORT 레지스터를 통해 해당 핀 전압레벨을 0이나 1로 하면됨

 ex) PA0핀을 1로 출력 -> PORTA레지스터의 0번 비트를 1로 하면됨

PIN 레지스터

- 입력으로 된 핀 레벨을 읽으려 한다면 PIN 레지스터의 값을 읽으면 됨

 ex) PA0핀의 입력값을 알고싶다 -> PIN A레지스터의 0번 비트를 읽으면됨

 

DDR, PORT, PIN 레지스터 구조

PA0 핀을 출력으로 설정하고, 레벨을 high로 설정하는 C 코드

#include <avr/io.h>

int main(void)
{
	DDRA = 0b00000001;
	PORTA = 0b00000001;
	return 0;
}

 

ATmega128과 LED 연결 제어 실습

PE1에 LED 회로 연결

- LED 제어 펌웨어 소스

#include <avr/io.h>
#define F_CPU 16000000L
#include <util/delay.h>

int main()
{
	DDRE = 0x01;
    //E1핀만 출력 설정
    while (1){
    	PORTE = 0x01;
        //E!핀에 1출력, 나머지 핀 0 -> 불켜짐
        _delay_ms(1000);
        PORTE = 0x00;
        //E 전체 핀 0 -> 불 꺼짐
        _delay_ms(1000);
    }
}
300x250
728x90

1. ISP

- 한쪽이 USB포트

- USB to UART 변환 칩이 있어 USB 단자를 PC에 꽃으면 COM으로 인식

- 처음 연결 시 USB to UART 변환 칩의 디바이스 드라이버를 찾음

 

ATmega128의 인터페이스

J8 : ISP 포트 <-에 연결

J5 : JATG 포트

ATmega128 인터페이스 회로도

 

JTAG 연결

- JTAG 장비의 빨간선이 보드 1번 핀에 맞도록 연결

 

 

AVR JTAGICE Mk II

 

STM32F103

- ARM Cortex-M3 코어 내장 CPU

- ARM Cortex-M 지원하는 JTAG 장비 사용 -> ST-Link V2가 가장많이 사용

- ARM Cortex-M 시리즈는 JTAG20핀 사용

STM32 시리즈 CPU만 지원

 

ARM Cortex-M 시리즈 JTAG 핀

 

STM32CubeMX 툴

- 기본적인 펌웨어 코드 생성

-> IAR Workbench, Keil MDK 등 다양한 개발환경 선택해서 사용 가능

300x250
728x90

AVR용 교차 개발환경

- Atmel 사의 AVR Studio

- IAR System 사의 IAR Embeded Workbench

- 코드 편집, 컴파일, 디버깅 등이 가능한 통합 개발환경

 

AVR Studio

- GNU에서 배포하는 GCC 사용

- 타 컴파일러들은 자체 제작 컴파일러로 라이센스 제한이 있음

- AVR Studio는 GNU 라이센스를 따르므로 무료 배포 가능 -> GPL 라이센스

- GNU General Public License 자유 소프트웨어 재단에서 만든 라이센스

 

STM32F103용 교차 개발환경

- 레조넌스사의 RIDE7

- IAR system사의 IAR Embeded Workbench

- Keil사의 MDK-ARM 등

 

Exynos 4412 개발환경

- 가상화 소프트웨어, 호스트 머신 리눅스, GNU ARM Toolchain 필요

- 윈도우가 필요할 수 있으므로 윈도우 환경에서 가상 머신 리눅스 사용이 좋음

 

리눅스 설치 판 존류

- 툴체인 종류 : Sourcery CodeBench, Linaro

- 레드햇 계열 : 페도라, 센토스

- 데비안 : 우분투

- 모두 리눅스 커널 사용

- 설치 명령어 : 래드햇 계열 RPM 또는 Yum, 데비안 계열은 Apt

 

데미안 계열

- Apt = Advanced Packaging Tool

- Apt-get 명령어로 패키지 업데이트

- /etc/apt/sources.list 파일에서 저장소 정보 관리

300x250
728x90

프로그래밍 

- edit -> build -> download -> debug

 

1) 디버깅

- 프로그램이나 하드웨어 장치의 문제점을 찾아 해결하는 것

- 일반 범용 PC의 디버깅 환경 -> IDE 내에 디버깅 내장 -> 문제 프로그램의 소스를 보면서 변수나 메모리 값 확인

 

임베디드 시스템 디버깅 환경

-  호스트 컴퓨터 - IDE <-> 디버거 장비 <--> AVR 타겟보드 - 디버깅할 프로그램

- 중간에 디버거 장비가 필요. 타겟 보드에 따라 디버거 장비가 결정

- AVR 타겟보드 디버깅 시 AVR용 디버거 사용

 

2) 소스레벨 디버깅

소스레벨 디버깅

- 프로그램 소스 코드 보면서 디버깅 하는 것

- 프린트 문으로 변수, 메모리 값 확인 시 : 문제가 되는 코드 위치와 CPU 내부 값 확인이 힘듬

-> 소스 레벨 디버깅 : 프로그램 진행을 멈추어 확인하고싶은 변수나 메모리, 어셈블리 값, CPU 상태도 확인 가능

 

3) JTAG

디버거

- 에뮬레이터라는 용어와 혼용해서 많이 사용

- JTAG이라는 디버깅 방식 개발전에 에뮬레이터 방식으로 제작됨

 

에뮬레이터

- CPU나 메모리 동작을 흉내내어주는 디버깅에 사용되는 장비나 소프트웨어

- 종류 : CPU 에뮬레이터, ROM 에뮬레이터

- 고가, CPU 100Mhz 이상인 경우 잡음이 심해 잡음이 어려움, CPU 모든 핀 연결해야하나 핀수가 많고 소형화되어 힘듬

 

JTAG

- Joint Test Action Group

- IEEE 1148.1 아이트리플이

- 조립된 PCB 테스트 목적으로 연구

- 디바이스 패키지, 고집적화로 물리적 접촉 방식으로 테스트가 힘듬 -> JTAG 탄색

- 외부로 나온 핀을 직접 접촉하지 않고, 테스트 목적의 셀을 칩 내부에 장착하여 전용 데이터 입력 핀인 데이터 입력으로, 입력시 데이터 아웃으로 출력하게 하여 칩이나 보드에 이상유무를 확인

-> Boundary Scan Architecture

- PCB 보드 검증 뿐만 아니라 디버거 만드는데서도 활용 가능 -> 에뮬레이터 방식의 대안이 됨

JTAG 방식

JTAG 디버거

- JTAG 단자라고 하는 편개의 신호만 연결하면 디버깅이 가능한 장비

- 보드에 존재했던 모듈들이 하나의 칩안으로 들어감(SoC), RAM, ROM, IO 등 칩안에 들어감

-> JTAG이 현실적인 대안이 됨

JTAG 인퍼테이스

- TDI : Test Data Input

- TDO : Test Data Output

- TMS : Test Mode Select

- TCK : Test clock

- nTRST : Test Rest

- 디버그 목적으로 몇개 신호선 추가 : nRESET, Vtref, DBGRQ

-> 타겟 시스템 자원을 소모하지 않아 디버깅으로 인한 타겟 소모나 영향이 없음

 

IEEE1149.1 디바이스 구조

- 시리얼 방식 사용 - 데이터라인이 TDO 한개 뿐이므로

- TAP 컨트롤러 : 스테이트 머신 방식, TMS 신호에 의해 Test Mode 전환 과정

  -> TAP 상태에 따라 TDI가 명령이거나 데이터 일 수 있음. TDO 값도 어드레스 이거나 데이터일수있음

- JTAG 이용 -> TAP 컨트롤러를 제어하여 필요한 명령어나 데이터를 읽고 쓰는 방식

- 동작 주파수가 10~100MHz인 TCK핀이 일반적으로 사용됨.

IEEE1149.1 디바이스 구조

 

JTAG Pin 배치

- CPU 코어나 종류, 버전에 따라 다양한 핀배치를 가짐

AVR JTAG

- AVR : 총 10개의 핀으로 구성

- nTRST : TAP 컨트롤러를 리셋하기 위한 신호

- nSRST : CPU 코어를 리셋하기 위한신호

AVR의 JTAG

ARM JTAG

- ARM 코어는 버전에 따라 핀맵이 달라짐

- ARM7 : 총 14개 핀

- ARM9 : 총 20개 핀

ARM코어 JTAG 핀

TMS (Test Mode Select)

- 디버깅 상태에서 Scan Chain을 결정하고 Bypass와 같은 디버깅 모드 선택에 사용

 

TCK Test Clock

- JTAG을 구동하는 Clock으로 보틍 10MHz

 

nTRST test rest

- JTAG의 Tap 컨트롤러 리셋

 

VTref Test Voltage reference

- JTAG 인터페이스의 입출력 전압 레벨을 설정. 전원 공급용이 아님

- JTAG Logic이 들어있는 프로세서 전압은 따로 공급이 필요

 

nSRST = nRESET

- Target CPU를 리셋하거나 리셋을 검출하는데 사용

 

DBGRQ

- 외부 트리거 신호로 프로그램 신호를 멈춤

 

DBGACK

- 정확한 시간 측정

- 프로그램 실행 정지 시 다른 디바이스를 정확하게 트리거 할수있도록 해줌

 

1) ISP 방식

ISP 장비

- CPU 내부 플래시 메모리, EEPROM을 지우거나 프로그래밍만 가능

JTAG

- 프로그래밍 + 소스레벨 디버깅이 가능

 

기존의 EPROM 형태 개발

- ISP 개발 이전 방식

- 외부의 EPROM을 사용하거나 EPROM과 CPU가 내장된 단일 칩을 땟따 붙여 롬라이터로 프로그래밍하고 디버깅하는 방식

- EPROM CPU를 ROM eraser에 넣어 삭제(1시간 이상걸림) 후 ROM Writer로 쓰기함.

 

ISP in system programming

- 플래시 메모리와 CPU가 단일칩이 되면서 등장

- 보드상 플래시 메모리 프로그래밍 가능

- 프로그래밍 시간이 수분 내로 획기적으로 축소

- AVR의 플래쉬 메모리에 직렬통신으로 실행 프로그램을 다운로드함

-> ISP를 사용하기 위해 ISP 프로그래머가 필요

 

PC와 연결 방식

- 병렬포트, 직렬포트, USB 포트

-> 근래는 USB포르를 대부부분 사용

 

AVR ISP방식 하드웨어 연결

- 6핀 방식과 10핀 방식 연결 방법 존재

  실제 사용하는 신호선 종류와 기능은 동일

  타겟 보드의 ISP 인터페이스를 보고 선택

- ISP 프로그래머는 둘다 지원

  ISP 프로그래머는 SPI인터페이스를 사용하여 연결

 SPI 인터페이스는 직렬통신 한 종류 -> 이 인터페이스로 ISP 사용

ISP 핀맵

 

SPI Serial Peripheral Interface

- 마스터와 슬레이 개념을 이용한 통신

- 사용 신호선 : MOSI, MIOS, SCLK, SS 등

- MISO : Master Input Slave Output

- MOSI : Master Output Slave Input

- SCK : Serial Clock

- SS : Slave Select (여러개 슬레이브가 존재시 선택하는 신호)

SPI 인터페이스

AVR의 ISP 신호

- 슬레이브가 AVR CPU 한 개이므로 SS는 사용하지 않음

- VCC라는 전원 신호와 /RES(AVR Reset)라는 리셋 신호를 추가하여 AVR ISP 신호선 완성

- 마스터 : ISP 프로그래머가 됨

- 슬레이브 : AVR CPU가 되어 PC 코드를 AVR의 플래쉬메모리나 EEPROM에 프로그래밍하게됨.

 

 

상용 JTAG 디버거 특징

- 다양하지만 대부분 고가

- 특정 CPU 코어만 지원하는경우가 대부분

 -> 다양한 CPU를 지원해도 라이센스 구매가 필요할수있음

 

TRACE32

- 거의 모든 코어 지원

- JTAG 장비 중 가장 비쌈

 

 

 

300x250
728x90

오실로스코프

- 회로 신호 검증 및 테스트 장비

- 신호의 상승 하강, 주파수 엣지사이 경과시간 정교하게 측정. 

- 동시 측정 가능한 입력 신호 갯수 4개

 

로직 애널라이저

- 32/64비트 데이터 버스 등 동시에 많은 신호 측정에 사용

- 채널 수 : 34 ~ 136개

- 오실로스코프처럼 아날로그적 특성은 측정 x. 0,1 디지털로직신호만 측정

- 디지털 설계 검증 디버깅에 도움됨

- 디시털 신호 동시 추적 및 상관관계 설정에 이용

 

1. 데이터 시트와 레퍼런스보드

데이터시트

- 부품, 하부 시스템, 소프트웨어 등 성능 특성등을 모아든 문서, 일반적으로 제조사에서 만듬

- 제조사 이름, 제품 형번, 이름, 제품특성, 기능 설명, 핀접속 다이어그램, 추천동작환경

- 직류/교류 특성, 입/출력 파형표, 검증 회로, 정오표

 

래퍼런스 보드

- CPU올려 테스트 가능한 보드의 회로도와 OS 관련 자료들

- 래패런스 보드 = 평가 보드 = 개발 보드

- ATmega128  래퍼런스 보드 : STK500

- STM32F103 래퍼런스 보드 : STM32 Nucleo

- Exynos4412 래퍼런스 보드 : Odriod-X

 

부품 배치도 component placement

-  PCB 보드상 부품이 놓여진 위치 소개

 

 

3. AVR 용 디버거

디버거 debugger

- 프로그램 테스트

- 프로그램 정확성이나 오류 찾아냄

 

AVR 용 디버거 장비

- Atmel-ICE, JATGICE : ARM Coretex-M 코어 CPU용 장비

- AVR ISP mk2, AVR Dragon :  AVR용 디버거 장비

- ISP 다운로드, ISP 다운로드 및 소스레벨 디버깅 가능 장비로 나뉨

 

ISP in system programming

- 보드에 장착된 CPU 내부 플래시 메모리를 지우고 프로그램하는 장비

- 이게 없을때 보드에서 CPU를 분리하여 롬라이터를 이용해 메모리를 지우거나 프로그래밍 함

 

ISP 다운로드

- 플래시 메모리에 펌웨어 다운로드

 

소스레벨 디버깅

- 펌웨어 소스를 화면으로 보면서 CPU 실행을 멈추고, CPU 메모리상태를 볼 수 있음

- JTAG 인터페이스를 통해 사용 가능

 

4. 계측 장비

1) 오실로 스코프

2) 멀티 테스터기

 

1) 오실로스코프

- 특정 시간 간격의 전압 변화를 볼수있는 장비

- 주기적으로 반복되는 전자신호 표시

- 시간에 따라 변하는 신호를 주기적이고 반복적인 하나의 전압 형태로 파악

- ex) 테트로닉스 사의 오실로스포크, 에질런트사의 오실로스코프

- 대역폭, 샘플링 속도, 채널 개수에 따라 다양

- 대역폭이 클수록 아날로그 신호 정확하게 측정 가능

- 최대 동작 주파수의 2배 이상 샘플링 가능해야만 신호 측정 가능

 -> ex) ATmega128 = 16Mhz 클럭 -> 샘플링 속도 32Mhz 이상

 

2) 멀티테스터기 multimeter

- 전압, 전류, 전기 저항 측정

- 보드 전원 체크 및 전원 사용량 등 측정시 멀티테스터기 사용

 

거버 파일 gerber file

- PCB 작업 결과 파일

- 부품, 핀 정보를 가짐 ->부품배치도

 

BOM 리스트

- 보드에 장착된 부품을 정리한 부품 리스트 파일

- 부품 구매 및 관리에 이용

- 설계 확정 후 최종 출력

 

ST-LINK

 

데이터 시트와 사용자 설명서 차이

- 데이터 시트 : 전기적/하드웨어적 특성 언급

- 사용자 설명서 : 레지스터 메모리맵과 같이 소프트웨어 관련 내용 언급

 

300x250
728x90

펌웨어 구현 준비물

1. CPU 보드

- 래퍼런스 보드, 평가보드 evaluation board, 개발보드 development board 라고도 부름

- AVR CPU, STK600 -> cpu 성능 평가, 재품 개발 기간 단축

써드 파티 <- 고가 보드를 본따 저가 보드 제조 판매

 

2. CPU 회로도

- 회로도 : 보드에 장차고딘 IC칩들간 연결을 그려놓은 설계도

- OrCAD나 PADS로 그림..

- CPU 판매사에서 제공. CPU 내부핀과 외부침 연결을 알수잇음

AVR  CPU 호로도

 

3. 데이터 시트

- IC칩 제조사가 만든 IC칩 사용 설명서

- 방대하고 어려운 문서. but 알아야 할부분은 제한적이므로 다 이해할필요는 없음

- 칩 부품번호, 번호 의미

- 일반적인 사항, 특징, 응용분야

- 온도/전압 범위

- 핀배치

- 전기/시간적 특성

AVR CPU 핀 배열

 

CPU 데이터시트

- CPU 내부 레지스터 구조

- 메모리맵

 -> CPU가 외부 디바이스나 내부모듈 제어를위해 필요한 레지스터들의 주소지도

 -> 펌웨어 구현에 반드시 필요

 

4.. 교차 개발 환경

- CPU가 실행할수있는 실행 파일을 만들고 타겟 보드에 다운로드 하기 위한 환경

- 타겟 보드는 성능이 부족해 실행파일 만들기 힘듬

- 호스트 PC에 에서 만듬

- 시리얼 케이블, 이더넷 케이블, USB 케이블 등으로 타겟 보드에 다운로드

 

터미널 프로그램

- 시리얼 케이블을 통해 타겟 보드와 호스트 PC가 통신하는데 사용

 

5. 디버거 장비

- 디버깅 및 기타 용도로 사용

- CPU의 내부 레지스터나 메모리값 등 확인 가능

 -> 소스 레벨 디버깅이 가능하도록 해줌. 소프트웨어를 멈추고 메모리 값을 확인할수있음

- 플래쉬 메모리에 펌웨어를 넣음

 -> 롬라이터 없으 온보드되어있는 플래쉬 메모리에 원하는값 써줌

 

6. 계측장비

오실로 스코프

- 하드웨어 개발을 위해 필요하며, 개발한 펌웨어가 제대로 동작하는지 확인

- 전기 신호를 시간 변화에 따라 화면에 그래프를 보여주는 장비

 -> 입력 신호 시간에 대한 전압 크기, 주기적인 신호 주파수, 성능에 따라 다양하게 측정 가능

* CPU나 메모리 동작상태나 신호 출력상태 확인에 필요

 

멀티 테스터기

- 개발한 펌웨어가 제대로 동작하는지 확인하는데 사용

- 저항값, 전압레벨, 전류값 등 확인 가능 

 

 

1) 자료 확보

ATmega128, STM32F103 -> 데이터 시트, 회로도 등 홈페이지에서 다운로드 가능

스냅드래곤 시리즈 -> 일반에 공개하지 않음

 

2) 펌웨어 개발에 필요한 소프트웨어

 1. 교차 개발환경

 2. 래퍼런스 펌웨어 소스

   개발자들이 자사의 CPU를 올바르게 사용할수있도록 제공

 3. 부트로더

   다운로더와 장비없이 펌웨어 업데이트가 가능, 실시간 운영체제를 올리는데 사용

 4. 실시간 운영체제

   네트워크 프로그램 같은 고차원 펌웨어 사용에 필요

 5. 디버거 장비용 소프트웨어

 

1. 교차 개발환경

- Atmel사의 AVR Studio

- Hp InfoTech 사의 CodeVision

- IAR System 사의 IAR Embedded Workbench

 

2. 래퍼런스 펌웨어 소스 

 avr soure 검색 -> 재조사나 깃헙 등으로 획득 가능

 

3. 부트로더

ATmega128(8비트 CPU)

- 운영체제 없이 쓰거나 부트로더없이 운영체제를 올리는 구조

-> 보통 부트로더를 필요로 하지 않음

- 디버거 장비없이 시리얼 만으로 호스트의 펌웨어를 가져와 업데이트 할때 부트로더를 사용할수있음

- 무선통신 : 지그비, RF4CE로 펌웨어 업데이트 가능

- OTAU(Over The Air Upgrade) : OTA 부트로더

 

4. 실시간 운영체제

- 멀티 태스크 환경을 구현하여 복잡한 프로그래밍을 세분화하여 쉽게구현가능한 환경

- 8비트 MCU에는 거의 사용되지 않았었음

- 8비트 CPU 발전과 복잡한 로직 구현 필요로 많이 채용되고 있음

 

FreeRTOS

- 무료로 제공

- 핵심 모듈 기본 제공

- 파일시스템이나 TCP/IP 스택은 필요에 따라 추가 가능

 

5. 디버거 장비용 소프트웨어

ISP 다운로더 장비 : CPU 내부에 접속하여 내부 플래시 메모리, 퓨즈, EEPROM 등을 지우거나 프로그래밍 하는 장비

JTAG 장비 : AVR CPU용 디버거 장비. AVR Dragon, JTAG ICE, JTAGICE mkII 등 다양함

* ISP는 다운로드만, JTAG 은 다운로드와 디버거 지원

 

 

300x250

+ Recent posts