MIPI 디버그 아키텍처
MIPI Debug ArchitectureMIPI Alliance Debug Architecture는 모바일과 모바일에서 영향을 받는 공간에 깊숙이 내장된 시스템을 디버깅하기 위한 표준화된 인프라를 제공한다.MIPI Alliance MIPI Debug Working Group은 칩(SoC)의 시스템에서 디버그 툴에 이르는 표준 디버그 프로토콜과 표준 인터페이스를 제공하는 것을 목적으로 한 사양 포트폴리오를 발표했다.디버그용 아키텍처 개요 백서에는 모든 노력이 요약되어 있다.최근 몇 년 동안, 이 그룹은 심층 임베디드 시스템의 내부 운용의 가시성을 향상시키는 프로토콜 지정, 폼 팩터 장치의 기능 인터페이스를 통한 디버그 솔루션 표준화, 디버깅 버스로 I3C를 사용하는 것에 초점을 맞췄다.[1][2]
"디버그"라는 용어는
"디버그"라는 용어는 하드웨어와 소프트웨어에서 실수나 버그를 탐지, 추적, 잠재적으로 제거하기 위해 사용되는 다양한 방법을 포괄한다.디버그에는 제어/구성 방법, Stop/Step 모드 디버깅 및 다양한 형태의 추적이 포함된다.
방법 제어/구성
디버그는 특정 대상 시스템의 임베디드 시스템을 포함한 구성 요소를 제어하고 구성하는 데 사용할 수 있다.표준 기능으로는 하드웨어 중단점 설정, 추적 시스템 준비 및 구성, 시스템 상태 검사 등이 있다.
Stop/Step 모드 디버깅
Stop/Step 모드 디버깅에서는 중단점 사용을 통해 코어/마이크로컨트롤러를 정지시킨 다음 한 번에 하나씩 명령을 실행하여 코드를 통해 "단일 스텝"한다.SoC의 다른 코어/마이크로컨트롤러가 동기식으로 끝났을 경우 시스템의 전반적인 상태를 검사할 수 있다.Stop/Step 모드 디버깅에는 제어/구성 기법, 코어/마이크로 컨트롤러의 실행 제어, 다른 코어와의 Start/Stop 동기화, 메모리 및 레지스터 액세스, 성능 카운터 및 런타임 메모리 액세스와 같은 추가 디버그 기능이 포함된다.
추적
트레이스는 임베디드 시스템의 동작과 타이밍 특성을 심층적으로 분석할 수 있다.다음과 같은 트레이스가 대표적이다.
- "핵심 추적"은 내장된 코어의 프로그램 실행을 완전히 볼 수 있게 해준다.추적 데이터는 명령 실행 순서(명령 추적이라고도 함)와 데이터 전송(데이터 추적이라고도 함)에 대해 생성된다.SoC는 여러 개의 핵심 트레이스를 생성할 수 있다.
- "버스 추적"은 특정 버스를 통한 데이터 전송의 완전한 가시성을 제공한다.
- "시스템 추적"은 임베디드 시스템 내부의 다양한 이벤트/상태를 가시적으로 보여준다.추적 데이터는 계측기 애플리케이션 코드와 SoC 내의 하드웨어 모듈에 의해 생성될 수 있다.SoC는 여러 시스템 추적을 생성할 수 있다.
SoC 내부 작업의 가시성
추적은 복잡한 SoC에서 일어나는 일을 감시하고 분석하기 위한 선택 도구다.임베디드 시장을 위한 몇 가지 비 MIPI 코어 추적 및 버스 추적 표준이 잘 확립되어 있다.따라서, MIPI 디버그 작업 그룹은 새로운 디버그 작업 그룹을 지정할 필요가 없었다.그러나 2006년 디버그 작업 그룹이 MIPI 시스템 추적 프로토콜(MIPI STP)의 첫 번째 버전을 발표했을 때 "시스템 추적"에 대한 표준은 존재하지 않았다.
MIPI 시스템 소프트웨어 추적(MIPI Sys-T)
소프트웨어에서 시스템 추적 데이터를 생성하는 것은 일반적으로 디버그 프로세스에 귀중한 진단 정보를 생성하는 기능 호출을 추가함으로써 이루어진다.이 디버그 기법을 계측이라고 한다.예를 들면 프린트프 스타일의 문자열 생성 기능, 가치 정보, 주장 등이 있다.MIPI System Software Trace(MIPI Sys-T)의 목적은 재사용 가능한 범용 데이터 프로토콜과 디버깅을 위한 계측 API를 정의하는 것이다.이 규격은 추적 분석 도구가 디버그 메시지를 사람이 판독할 수 있는 텍스트나 자동 분석에 최적화된 신호로 해독할 수 있도록 하는 메시지 형식을 정의한다.
자세한 텍스트 메시지는 디버깅을 위한 대역폭 제한을 강조하기 때문에 이른바 "카탈로그 메시지"가 제공된다.카탈로그 메시지는 문자열을 숫자 값으로 대체하는 콤팩트한 이진 메시지 입니다.숫자 값에서 메시지 문자열로의 변환은 추적 분석 툴에 의해 이루어지며, 부가적인 XML 정보의 도움을 받는다.이 정보는 규격의 일부인 XML 스키마를 사용하는 소프트웨어 구축 프로세스 중에 제공된다.
Sys-T 데이터 프로토콜은 MIPI System Trace Protocol에 의해 정의된 것과 같은 하위 수준의 전송 링크 위에서 효율적으로 작동하도록 설계되었다.Timestamping이나 데이터 무결성 체크섬과 같은 Sys-T 프로토콜 기능은 전송 링크가 이미 그러한 기능을 제공하는 경우 비활성화할 수 있다.UART, USB 또는 TCP/IP와 같은 다른 전송 링크의 사용도 가능하다.
MIPI 디버그 작업 그룹은 Sys-T 계측 API에 대한 오픈 소스 참조 구현, Sys-T 메시지 프리티 프린터, XML 담보 데이터를 생성하는 도구를 시스템 소프트웨어 추적 사양(SyS-T)이 승인되는 즉시 제공할 것이다.[3]
MIPI 시스템 추적 프로토콜(MIPI STP)
MIPI System Trace Protocol(MIPI STP)은 SoC의 어느 곳에서든 유래한 추적 스트림을 4비트 프레임의 추적 스트림에 병합할 수 있는 일반 프로토콜을 지정한다.시스템 추적 정보를 병합하기 위해 의도적으로 설계되었다.MIPI System Trace Protocol은 추적 수신 분석 도구가 분석과 표시를 위해 개별 추적 스트림을 결합할 수 있는 채널/마스터 위상(channel/master topology)을 사용한다.프로토콜은 추가로 스트림 동기화 및 정렬, 트리거 마커, 전역 타임스탬프 및 다중 스트림 시간 동기화 기능을 제공한다.
시스템 트레이스 모듈이 생성하는 STP 패킷 스트림은 RAM 추적을 위해 직접 저장하거나, 오프칩을 직접 내보내거나, 추가 추적 스트림과 병합하기 위해 "추적 래퍼 프로토콜"(TWP) 모듈로 라우팅할 수 있다.MIPI STP를 준수하는 [4]ARM의 CoreSight System Trace Macrocell은 오늘날 모바일 공간에서 사용되는 대부분의 멀티코어 칩의 필수적인 부분이다.
시스템 트레이스 프로토콜(STPSM)의 마지막 MIPI 보드 적용 버전은 버전 2.2(2016년 2월)이다.[5]
MIPI 추적 래퍼 프로토콜(MIPI TWP)
MIPI 추적 래퍼 프로토콜은 다중 추적 스트림을 단일 추적 스트림(바이트 스트림)으로 병합할 수 있도록 한다.고유한 ID는 래핑 프로토콜에 의해 각 추적 스트림에 할당된다.바이트/워드 경계의 검출은 데이터가 비트 스트림으로 전송되더라도 가능하다.추적 데이터의 연속 내보내기가 필요한 경우 비활성 패킷을 사용한다.MIPI 추적 래퍼 프로토콜은 ARM CoreSight에 대해 지정된 ARM의 추적 포맷터 프로토콜을 기반으로 한다.
TWPSM(Trace Wrapper Protocol)의 마지막 MIPI 보드 적용 버전은 버전 1.1 (2014년 12월)이다.[6]
전용 인터페이스에서 기능 인터페이스까지
전용 디버그 인터페이스
제품 개발 초기에는 디버그 도구를 연결하기 위해 디버그 전용 디버그 인터페이스를 갖춘 개발 보드를 사용하는 것이 일반적이다.모바일 시장에 채택된 SoCs는 스캔 체인을 통한 정지 모드 디버깅과 메모리 매핑된 디버그 레지스터를 통한 정지 모드 디버깅이라는 두 가지 디버그 기술에 의존한다.
다음과 같은 비 MIPI 디버그 표준은 임베디드 시장에서 잘 확립되어 있다: IEEE 1149.1(5핀)과 ARM 직렬 와이어 디버그(2핀) 둘 다 단일 엔드 핀을 사용한다.따라서 MIPI 디버그 작업 그룹은 정지 모드 디버그 프로토콜을 지정하거나 디버그 인터페이스를 지정할 필요가 없었다.
SoC 내의 추적 스트림에 생성 및 병합된 추적 데이터는 전용 단방향 추적 인터페이스를 통해 추적 분석 도구에 오프칩을 통해 스트리밍할 수 있다.MIPI 디버그 아키텍처는 병렬 및 직렬 추적 포트 모두에 대한 규격을 제공한다.
MIPI 병렬 추적 인터페이스(MIPI PTI)는 추적 데이터를 여러 데이터 핀과 클록 핀(단일 엔드)에 전달하는 방법을 지정한다.사양에는 신호 이름 및 기능, 타이밍 및 전기적 제약 조건이 포함된다.마지막 MIPI 보드 적용 버전 병렬 추적 인터페이스 사양은 버전 2.0(2011년 10월)이다.[7]
MIPI 고속 추적 인터페이스(MIPI HTI)는 PCI Express, DisplayPort, HDMI 또는 USB와 같은 표준 인터페이스의 물리적 계층을 통해 추적 데이터를 스트리밍하는 방법을 지정한다.명세서의 현재 버전은 1~6차로를 허용한다.규격에는 다음이 포함된다.
- 직렬 레인의 전기적 및 시계적 특성을 나타내는 PHY 레이어.
- 추적이 어떻게 오로라 8B/10B 프로토콜로 포장되는지를 정의하는 LINK 계층.
- HTI 제어 및 상태 정보 제공을 위한 프로그래머 모델.
HTI는 ARM에 의해 정의된 고속 직렬 추적 포트(HSTP) 사양의 하위 집합이다.[8]마지막 MIPI 보드 적용 버전 고속 추적 인터페이스 사양은 버전 1.0(2016년 7월)이다.[9]
보드 개발자와 디버그 도구 공급업체는 표준 디버그 커넥터와 표준 핀 매핑의 혜택을 누린다.디버그 및 트레이스 커넥터에 대한 MIPI 권장사항은 10-/20-/34핀 보드 레벨 1.27밀리미터(0.050인치) 커넥터(MIPI10/20/34)를 권장한다.다양한 디버그 시나리오를 다루는 7가지 핀 매핑이 지정되었다.여기에는 표준 JTAG(IEEE 1149.1), cJTAG(IEEE 1149.7) 및 4비트 병렬 추적 인터페이스(주로 시스템 트레이스에 사용됨)가 포함되며, ARM 고유의 직렬 와이어 디버그(SWD) 표준으로 보완된다.[10]MIPI10/20/34 디버그 커넥터는 ARM 기반 임베디드 설계의 표준이 되었다.
모바일 공간에 내장된 많은 설계는 고속 병렬 추적 포트(핀당 초당 최대 600메가비트)를 사용한다.MIPI는 실행 제어를 위해 JTAG/cJTAG, 최대 40개의 추적 데이터 신호 및 최대 4개의 추적 클럭을 허용하는 60핀 Samtec QSH/QTH 커넥터 MIPI60을 권장한다.복잡성을 최소화하기 위해 권고안은 폭이 다양한 추적 채널 1개, 2개, 3개 또는 4개의 표준 구성을 정의한다.
디버그 및 트레이스 커넥터에 대한 MIPI Alliance 권장사항의 마지막 MIPI 보드 적용 버전은 버전 1.1(2011년 3월)이다.[11]
PY 및 핀 중첩 인터페이스
쉽게 액세스할 수 있는 디버그 인터페이스는 제품의 최종 폼 팩터에서 사용할 수 없다.이는 최종 제품의 버그 식별과 성능 최적화를 방해한다.디버그 로직은 여전히 최종 제품에 존재하기 때문에 대체 접근 경로가 필요하다.효과적인 방법은 디버그 로직에 접근할 수 있는 멀티플렉서로 이동 단말기의 표준 인터페이스를 장착하는 것이다.인터페이스의 필수 기능과 디버그 기능 사이의 스위칭은 연결된 디버그 툴이나 모바일 단말기의 소프트웨어에 의해 개시될 수 있다.표준 디버그 도구는 다음과 같은 조건에서 사용할 수 있다.
- 전환 프로토콜은 디버그 툴과 모바일 단말기에 구현된다.
- 디버그 도구를 표준 인터페이스에 연결하는 디버그 어댑터가 있다.디버그 어댑터는 필요한 경우 스위칭 프로토콜을 지원해야 한다.
- 표준 인터페이스 핀에서 디버그 핀으로의 매핑이 지정된다.
디버깅 및 테스트를 위한 MIPI 좁은 인터페이스(MIPI NIDnT)는 microSD, USB 2.0 Micro-B/-AB 소켓, USB Type-C 소켓 및 DisplayPort 등의 표준 인터페이스를 통한 디버깅을 다룬다.마지막 MIPI 보드 적용 버전의 디버그 및 테스트용 협소 인터페이스 사양(NIDnTSM)은 버전 1.2(2017년 12월)이다.[12]
네트워크 인터페이스
핀을 재사용하는 대신에 디버깅은 표준 인터페이스나 네트워크의 프로토콜 스택을 통해서도 이루어질 수 있다.여기서 디버그 트래픽은 동일한 통신 링크를 사용하는 다른 응용 프로그램의 트래픽과 공존한다.MIPI 디버그 작업 그룹은 이 접근 방식을 GigaBit Debug라고 명명했다.이 접근법에 대한 디버그 프로토콜이 존재하지 않았기 때문에, MIPI 디버그 작업 그룹은 그것의 SlipPeak 디버그 프로토콜을 지정했다.
MIPI SlipPeek Protocol(MIPI SPP)이 기본 디버깅 전용 인터페이스에서 프로토콜 기반 인터페이스로 이동:
- 수신 명령 패킷을 메모리, 메모리 맵 디버그 레지스터 및 기타 메모리 맵 시스템 리소스에 대한 읽기/쓰기 액세스로 변환한다.
- 명령 결과(메모리, 메모리 맵 디버그 레지스터 및 기타 메모리 맵 시스템 리소스에서 나오는 상태 정보 및 읽기 데이터)를 송신 응답 패킷으로 변환한다.
- SlipPeek은 입력 버퍼를 통해 들어오는 패킷을 받아들이고 출력 버퍼로 패킷을 전달하기 때문에 어떤 표준 I/O나 네트워크에도 쉽게 연결할 수 있다.
SlipPeek 프로토콜을 위한 MIPI Alliance Specification은 기본 개념, 필요한 인프라, 패킷 및 데이터 흐름을 설명한다.SlipPeek Protocol(SPP)SM의 마지막 MIPI 보드 적용 버전은 버전 1.0(2015년 8월)이다.[13]
MIPI 기가비트 디버그 사양 패밀리는 디버그 및 추적 프로토콜을 표준 I/O 또는 모바일 단말기에서 사용할 수 있는 네트워크에 매핑하기 위한 세부 정보를 제공하고 있다.이러한 세부사항에는 엔드포인트 주소 지정, 링크 초기화 및 관리, 데이터 패키지, 데이터 흐름 관리, 오류 감지 및 복구 등이 포함된다.마지막 MIPI 보드 적용 버전의 기가비트 디버그 USB(MIPI GbD USB)는 버전 1.1(2018년 3월)이다.[14]마지막 MIPI 보드 적용 버전의 기가비트 디버그 인터넷 프로토콜 소켓 사양(MIPI GbD IPS)은 버전 1.0(2016년 7월)이다.[15]
디버그 버스로서의 I3C
JTAG와 ARM CoreSight와 같은 현재의 디버그 솔루션은 정적으로 구조화되어 디버그 구성요소/기기의 접근성에 관한 제한된 확장성을 만든다.MIPI 디버그 for I3C는 확장 가능한 2핀 싱글 엔드 디버그 솔루션을 지정하는데, 이는 전체 제품 수명 동안 사용할 수 있다는 장점이 있다.I3C 버스는 디버그 버스로만 사용할 수 있으며, 디버그와 센서용 데이터 수집 버스로서 디버그 간 공유가 가능하다.I3C를 통한 디버깅은 원칙적으로 다음과 같이 동작한다.
- I3C 버스는 물리적 전송에 사용되며, 기본 I3C 기능은 버스를 구성하고 새 구성 요소를 핫 결합하는 데 사용된다.
- 디버그 프로토콜은 전용 I3C 명령으로 포장된다.지원되는 디버그 프로토콜은 JTAG, ARM CoreSight, MIPI SlipPeek Protocol이다.[13]
참조
- ^ "Debug Working Group". MIPI Alliance. 2019. Retrieved 7 June 2019.
- ^ "Architecture Overview for Debug" (PDF). MIPI Alliance. Version 1.2. 13 July 2018. Retrieved 7 June 2019.
- ^ "MIPI System Software – Trace (MIPI SyS-T)". MIPI Alliance. Version 1.0. April 2018. Retrieved 7 June 2019.
- ^ "System Trace Macrocell". ARM Developer. 2019. Retrieved 7 June 2019.
- ^ "MIPI System Trace Protocol (MIPI STP)". MIPI Alliance. Version 2.2. February 2016. Retrieved 7 June 2019.
- ^ "MIPI Trace Wrapper Protocol (MIPI TWP)". MIPI Alliance. Version 1.1. December 2014. Retrieved 7 June 2019.
- ^ "MIPI Parallel Trace Interface (MIPI PTI)". MIPI Alliance. Version 2.0. October 2011. Retrieved 8 June 2019.
- ^ "CoreSight Architecture Overview: High Speed Serial Trace Port (HSSPT)". ARM Developer. 2019. Retrieved 8 June 2019.
- ^ "MIPI High-Speed Trace Interface (MIPI HTI)". MIPI Alliance. Version 1.0. July 2016. Retrieved 8 June 2019.
- ^ "Serial Wire Debug". ARM Developer. 2019. Retrieved 8 June 2019.
- ^ "MIPI Alliance Recommendation for Debug and Trace Connectors". MIPI Alliance.
- ^ "MIPI Narrow Interface for Debug and Test (MIPI NIDnT)". MIPI Alliance. Version 1.2. December 2017. Retrieved 9 June 2019.
- ^ a b "MIPI SneakPeek Protocol (MIPI SPP)". MIPI Alliance. Version 1.0. August 2015. Retrieved 9 June 2019.
- ^ "MIPI Gigabit Debug for USB (MIPI GbD USB)". MIPI Alliance. Version 1.1. March 2018. Retrieved 9 June 2019.
- ^ "MIPI Gigabit Debug for IP Sockets (MIPI GbD IPS)". MIPI Alliance. Version 1.0. July 2016. Retrieved 9 June 2019.
외부 링크
- Schulz, Norbert (Intel Corporation) (26 September 2016). How MIPI Debug Specifications Help Me to Develop System SW. MIPI DevCon 2016. Retrieved 9 June 2019.