Introduce the RealView ARM Tools
Overview of RealView ARM Tools
ARM 에서 제공하는 ARM Core 기반의 Embedded development Tool 을 일컫는다.
크게 Debug Hardware 장비인 RealView ICE 와 그밖의 Real View Develop Suite 로 나뉘어 진다.
RealView ARM Tools 의 일반적 구성
RealView ICE | 타겟시스템의 디버깅, 소프트웨어 에뮬레이션에 사용 | |
Real View Develop Suite | Compilaton Tools | 소프트웨어 빌드에 사용 |
Debug Tools | 디버거 프로그램 | |
Instruction Set Simulator | 가상의 ARM Core 기반의 플랫폼을 만들어 소프트웨어 동작을 테스트할 때 사용 |
Real View Develop Suite v2.2
AXD Debugger v1.3.1 | 디버거 프로그램 |
CodeWarrior for RVDS | IDE 프로그램 |
RealView Debugger v1.8 | 디버거 프로그램(추천) |
RealView Network Broker v1.8 | Target Connection Tool |
Real View ICE v1.2
RealView ICE config IP |
RealView ICE update |
Debug mechanism
RealView debugger features
Debugger demo
디버깅의 원리
살색이 타겟, 보라색이 메모리 장치, 연두색이 암코어 기반의 칩.
노트북과 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-awareness
디버거가 OS 의 정보를 알아서 OS 의 세마포어, 메세지큐, 뮤텍스 등을 제어할 수 있고, 그 위에 스레드들을 소스레벨로 디버깅할 수 있다.
에뮬레이터 디버깅
- code warrior 실행하기
- 프로그램 코딩 후 F5 누르기
- 컴파일 후에 realview debugger 실행
- Connection Control 창에서 ARMulator 선택
- 디버깅할 프로그램 이미지(axf, elf…) 선택
- step, break point
보드레벨 디버깅
- code warrior 실행하기
- 맨 오른쪽에서 두번째 debug setting 클릭(Language Settings → RealView Assembler 에서 ARM920T 로 수정, Linker → Output 에서 RO_BASE 0x30000000 으로 수정)
현재 상태
간단하게 프로그램을 만들어서 컴파일하고, 오브젝트파일(.axj)을 이용해서 에뮬레이터 디버깅과 보드 디버깅을 하는 방법을 알아보았다.
이에 대한 방법은 관련 문서를 참고하면 될 것 이다.
일단 현재 realview 쪽에서 VPOS 에 대한 os-awaress 기능을 지원하지 않기 때문에, 스레드 디버깅은 불가능하다.
결론
궁극적인 목표라고 한다면, 현재의 VPOS 를 realview debugger 상에서 스레드 디버깅을 하는 것이다. 하지만, 현재 gcc 로 생성된 elf 포맷의 오브젝트 파일을 realview debugger 에서 로딩시킬 수 없다.
이를 위한 방법으로는 크게
- realview debugger compiler 를 이용해서 VPOS 를 컴파일한다. 궁극적으로는 .axj 파일을 생성한다.
- GNU-ARM 을 사용해서 컴파일한다.
내가 생각해 볼때, 1번 방법의 경우는 거의 불가능하다고 본다. 컴파일러 자체에서 오류가 난다면, 어찌해볼 도리가 없기 때문이다. 2번 방법은 될지 정확하지는 않지만, 시도해 볼만 하다고 본다.
PPT 자료는 아래에서 다운로드 받을 수 있다. realview.ppt