오늘은 ARMv7 아키텍처의 등장과 함께 소개된 CoreSight에 대한 내용을 소개하고자 합니다.

ARMv7 아키텍처는 Cortex A8 프로세서를 포함해서 최근 출시한 Cortex A15와 Cortex A7까지 다양한 제품에 사용되어 기존의 ARM 아키텍처보다 월등한 성능을 낸다고 합니다. 또한 리눅스, 안드로이드와 같은 복잡한 플랫폼과 멀티코어 CPU를 스펙으로 하는 제품들이 시장의 대세가 되면서 기존 JTAG 방식의 디버깅에도 한계가 왔는데 이러한 한계를 극복하기 ARM에서는 CoreSight라는 디버깅 방식이 나오게 되었습니다. 


일단 CoreSight는 기존 방식과 다르게 모든 디버그 로직들이 고유한 주소를 가지고 보다 자세한 디버깅 정보를 얻기 위해 아래와 같이 새로운 로직이 추가 되었습니다. 정리해보면...


DAP Debug Access Port
CTI Cross Trigger Interface
CTM Cross Trigger Matrix
HTM AHB Trace Macrocell
ITM Instrumentation Trace Macrocell
SWO Serial Wire Output
TPIU Trace Port Interface Unit
Trace Funnel CoreSight Trace Funnel
Replicator ATB Replicator


각 요소들을 몇가지만 간단히 살펴보겠습니다.


DAP


Debug Access Port는 외부 JTAG 디버거의 인터페이스 입니다. 기존 JTAG는 TAP 컨트롤러와 디버거가 직접 통신하지만 ARMv7 부터는 DAP이라는 별도의 인터페이스 로직으로 통신합니다. 이렇게 하는 이유는 멀티코어 디버깅을 위해 기존 JTAG의 데이지 체인 방식을 버리고 병렬식으로 각 코어가 독립된 채널을 통해 DAP과 통신합니다. 


Serial Wire JTAG Debug Port(SWJ-DP)


SWJ-DP는 SWCLK와 SWDIO 두 핀만으로 JTAG 디버깅이 가능하게 해주는 방식으로 기존에 ARM20 핀을 사용하는 JTAG에 비해 최근의 소형 PCB에 사용하기에 매우 편리합니다.


AHB-AP


AHB라는 고속 버스와 연결되어서 디버깅시에 바로 메모리 접근이 가능한 로직입니다. 기존의 JTAG 방식은 반드시 프로세서와 디버그 인터페이스가 형성된 상황에서만 가능하지만 CoreSight가 채용된 프로세서는 AHB-AP를 통해서 곧바로 메모리 접근이 가능합니다.


APB-AP


APB-AP는 Advanced Peripheral Bus를 통해 프로세서, 코프로세서 및 기타 Peripheral에 접근할 수 있다. 일반적인 디버그 인터페이스가 이루어지고 디버그 기능을 한다는 면에서 특이점은 없지만, 메모리 주소 지정 시 한 가지 특이점이 있다. APB-AP를 통해 CoreSight의 각 로직에 접근하는 경우 마치 MMU의 가상메모리 주소와 같이 별도의 주소가 할당되어 있다는 것이다.


JTAG-AP


JTAG-AP는 ARM9/11 등 기존의 ARM 코어를 사용할 때 이를 APB-AP 뒤에 놓지 않고 그대로 TAP 컨트롤러만 연결하고자 할 때 사용되는 액세스 포인트이며 설계 시 주로 포트 번호는 2번을 할당한다. 역시 CoreSight의 기본 개념과 같이 병렬로 연결하게 되어 있으며 일반적인 경우 포트번호 0번부터 7번까지 8개의 구형 ARM 코어의 연결을 지원한다. 


몇가지 정도만 간단히 설명드렸는데 좀 더 아시고 싶으신 분은 아래의 링크에서 살펴보시기 바랍니다.

http://www.arm.com/products/system-ip/coresight/index.php

http://www.embeddedworld.co.kr/atl/view.asp?a_id=5631