ARM 에서 제공하는 ARM Core 기반의 Embedded development Tool 을 일컫는다.
크게 Debug Hardware 장비인 RealView ICE 와 그밖의 Real View Develop Suite 로 나뉘어 진다.
| RealView ICE | 타겟시스템의 디버깅, 소프트웨어 에뮬레이션에 사용 | |
| Real View Develop Suite | Compilaton Tools | 소프트웨어 빌드에 사용 |
| Debug Tools | 디버거 프로그램 | |
| Instruction Set Simulator | 가상의 ARM Core 기반의 플랫폼을 만들어 소프트웨어 동작을 테스트할 때 사용 |
| AXD Debugger v1.3.1 | 디버거 프로그램 |
| CodeWarrior for RVDS | IDE 프로그램 |
| RealView Debugger v1.8 | 디버거 프로그램(추천) |
| RealView Network Broker v1.8 | Target Connection Tool |
| RealView ICE config IP |
| RealView ICE update |
살색이 타겟, 보라색이 메모리 장치, 연두색이 암코어 기반의 칩.
노트북과 realview ice 는 usb 로 연결되어 있고, real view ice 는 타겟시스템과 20핀 jtag 케이블로 연결되어 있다.
execution unit 은 arm core 를 의미하고, core 의 모든 시그널들은 각각의 cell 에 연결되어 있다. exceution unit 의 옆에 있는 사각형.
core 에 값을 적용시키고 싶으면, 그 값을 바운더리 스캔 레지스터에 알맞은 위치까지 이동시키고 그 값을 코어로 업데이트한다.
코어의 어떤 값을 보고 싶으면, 코어의 값을 캡쳐하여 디버거 쪽으로 읽어온다. 이때 real view ice 의 역할은 pc 로 부터 전달되는 데이터를 jtag 프로토콜에 맞게 변환해주는
컨버터이다. tap 콘드롤러는 ice 로 부터 들어오는 명령어에 대한 핸들러이다.
embedded ice 는 디버거와 통신하기 위한 로직으로서 하드웨어 break point 와 watch point 를 설정하기위한 레지스터를 가지고 있다. 이러한 시스템으로는 디버깅은 step by step 으로만 할 수 있다. 코어가 실행되는 상태에서 디버깅할 수 없다.
만일 arm core 쪽에서 embeddedice-RT 가 존재해야 실행중에서도 디버깅할 수 있다. 또한 메모리에 실행되는 프로그램에 RM 타겟 프로그램과 디버거에 rm host 라는 .dll 이 추가되어야 한다.
디버거가 OS 의 정보를 알아서 OS 의 세마포어, 메세지큐, 뮤텍스 등을 제어할 수 있고, 그 위에 스레드들을 소스레벨로 디버깅할 수 있다.
간단하게 프로그램을 만들어서 컴파일하고, 오브젝트파일(.axj)을 이용해서 에뮬레이터 디버깅과 보드 디버깅을 하는 방법을 알아보았다.
이에 대한 방법은 관련 문서를 참고하면 될 것 이다.
일단 현재 realview 쪽에서 VPOS 에 대한 os-awaress 기능을 지원하지 않기 때문에, 스레드 디버깅은 불가능하다.
궁극적인 목표라고 한다면, 현재의 VPOS 를 realview debugger 상에서 스레드 디버깅을 하는 것이다. 하지만, 현재 gcc 로 생성된 elf 포맷의 오브젝트 파일을 realview debugger 에서 로딩시킬 수 없다.
이를 위한 방법으로는 크게
내가 생각해 볼때, 1번 방법의 경우는 거의 불가능하다고 본다. 컴파일러 자체에서 오류가 난다면, 어찌해볼 도리가 없기 때문이다. 2번 방법은 될지 정확하지는 않지만, 시도해 볼만 하다고 본다.
PPT 자료는 아래에서 다운로드 받을 수 있다. realview.ppt