KR20130084397A - 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법 - Google Patents

실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법 Download PDF

Info

Publication number
KR20130084397A
KR20130084397A KR1020120005147A KR20120005147A KR20130084397A KR 20130084397 A KR20130084397 A KR 20130084397A KR 1020120005147 A KR1020120005147 A KR 1020120005147A KR 20120005147 A KR20120005147 A KR 20120005147A KR 20130084397 A KR20130084397 A KR 20130084397A
Authority
KR
South Korea
Prior art keywords
service
target
real
host system
debugging
Prior art date
Application number
KR1020120005147A
Other languages
English (en)
Inventor
하대연
황성연
Original Assignee
엠디에스테크놀로지 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엠디에스테크놀로지 주식회사 filed Critical 엠디에스테크놀로지 주식회사
Priority to KR1020120005147A priority Critical patent/KR20130084397A/ko
Publication of KR20130084397A publication Critical patent/KR20130084397A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법에 관한 것으로서, 타겟 시스템에 적재된 실시간 운영체제에 종속적이지 않게 호스트의 원격 디버깅 서비스를 처리하며, 프로그램을 로딩하고 실행하는 원격 쉘 서비스, 데이터를 수집하여 탑재하고 수집한 데이터를 호스트 시스템에 전달하는 원격 자원 모니터 서비스 등 호스트에서 요청하는 서비스의 종류에 따라 해당 서비스를 수행하는 방법을 제공함에 그 목적이 있다.
이러한 목적을 달성하기 위한 본 발명은, 타겟 시스템(Target System)에서 수행되는 프로그램을 호스트 시스템(Host System)에서 소스 레벨 디버깅(Source Level Debugging)하는 원격 디버깅(Remote Debugging) 서비스, 프로그램을 로딩하고 실행하는 원격 쉘 서비스, 데이터를 수집하여 탑재하고 수집한 데이터를 호스트 시스템에 전달하는 원격 자원 모니터 서비스를 실현하기 위한 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법에 있어서, (a) 상기 호스트 시스템에 있는 교차 개발 도구들의 서비스 요청을 전달받아, 상기 서비스가 어떠한 형태의 서비스 요청인가를 판단하는 단계; (b) 상기 (a) 단계에서 판단된 서비스 종류에 따라 해당 서비스를 수행하는 단계; 및 (c) 상기 (b) 단계에서 수행된 서비스 결과를 상기 호스트 시스템으로 전송하는 단계; 를 포함한다.

Description

