[2009년] 장려상 - In Software Emulator for ARM
- 팀명 : Before Sunrise
- 소속 : 삼성SW멤버십
- 참가부문 : 자유 공모
- 개요
Software Debug시 가장 쉽고 흔히 쓰이는 진단 message 기반의 Debugging를 Firmware에 접목을
시킨다. 우리가 정의한 Library에 의해 Break Point, Scan Point 지점으로 부터 각 line을 Scan하게 된다. 이렇게 Scan을 통하여 얻어진 변수 및 Register 정보는 USART 통신을 통하여 PC로 전송이 된다. 이때 message를 통한 통신Channel의 한계가 발생할 수 있다. 그래서 Break Point 지점에서 Scan되는 정보가 PC로 전송되는 USART를 제외한 Global Interrupt를 Disable 시킴으로서 통신상의 한계는 극복이 된다.
Firmware단에서 PC와 직접 통신을 하기 위한 Communication Module이 필요하게 된다. 이 커뮤니
케이션 GDB의 방식을 모방하게 되는데 GDB를 이용하여 원격 Debugging을 하기위해 GDB-Server
GDB-Client의 형식으로 나누어지게 된다.
여기서 GDB-Server는 Sever 본체를 의미하는 것이고 GDB-Client는 Debugging의 대상이 되는 최
소한의 Module이다. GDB가 Sever로 동작을 하게 되면 지정된 Channel을 통하여 Client로 접속을 시도하게 되는데 둘 사이에는 Serial Protocol 을 이용하여 통신을 한다.
GDB-Sever 는 Debugging에 필요한 정보들을 가지고 사용자와의 Interface를 통하여 Debugging에
필요한 동작들을 결정하고 이를 GDB-Client에 요청을 하고 Target Program을 Debugging을 하게 된다.
이러한 일련의 과정은 UNIX 기반의 OS에서 GDB-Server(host)로 부터의 요청을 Kernel로 전달하는
방식인데 이런 일련의 과정을 모방하는 Mechanism을 Library를 Link file형태로 구현을 함으로서 Arm에 OS를 porting 하지 않고 Firmware의 최소한의 자원을 가지고 Debugging 환경을 구축하는 것이 목표이다.