728x90

소프트웨어 패키징

- 모듈별 실행파일들을 묶어 배포용 설치 파일 만드는 것

- 사용자 중심

 

패기징 고려 사항

- 사용자의 환경, OS,메모리, CPU 최소 환경

- UI 자료 제공

 

패키징 작업 순서

- 개발 주기가 끝날때마다 패키징

- 결과물 테스트 서버에 배포

1. 기능 식별

2. 모듈화

3. 빌드 진행

4. 사용자 환경 분석

5. 패키징 및 적용 시험

6. 패키징 변경 및 개선

7. 배포

 

주요 배포용 파일 형식

- msi : 윈도우 패키지

- dmg : mac 패키지

- jar : 자바 sw, lib 패키지

- war : 자바 웹어플리캐이션 패키지

- apk : 안드로이드 앱 패키지

- ipa : ios 앱 패키지

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

디지털 저작권 관리  (0) 2020.05.14
소프트웨어 배포와 릴리즈 노트  (0) 2020.05.14
운영체제  (0) 2020.05.14
데이터 모델  (0) 2020.05.14
요구사항 1  (0) 2020.05.14
728x90

운영체제

- 컴퓨터 자원 관리

- 사용자와 하드웨어간 인터페이스로 사용자 환경 제공

- 성능 기준 : 처리 능력, 반환 시간, 사용 가능도, 신뢰도

- 기능 : CPU와 입출력 장치 등 자원 관리, 스케쥴링, 인터페이스, 하드웨어와 네트워크 관리

- 종류 : UNIX, WINDOW, LINUX, MacOS, MS DOS

 

운영체제 주요 관리

- 프로세스 : 스케줄링, 동기화, 생성 제거 등

- 기억장치 : 메모리 할당 및 해제

- 주변 장치 : 입출력장치 스케줄링

- 파일 관리 : 파일 생성, 유지, 변경, 삭제

 

 

Windows

- 그래픽 사용자 인터페이스

- 선점형 멀티 테스킹 : 각 작업 CPU 이용시간 제어. 문제 발생시 강제 종료 및 자원반환

- PnP Plug and Play : 하드웨어 드라이버 자동 설치

- OLE Object Linking and Embedding

 

Unix

- 1960년대 벨 연구소, Mit 등 개발

- 시분할 시스템으로 설계된 대화식 운영체제

- C언어로 작성되어 이식성 높고 장치, 프로세스간 호환성 좋음

- 다중 사용자, 다중 작업

- 트리구조 파일시스템

 

유닉스 시스템 구성

- 커널 : 부팅 시 주기억 장치에 적재, 하드웨어와 프로그램 간 인터페이스, 프로세스/기억장치/파일 등 관리

- 쉘 : 시스템과 사용자간 인터페이스, 명령어 인식하여 수행, 파이프라인 지원하고 입출력 방향 설정 가능

 * 파이프라인 : 여러 명령을 한번에 처리하여 타 명령의 입력으로 전환

- 유틸리티 : 응용프로그램에 활용. 에디터, 컴파일러, 인터프리터, 디버거 등

 

리눅스

- 리누스 토발즈가 1991년 개발

- 무료, 공개, UNIX와 동일

 

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

디지털 저작권 관리  (0) 2020.05.14
소프트웨어 배포와 릴리즈 노트  (0) 2020.05.14
소프트웨어 패키징  (0) 2020.05.14
데이터 모델  (0) 2020.05.14
요구사항 1  (0) 2020.05.14
728x90

데이터 모델

- 데이터와 관계, 제약 조건 등 기술하는 도구 모임

- 구성 : 개체, 속성, 관계

- 종류 : 개념적/논리적/물리적 데이터 모델

- 표시 요소 : 구조, 연산, 제약조건

 

개체 Entity

- 정보 단위

 

속성 attribute

- 데이터 항목, 데이터필드(열)

 

관계 relationship

- 개체 간 관계

 

개념적 데이터 모델

- 이해하기 쉬운 추상적 개념으로 표현

- ex) E-R 모델

 

논리적 데이터 모델

- 개념 모델을 컴퓨터에 맞게 변환

- 데이터 관계에 따라 관계/계층/네트워크 모델로 구분

 

구조 structure

- 논리적 개체 타입간의 관계

연산 operation

- 실제 대이터 처리 작업

제약 조건 constraint

- 실제 데이터의 제약조건

 

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

디지털 저작권 관리  (0) 2020.05.14
소프트웨어 배포와 릴리즈 노트  (0) 2020.05.14
소프트웨어 패키징  (0) 2020.05.14
운영체제  (0) 2020.05.14
요구사항 1  (0) 2020.05.14
728x90

현행 시스템 파악

1 단계 : 시스템 구성/기능/인터페이스 파악

2 단계 : 아키텍쳐 구성, SW 구성 파악

3 단계 : HW/네트워크 구성 파악

 

시스템 구성

- 각 시스템 명칭, 주요 기능 서술

시스템 기능

- 주요/하부/세부 기능 계층화하여 정리

 

시스템 인터페이스

- 데이터 종류, 프로토콜, 형식 등 정의

아키텍처 구성

- 최상위 수준에서 계층별로 표현

 

소프트웨어 구성

- 제품명, 라이선스 방식, 용도 등 정리

하드웨어 구성

- 사양, 용도, 수 등 정리

네트워크 구성

- 서버 위치, 서버 끼리의 연결 방식

 

 

 

 

개발 기술 환경

- 운영체제, 데이터베이스 관리 시스템, 미들웨어 등 고려

운영체제

- 자원 효율적 관리 SW

데이터베이스 관리 시스템

- 데이터 관리 및 종속/중복 문제해결하기 위한 시스템

웹서버

- 정적 콘텐츠 처리

웹 어플리케이션 서버(WAS)

- 동적 컨텐츠 처리. 세션/트랜잭션 관리하는 미들웨어

 

 

 

요구사항

- SW 개발/유지보수에 요구되는 기준과 근거

- 기능/비기능/사용자/시스템 요구사항 

- 도출 -> 분석 -> 명세 -> 확인

요구 공학

- 요구 사항 정의 분석, 관리 프로세스에 대한 공학

 

 

 

 

 

요구사항 분석 기법

- 요구사항 분류 : 기준으로 분류

- 개념 모델링 : 단순화하여 개념으로 표현한 모델을 만듬

- 요구 사항 할당 : 구성요소 식별

- 요구 사항 협상 : 요구사항 충돌시 해결

- 정형 분석 : 구문과 의미를 수학적 기호로 표현 및 분석

 

 

 

 

요구사항 확인기법

- 요구사항 검토 

- 프로토타이핑 : 프로토타입 만들어 반영

- 모델 검증 : 모델이 충족하는지 검증

- 인수 테스트 : 사용자가 확인

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

디지털 저작권 관리  (0) 2020.05.14
소프트웨어 배포와 릴리즈 노트  (0) 2020.05.14
소프트웨어 패키징  (0) 2020.05.14
운영체제  (0) 2020.05.14
데이터 모델  (0) 2020.05.14
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

+ Recent posts