실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법{TARGET AGENT METHOD FOR DEBUGGING EMBEDDED SYSTEM SOFTWARE BASED ON RTOS}
본 발명은 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법에 관한 것으로서, 더욱 상세하게는 타겟 시스템에 적재된 실시간 운영체제에 종속적이지 않게 호스트의 원격 디버깅 서비스를 처리하고, 프로그램을 로딩하고 실행하는 원격 쉘 서비스, 데이터를 수집하여 탑재하고 수집한 데이터를 호스트 시스템에 전달하는 원격 자원 모니터 서비스를 호스트 시스템에게 제공하는 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법에 관한 것이다.
최근 인터넷의 폭발적 성장과 함께 나타난 두드러진 현상은 컴퓨터뿐만 아니라, 다양한 정보 기기들이 인터넷에 직접 접속되기 시작하였다는 것이다. 전화기, TV, PDA 및 공작 기계 등은 물론이고 냉장고, 전자레인지 등의 가전제품들의 인터넷 접속까지 논의되고 있는 단계에 이르고 있다. 이러한 기기들의 특징은 마이크로 프로세서를 내장하여 여러 개의 실시간 응용 프로그램(Real-Time Application)을 수행한다는 것이다.
과거의 실시간 응용 프로그램의 개발은 운영 체계(Operating System : OS)의 지원없이 주로 어셈블리 언어(Assembly Language)를 사용하여 장치 제어에서부터, 사용자 인터페이스(User Interface)에 이르기까지 전체를 개발하고, 타겟 시스템(Target System) 상에 적재된 롬(ROM : Read - Only Memory) 모니터와 호스트 - 타겟 간 시리얼(Serial) / 이더넷(Ethernet)을 통하여 디버깅하였다.
그러나, 인터넷 접속 기능 등 응용에서 요구되는 기능이 더욱 복잡하고, 다양해지면서, 실시간 운영 체계의 지원 없이는 개발이 불가능하게 되었다. 또한, 고급 언어(High - Level Language)를 사용하여 응용 프로그램을 작성하는 것이 일반적으로 되었는데, 내장형 시스템(Embedded System)은 메모리나 디스크 등 자원이 한정되어 있어서, 호스트 컴퓨터에서 주로 개발을 하여, 타겟 시스템의 실행 코드를 생성해내는 교차 개발(Cross Development) 방법이 많이 사용되고 있다. 고급 언어를 사용한 실시간 응용 프로그램의 교차 개발을 위해서는 호스트 컴퓨터 상에서 실행되는 다양한 개발 도구의 지원이 필수적이다. 여기에는 디버거와 대화형 쉘(Interactive Shell), 자원 모니터(Resource Monitor) 등이 포함된다.
디버거는 도구 중 가장 중요한 것이라고 할 수 있는데, 타겟 시스템에서 수행되는 프로그램을 호스트 컴퓨터에서 소스 레벨 디버깅하는 원격 디버깅(Remote Debugging)을 실현하기 위해서는 타겟 시스템 내에 이를 지원해 주는 태스크가 존재하여야 하며, 이를 디버그 에이전트(Debug Agent)라고 정의한다.
호스트 시스템에서 수행되는 심볼릭 디버거(Symbolic Debugger)와 타겟 시스템 상의 디버그 에이전트 간에는 원격 디버깅을 위한 프로토콜이 존재하여 디버깅 명령 및 각종 디버깅 정보를 주고받는데 사용된다.
도 1 은 종래 기술에 따른 디버깅 환경을 도시한 개략도로서, 이를 상세히 설명하면 다음과 같다.
종래의 기술에서는 호스트 OS(102) 상에 원격 디버거(101)가 존재하고, 타겟 시스템의 ROM 또는 플래시 메모리 등에 저장된 모니터 프로그램(103)이 적재되어 있으며, 이들은 시리얼 또는 이더넷(105)을 통하여 호스트의 원격 디버깅 서비스를 처리한다. 종래의 기술은 주로 실시간 운영 체계의 도움 없이 타겟의 실시간 내장형 소프트웨어(104)를 개발하는데 필요한 기법이다. 따라서, 이들 간의 프로토콜도 주로 디버깅을 위한 단순한 메시지이며, 디버그 에이전트 자체도 타겟 보드의 ROM 또는 모니터(103)에 적재되므로, 타겟 보드에 의존적이 된다. 또한, 단순한 기능만을 구현하므로 내부 코드는 어셈블리 언어로 작성되는 경우가 많아 새로운 보드를 작성하는 경우에는 타겟 보드상에 새로이 이식해야 하는 문제점이 있다.
일반적인 클라이언트/서버 형태의 디버깅 환경을 갖추고 있는 종래의 디버그 에이전트 장치는 클라이언트가 주로 원격 디버거일 경우에 한정되기 때문에, 클라이언트가 디버거 뿐만 아니라 원격 쉘이나 원격 자원 모니터와 같은 다른 기능을 가진 클라이언트들을 위한 서비스를 지원할 수 없었다.
본 발명은 상기와 같은 문제점을 감안하여 안출된 것으로, 타겟 시스템에 적재된 실시간 운영체제에 종속적이지 않게 호스트의 원격 디버깅 서비스를 처리하며, 프로그램을 로딩하고 실행하는 원격 쉘 서비스, 데이터를 수집하여 탑재하고 수집한 데이터를 호스트 시스템에 전달하는 원격 자원 모니터 서비스 등 호스트에서 요청하는 서비스의 종류에 따라 해당 서비스를 수행하는 방법을 제공함에 그 목적이 있다.
이러한 기술적 과제를 달성하기 위한 본 발명은 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법에 관한 것으로서, 타겟 시스템(Target System)에서 수행되는 프로그램을 호스트 시스템(Host System)에서 소스 레벨 디버깅(Source Level Debugging)하는 원격 디버깅(Remote Debugging) 서비스, 프로그램을 로딩하고 실행하는 원격 쉘 서비스, 데이터를 수집하여 탑재하고 수집한 데이터를 호스트 시스템에 전달하는 원격 자원 모니터 서비스를 실현하기 위한 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법에 있어서, (a) 상기 호스트 시스템에 있는 교차 개발 도구들의 서비스 요청을 전달받아, 상기 서비스가 어떠한 형태의 서비스 요청인가를 판단하는 단계; (b) 상기 (a) 단계에서 판단된 서비스 종류에 따라 해당 서비스를 수행하는 단계; 및 (c) 상기 (b) 단계에서 수행된 서비스 결과를 상기 호스트 시스템으로 전송하는 단계; 를 포함한다.
상기와 같은 본 발명에 따르면, ROM 모니터와 비교하여 볼 때, 종래에는 주로 호스트 시스템의 원격 디버거를 위한 서비스만이 제공되는 것을 본 발명에 의하면, 호스트 시스템의 대화형 쉘, 원격 디버거, 자원 모니터 등의 서비스를 한꺼번에 제공함으로써, 내장형 실시간 소프트웨어의 개발을 용이하게 할 수 있으며, 호스트 시스템과의 통신 프로토콜을 최소로 하여 타겟 시스템의 부하(Overhead)를 최소로 할 뿐만 아니라, 타겟 시스템에 상주하는 실시간 운영 체제에 독립적인 인터페이스를 이용함으로써, 타겟 시스템의 운영 체제에 독립적이므로, 실시간 운영 체제에 쉽게 이식(Porting)이 가능하다는 효과가 있다.
도 1 은 종래 기술에 따른 디버깅 환경을 도시한 개략도.
도 2 는 본 발명에 따른 디버그 에이전트를 사용한 실시간 운영체제 기반 임베디드 시스템 소프트웨어의 원격 디버깅 환경을 도시한 개략도.
도 3 은 도 2 에 도시된 디버그 에이전트의 내부 모듈 구성도.
도 4 는 본 발명에 따른 호스트 시스템의 도구들이 원격 프로시져 호출을 통하여 보낸 요청 서비스를 타겟 시스템 측의 디버그 에이전트가 처리하는 과정을 나타낸 흐름도.
도 5 는 도 3 에 도시된 메인 장치로부터 각 서비스 처리 장치로 보내진 요청들을 상기 디버그 에이전트의 각 장치들이 처리하는 과정을 나타낸 흐름도.
도 6 은 도 3 에 도시된 디버그 에이전트가 타겟 보드상의 실시간 운영 체제의 커널 태스크로서, 초기화되는 과정을 나타낸 흐름도.
도 7 은 도 2 에 도시된 호스트 시스템과 타겟 시스템의 디버그 에이전트 간의 디버깅을 위한 프로토콜을 나타낸 테이블 구조의 예시도.
본 발명의 구체적 특징 및 이점들은 첨부도면에 의거한 다음의 상세한 설명으로 더욱 명백해질 것이다. 이에 앞서 본 발명에 관련된 공지 기능 및 그 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는, 그 구체적인 설명을 생략하였음에 유의해야 할 것이다.
이하, 첨부된 도면을 참조하여 본 발명을 상세하게 설명한다.
본 발명에 따른 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법에 관하여 도 2 내지 도 7 을 참조하여 설명하면 다음과 같다.
도 2 는 본 발명에 따른 디버그 에이전트를 사용한 실시간 운영체제 기반 임베디드 시스템 소프트웨어의 원격 디버깅 환경을 도시한 개략도로서, 이를 상세히 설명하면 다음과 같다.
디버그 에이전트(204)에서 수행하는 일들은 정지점의 설정 / 해제, 타겟 시스템의 메모리, 레지스터의 내용 조회 및 변경, 목적 프로그램의 실행을 제어하는 원격 디버깅 기능과 타겟에 적재된 오브젝트 코드 내의 함수 호출, 호스트 시스템으로의 이벤트 통지(예외 상황, 태스크의 종료) 기능과 가상 I/O 기능을 포함한다.
호스트 시스템에 있는 원격 디버거(201)는 범용 운영 체계 상에서 동작하고, 어플리케이션 수준의 원격 프로시져 호출(RPC : Remote Procedure Call)을 할 수 있으므로, 상기 디버거(201)와 같은 호스트 시스템 도구들은 원격 프로시져 호출을 할 때, 요청을 원하는 프로토콜의 이름과 원하는 함수 호출, 그리고 함수 호출에 필요한 입출력 데이터를 인자로 하여 호출하는 구조를 가지도록 한다. 상기 디버거(201)와 같은 도구들은 호스트 시스템에서 제공되는 원격 프로시져 호출 인터페이스를 통하여 상기 디버그 에이전트(204)에게 전달하여 원하는 기능을 수행하도록 하고, 그 결과를 타겟으로부터 넘겨받는다.
상기 디버거(201)와 상기 디버그 에이전트(204)간의 인터페이스를 위하여 프로토콜이 정의될 수 있으며, 상기 디버거(201)와 상기 디버그 에이전트(204)는 디버그 프로토콜을 사용하여 통신하며, 이것은 원격 프로시져 호출을 이용한 어플리케이션 레벨 프로토콜인데, 타겟 시스템과 호스트 시스템의 운영 체제에 대하여 독립성을 가지도록 설계하였고, 타겟 시스템의 자원 사용을 최소화할 수 있도록 하였다.
도 3 은 타겟 시스템의 실시간 운영체제 상에서 수행되는 임베디드 시스템 소프트웨어의 교차개발을 지원하기 위한 도 2 에 도시된 디버그 에이전트의 내부 모듈 구성도이다.
이 디버그 에이전트는 호스트로부터 요청되는 프로토콜 메시지들을 처리하는데, 이 프로토콜 메시지들로는 호스트 내의 개발도구들(디버거, 대화형 쉘, 자원 모니터)로부터의 요청, 호스트가 위치한 타겟 시스템 상의 컨텍스트의 생성/소멸/재시작 요청, 상기 타겟 시스템으로부터의 이벤트/타겟 메모리에 적재된 오브젝트 모듈의 실행 및 종료 인지, 타겟 시스템에 적재된 오브젝트 코드내의 함수 호출, 호스트상의 도구들이 요청하는 타겟의 메모리/레지스터의 상태정보, 타겟 시스템에 콘솔이 없을 경우 그 출력값을 호스트상의 터미널로 출력할 수 있도록 가상 입출력으로의 출력요청 등이 있다. 상기 디버그 에이전트는 메인 장치(301, Main Module), 컨텍스트 관리 장치(302, Context Manager), 함수 호출 관리 장치(303, Function Call Manager), 직접 호출 관리 장치(304, Direct Call Manager), 이벤트 관리 장치(305, Events Manager), 가상 입출력 관리 장치(306, Virtual I/O Manager), 정지점 관리 장치(307, Breakpoint Manager), 예외 상황 통보 장치(308, Exception Notifier), 종료 통보 장치(309, Exit Notifier), 메모리 관리 장치(310, Memory Manager), 레지스터 관리 장치(311, Register Manager) 및 백 엔드 관리 장치(312)로 구성되어 있다.
이를 상세히 설명하면 다음과 같다.
먼저, 상기 메인 장치(301)는 호스트 시스템으로부터의 서비스 요청을 수락하여, 요청의 종류를 판단하고, 해당 장치를 관리한다.
또한, 상기 정지점 관리 장치(307)는 상기 판단된 요청이 정지점 설정 및 해제에 관한 것일 때, 그 요청을 처리하며, 호스트 시스템의 디버거(201)에서 설정한 정지점을 처리하기 위하여 정지점들을 이중 연결 리스트(Doubly Linked List)로 관리한다.
또한, 상기 컨텍스트 관리 장치(302)는 상기 판단된 요청이 컨텍스트에 관한 요청일 때, 그 요청을 처리하며, 새로운 컨텍스트를 생성, 소멸, 재개 및 중지하는 등의 타겟 시스템 상의 컨텍스트를 관리하는 서비스를 제공한다.
또한, 상기 레지스터 관리 장치(311)는 상기 판단된 요청이 레지스터의 값을 읽고 쓰는 것에 관한 것일 때, 그 요청을 처리하며, 타겟 시스템의 레지스터 값을 얻어내고 새로운 값을 설정하는 원격 프로시져 함수 호출 서비스를 제공한다.
또한, 상기 메모리 관리 장치(310)는 상기 판단된 요청이 메모리 처리일 때, 그 요청을 처리하며, 메모리 값에 대한 체크섬(Checksum) 계산, 메모리 읽기/쓰기, 메모리 채우기, 메모리 보호 및 메모리 이동 등의 기능을 수행한다.
또한, 상기 함수 호출 관리 장치(303)는 상기 판단된 요청이 타겟 시스템의 실시간 운영 체제 내의 함수 호출일 때, 그 요청을 처리하며, 호스트 시스템의 도구에서 요청한 함수를 수행하는 태스크를 생성하고 실행시키는 기능을 수행한다.
또한, 상기 직접 호출 관리 장치(304)는 상기 판단된 요청이 상기 디버그 에이전트 내 컨텍스트 내에 있는 함수 호출일 경우, 그 요청을 처리하며, 타겟 시스템 상의 함수를 호출하지만 태스크를 생성하지 아니하고, 상기 디버그 에이전트의 컨텍스트 내에서 수행한다.
또한, 상기 이벤트 관리 장치(305)는 상기 판단된 요청이 이벤트 설정 및 해제일 경우, 그 요청을 처리하며, 이벤트 포인트를 추가하고 삭제하는 기능을 수행한다.
또한, 상기 가상 I/O 관리 장치(306)는 상기 판단된 요청이 가상 입출력에 관한 것일 때, 그 요청을 처리하는데 타겟 시스템의 가상 I/O 채널에 데이터를 기록하며, 상기 타겟 시스템으로부터의 출력값을 호스트 시스템 도구에서 제공하는 가상 터미널로 전송하는 기능을 수행한다.
또한, 상기 예외 상황 통보 장치(308)는 상기 판단된 요청을 처리시 실시간 운영 체제 내에서 예외 상황이 발생하면, 이를 처리하며, 예외 상황을 호스트 시스템으로 알리는 기능을 수행한다.
또한, 상기 종료 통보 장치(309)는 상기 판단된 요청을 처리시 실시간 운영 체제 내에서 태스크의 종료를 알리는 이벤트가 발생할 경우, 이를 처리하며, 컨텍스트의 종료를 호스트 시스템에 알리는 기능을 수행한다.
또한, 상기 백 엔드 장치(312)는 상기 호스트 시스템에서 원격 프로시져 함수 호출이 가능하도록 패킷 드라이버와 해석기(Interpreter)로 구성되어 있으며, 물리적인 네트웍을 통하여 패킷을 주고 받는다. 타겟 시스템은 가용 자원이 제한적이므로, 본 실시예에서는 경량 패킷 해석기를 이용하여 타겟 시스템의 메모리 요구를 최소화하도록 설계하였다.
도 4 는 본 발명에 따른 호스트 시스템의 도구들이 원격 프로시져 호출을 통하여 보낸 요청 서비스를 상기 타겟 시스템측의 디버그 에이전트(204)가 처리하는 과정을 나타낸 흐름도이다.
먼저, 스텝 S401에서, 초기화된 메인 장치(301)는 호스트 시스템으로부터의 서비스 요청을 대기한 후, 스텝 S402에서, 호스트 시스템으로부터의 서비스 요청이 있는지 여부를 판단한다.
상기 스텝 S402에서의 판단 결과, 서비스 요청이 있으면, 스텝 S403에서, 호스트 시스템으로부터의 요청을 인지한 후, 스텝 S404에서, 서비스 요청의 종류를 판단하여, 스텝 S405에서, 상기 판단된 서비스 요청의 종류에 따라 해당 메시지를 출력하고, 스텝 S406에서, 타겟 시스템에 예외 상황이 발생하였는지 여부를 판단한다.
상기 스텝 S406에서의 판단 결과, 예외 상황이 발생하면, 스텝 S407에서, 상기 예외 상황 통보 장치(308)에게 호스트 시스템으로 알릴 것을 지시한 한 후, 상기 스텝 S401로 복귀한다.
상기 스텝 S406에서의 판단 결과, 예외 상황이 발생하지 아니하면, 스텝 S408에서, 작업이 완료되었는지 여부를 판단한다.
상기 스텝 S408에서의 판단 결과, 작업이 완료되지 아니하면, 상기 스텝 S401로 복귀하고, 작업이 완료되면, 스텝 S409에서, 상기 종료 통보 장치(409)에게 호스트 시스템으로 알릴 것을 지시한 후, 상기 스텝 S401로 복귀한다.
도 5 는 도 3 에 도시된 상기 메인 장치(301)로부터 각 서비스 처리 장치로 보내진 요청들을 상기 디버그 에이전트의 각 장치들이 처리하는 과정을 나타낸 흐름도로서, 이를 상세히 설명하면 다음과 같다.
먼저, 스텝 S501에서, 상기 메인 장치(301)로부터 요청 메시지를 접수한 후, 스텝 S502에서 필요한 내부 처리를 수행하고, 스텝 S503에서, 상기 내부 처리 수행 중 타겟 시스템 상에 적재된 실시간 운영 체재 내의 커널(Kernel) 함수 호출이 존재하는지 여부를 판단한다.
상기 스텝 S503에서의 판단 결과, 커널 함수 호출이 존재하면, 스텝 S504에서, 해당 커널 함수 호출을 한 후, 스텝 S505에서, 요청 서비스를 처리하기 위한 나머지 작업을 처리하고, 스텝 S506에서, 예외 상황이 존재하는지 여부를 파악한다.
상기 스텝 S506에서의 판단 결과, 예외 상황이 존재하면, 스텝 S507에서, 예외 상황을 상기 예외 상황 통보 장치(308)에게 알린 후, 대기 상태로 복귀한다.
상기 스텝 S506에서의 판단 결과, 예외 상황이 존재하지 아니하면, 스텝 S508에서, 태스크가 종료 상태인지 여부를 판단한다.
상기 스텝 S508에서의 판단 결과, 종료 상태이면, 스텝 S509에서, 태스크의 종료 상태를 상기 태스크 종료 통보 장치(309)에게 알린 후, 대기 상태로 복귀하고, 종료 상태가 아니면, 스텝 S510에서, 작업 수행의 결과값을 상기 메인 장치(301)에게 반환한 후, 종료한다.
또한, 상기 스텝 S503에서의 판단 결과, 커널 함수 호출이 존재하지 아니하면, 상기 스텝 S506으로 진행한다.
도 6 은 도 3 에 도시된 상기 디버그 에이전트(204)가 타겟 시스템 보드 상의 실시간 운영 체제의 커널 태스크로서, 초기화되는 과정을 나타낸 흐름도로서, 이를 상세히 설명하면 다음과 같다.
먼저, 스텝 S601에서, 커널과의 인터페이스를 위하여, 상기 디버그 에이전트(204) 내의 커널 함수 포인터를 초기화한 후, 스텝 S602에서, 서비스 초기화를 하고, 스텝 S603에서, 호스트 시스템의 원격 디버거(201)가 상기 타겟 시스템 측의 디버그 에이전트(204)로 접속할 수 있도록 접속 라이브러리(Library)를 초기화한다.
이어서, 스텝 S604에서, 메모리 참조를 위한 메모리 라이브러리를 초기화한 후, 스텝 S605에서, 상기 디버그 에이전트(204) 내의 초기화 과정이 끝나면, 정의된 장치를 사용할 수 있도록 해당 장치들을 초기화하고, 스텝 S606에서, 디버그 에이전트를 초기화한다.
이어서, 스텝 S607에서, 상기 디버그 에이전트(204)를 하부 실시간 운영 체제의 하나의 커널 태스크로서 활성화한 후, 스텝 S608에서, 서비스의 시작 부분이 있는 상기 메인 장치(301)로 제어권을 넘겨주고, 종료한다.
도 7 은 도 2 에 도시된 호스트 시스템과 타겟 시스템의 디버그 에이전트(204) 간의 디버깅을 위한 프로토콜을 나타낸 테이블 구조의 예시도로서, 이를 상세히 설명하면 다음과 같다.
본 실시예에서는 호스트 시스템과 타겟 시스템 간의 프로토콜은 크게 컨텍스트 처리, 이벤트 처리, 메모리 처리, 레지스터 처리, 가상 입출력, 커널 함수 호출, 디버그 에이전트의 컨텍스트내 직접 호출에 관한 7가지 분류, 총 25개로 구성되는데, 각각은 호스트에서 함수 호출시 인자로 넘겨줄 수 있도록, 0에서 24의 값으로 설계하였다.
상기 프로토콜은 도 3 의 도시된 메인 장치(302)에서 프로토콜의 종류를 판단하는데 사용하며, 이들의 값을 보고 수행할 해당 장치를 인지하여 해당 장치로 전달한다.
이상으로 본 발명의 기술적 사상을 예시하기 위한 바람직한 실시예와 관련하여 설명하고 도시하였지만, 본 발명은 이와 같이 도시되고 설명된 그대로의 구성 및 작용에만 국한되는 것이 아니며, 기술적 사상의 범주를 일탈함이 없이 본 발명에 대해 다수의 변경 및 수정이 가능함을 당업자들은 잘 이해할 수 있을 것이다. 따라서, 그러한 모든 적절한 변경 및 수정과 균등물들도 본 발명의 범위에 속하는 것으로 간주되어야 할 것이다.

