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

+ Recent posts