Claims (4)

  1. 타겟 시스템(Target System)에서 수행되는 프로그램을 호스트 시스템(Host System)에서 소스 레벨 디버깅(Source Level Debugging)하는 원격 디버깅(Remote Debugging) 서비스, 프로그램을 로딩하고 실행하는 원격 쉘 서비스, 데이터를 수집하여 탑재하고 수집한 데이터를 호스트 시스템에 전달하는 원격 자원 모니터 서비스를 실현하기 위한 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법에 있어서,
    (a) 상기 호스트 시스템에 있는 교차 개발 도구들의 서비스 요청을 전달받아, 상기 서비스가 어떠한 형태의 서비스 요청인가를 판단하는 단계;
    (b) 상기 (a) 단계에서 판단된 서비스 종류에 따라 해당 서비스를 수행하는 단계; 및
    (c) 상기 (b) 단계에서 수행된 서비스 결과를 상기 호스트 시스템으로 전송하는 단계; 를 포함하는 것을 특징으로 하는 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법.
  2. 제 1 항에 있어서,
    상기 (b) 단계는,
    (b-1) 상기 (a) 단계에서 판단된 요청이 정지점 설정 및 해제에 관한 것일 때, 그 요청을 처리하며, 상기 호스트 시스템의 디버거에서 설정한 정지점을 처리하기 위하여 정지점들을 이중 연결 리스트(Doubly Linked List)로 관리하는 정지점 관리단계;
    (b-2) 상기 (a) 단계에서 판단된 요청이 상기 타겟 시스템의 실시간 운영 체제 내의 함수 호출이면, 상기 호스트 시스템의 도구에서 요청한 함수를 수행하는 태스크를 생성하고 실행시키는 기능을 수행하는 함수 호출 관리단계;
    (b-3) 상기 (a) 단계에서 판단된 요청이 디버그 에이전트 내 컨텍스트 내에 있는 함수 호출이면, 상기 타겟 시스템 상의 함수를 호출하지만 태스크를 생성하지 아니하고, 디버그 에이전트의 컨텍스트 내에서 수행하는 직접 호출 관리단계;
    (b-4) 상기 (a) 단계에서 판단된 요청이 가상 입출력에 관한 것이면, 상기 타겟 시스템의 가상 입출력 채널에 데이터를 기록하며 상기 타겟 시스템으로부터의 출력값을 상기 호스트 시스템의 도구에서 제공하는 가상 터미널로 전송하는 기능을 수행하는 가상 입출력 관리단계; 및
    (b-5) 상기 (a) 단계에서 판단된 요청을 처리시 실시간 운영 체제 내에서 태스크의 종료를 알리는 이벤트가 발생하면, 컨텍스트의 종료를 상기 호스트 시스템에게 알리는 기능을 수행하는 종료 통보단계; 를 포함하는 것을 특징으로 하는 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법.
  3. 제 1 항에 있어서,
    상기 디버그 에이전트로부터 해당 커널 함수 호출이 있으면, 상기 디버그 에이전트 내의 커널 함수 포인터를 초기화하고, 상기 호스트 시스템의 원격 디버거가 상기 디버그 에이전트로 접속할 수 있도록 접속 라이브러리를 초기화하며, 상기 디버그 에이전트를 하부 실시간 운영 체제의 하나의 커널 태스크로서 활성화시킨 후, 상기 (a) 단계를 수행하는 것을 특징으로 하는 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법.
  4. 제 1 항에 있어서,
    상기 (b) 단계는,
    (b-6) 상기 (a) 단계에서 판단된 요청이 컨텍스트에 관한 요청이면, 해당 컨텍스트를 생성, 소멸, 재개 및 중지하는 등의 상기 타겟 시스템상의 컨텍스트를 관리하는 컨텍스트 관리단계;
    (b-7) 상기 (a) 단계에서 판단된 요청이 레지스터의 값을 읽고 쓰는 것에 관한 것이면, 상기 타겟 시스템의 레지스터 값을 얻어내고 새로운 값을 설정하는 원격 프로시져 함수 호출 서비스를 제공하는 레지스터 관리단계;
    (b-8) 상기 (a) 단계에서 판단된 요청이 메모리 처리에 관한 것이면, 메모리 값에 대한 체크섬(Checksum) 계산, 메모리 읽기/쓰기, 메모리 채우기, 메모리 보호 및 메모리 이동 등의 기능을 수행하는 메모리 관리단계;
    (b-9) 상기 (a) 단계에서 판단된 요청이 이벤트(Event) 설정 및 해제이면, 이벤트 포인트(Point)를 추가하고 삭제하는 기능을 수행하는 이벤트 관리단계; 및
    (b-10) 상기 (a) 단계에서 판단된 요청을 처리 시 실시간 운영 체제 내에서 예외 상황이 발생하면, 예외 상황을 상기 호스트 시스템에게 알리는 기능을 수행하는 예외상황 통보단계; 를 더 포함한 것을 특징으로 하는 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법.
KR1020120005147A 2012-01-17 2012-01-17 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법 KR20130084397A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120005147A KR20130084397A (ko) 2012-01-17 2012-01-17 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120005147A KR20130084397A (ko) 2012-01-17 2012-01-17 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법

Publications (1)

Publication Number Publication Date
KR20130084397A true KR20130084397A (ko) 2013-07-25

Family

ID=48995010

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120005147A KR20130084397A (ko) 2012-01-17 2012-01-17 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법

Country Status (1)

Country Link
KR (1) KR20130084397A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104615532A (zh) * 2015-01-04 2015-05-13 南京航空航天大学 基于VxWorks操作系统的航天软件在轨调试方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104615532A (zh) * 2015-01-04 2015-05-13 南京航空航天大学 基于VxWorks操作系统的航天软件在轨调试方法

Similar Documents

Publication Publication Date Title
US9632913B2 (en) Remote debug service in a cloud environment
US5630049A (en) Method and apparatus for testing software on a computer network
US9122793B2 (en) Distributed debugging of an application in a distributed computing environment
US20050216895A1 (en) Method and apparatus for remote debugging of kernel and application software
US8566799B2 (en) Resuming a prior debug session
US20160300044A1 (en) Anti-debugging method
US8677321B2 (en) User-space probe based debugging
US20050223359A1 (en) Techniques for multi-core debugging
US20150319221A1 (en) Tracing business transactions based on application frameworks
US11494234B2 (en) Multi-language stateful serverless workloads
US9535666B2 (en) Dynamic agent delivery
CN110659131B (zh) 任务处理方法、电子装置、计算机设备及存储介质
US10169193B2 (en) Common debug scripting framework for driving hybrid applications consisting of compiled languages and interpreted languages
US9483327B2 (en) Mechanism for interposing on operating system calls
US9971611B2 (en) Monitoring a mobile device application
US10073689B2 (en) Managing application lifecycles within a federation of distributed software applications
KR100334904B1 (ko) 내장형 실시간 소프트웨어의 디버그 에이전트 장치 및 그 운용 방법
KR20130084397A (ko) 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법
KR20140140790A (ko) Rtos 기반 임베디드 시스템 소프트웨어 모니터링을 위한 타겟 에이젼트 운용 방법
Gioachin et al. Debugging large scale applications in a virtualized environment
US10165074B2 (en) Asynchronous custom exit points
US9405658B1 (en) Method and apparatus for debugging applications in development environments
US9838488B2 (en) Agent asynchronous transaction monitor
US20240265094A1 (en) Enabling runtime observability for applications hosted in a secure workspace
CN116566795A (zh) 一种微服务实例之间的依赖关系的获取方法以及相关设备

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination