KR100674751B1 - 멀티태스크 시스템을 디버그하기 위한 디버그 시스템 및회로 - Google Patents

멀티태스크 시스템을 디버그하기 위한 디버그 시스템 및회로 Download PDF

Info

Publication number
KR100674751B1
KR100674751B1 KR1020050082050A KR20050082050A KR100674751B1 KR 100674751 B1 KR100674751 B1 KR 100674751B1 KR 1020050082050 A KR1020050082050 A KR 1020050082050A KR 20050082050 A KR20050082050 A KR 20050082050A KR 100674751 B1 KR100674751 B1 KR 100674751B1
Authority
KR
South Korea
Prior art keywords
task
program
multitask
interrupt
debug
Prior art date
Application number
KR1020050082050A
Other languages
English (en)
Other versions
KR20060051011A (ko
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 마츠시타 덴끼 산교 가부시키가이샤
Publication of KR20060051011A publication Critical patent/KR20060051011A/ko
Application granted granted Critical
Publication of KR100674751B1 publication Critical patent/KR100674751B1/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
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by 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

멀티태스크 시스템의 디버그를 용이하게 하는 디버그 시스템과 디버그 방법, 및 그러한 디버그 방법을 채용할 수 있는 회로 등을 제공한다.
디버그 시스템은, 디버거 프로그램을 실행하는 호스트 컴퓨터와, 디버거 프로그램에 의해서 디버그되는 제 1 멀티태스크 시스템, 및 비(非)디버그 대상의 제 2 멀티태스크 시스템을 갖는 복합 시스템이 구축된 회로를 포함한다. 회로는, 프로그램이 판독된 메모리, 및 메모리 상의 프로그램을 실행할 수 있는 처리부를 구비하고 있다. 메모리는, 제 1 멀티태스크 시스템의 1 이상의 태스크 프로그램을 관리하는 제 1 오퍼레이팅 시스템과, 제 1 오퍼레이팅 시스템을 제 1 태스크 프로그램으로서 관리하고, 또한, 제 1 태스크 프로그램과는 상이한 1 이상의 제 2 태스크 프로그램을 관리하는 제 2 오퍼레이팅 시스템을 저장한다.

Description

멀티태스크 시스템을 디버그하기 위한 디버그 시스템 및 회로{DEBUG SYSTEM AND CIRCUIT FOR DEBUGGING MULTITASK SYSTEM}
도 l은 실시예 1에 따른 디버그 기능에 의해서 개발된 제 1 광 디스크 시스템의 구성을 도시하는 도면,
도 2는 실시예에 따른 디버그 기능에 의해서 개발된 제 2 광 디스크 시스템의 구성을 도시하는 도면,
도 3은 복합형 멀티태스크 시스템이 구축된 대규모 반도체 집적 회로(LSI)(109)의 구성을 도시하는 도면,
도 4는 실시예 1에 있어서의, 디버그 시스템의 전체 구성을 도시한 개략도,
도 5는 CPU(111)와 인터럽트 제어 장치(112)의 상세한 구성도,
도 6은 디버그 대상 멀티태스크 시스템을 정지하는 처리 예를 나타내는 플로우차트,
도 7은 디버그 대상 멀티태스크 시스템을 재개하는 처리 예를 나타내는 플로우차트,
도 8은 실시예 2에 있어서의, 디버그 시스템의 전체 구성을 도시한 개략도,
도 9는 인터럽트를 판정하는 처리 예를 나타내는 플로우차트,
도 10은 실시예 2에 있어서의, 인터럽트 처리 태스크를 기동하는 처리 예를 나타내는 플로우차트,
도 11은 실시예 2에 있어서의, 인터럽트 처리 태스크 종료 시의 처리 예를 나타내는 플로우차트,
도 12는 실시예 2에 있어서의, 인터럽트가 발생한 경우에 있어서의 태스크의 천이의 타이밍도,
도 13은 실시예 2에 있어서의, 제 1 OS 태스크 및 제 2 OS의 레디 큐(ready queue)의 상태를 도시하는 도면,
도 14는 비(非)디버그 대상의 멀티태스크 시스템을 OS 태스크로 관리한 경우의 태스크 구성도,
도 15는 실시예 3에 있어서의, 인터럽트 처리 태스크를 기동하는 처리 예를 나타내는 플로우차트,
도 16은 실시예 3에 있어서의, 제 2 OS의 태스크 디스패치 처리의 처리 예를 나타내는 플로우차트,
도 17은 실시예 3에 있어서의, 인터럽트 처리 태스크 종료 시의 처리 예를 나타내는 플로우차트,
도 18은 실시예 3에 있어서의, 인터럽트가 발생한 경우에 있어서의 태스크의 천이의 타이밍도,
도 19는 실시예 3에 있어서의, 제 1 OS 태스크 및 제 2 OS의 레디 큐의 상태를 도시하는 도면,
도 20은 종래의 광 디스크 시스템의 개략적인 구성을 도시하는 도면.
도면의 주요 부분에 대한 부호의 설명
110 : 타겟 시스템 111 : CPU
112 : 인터럽트 제어 장치 113 : 실 메모리
120 : 모니터 프로그램 130 : 제 2 OS
140 : 멀티태스크 시스템 141 : 태스크
142 : 태스크 150 : 디버그 대상 멀티태스크 시스템
151 : 태스크 152 : 태스크
160 : 제 1 OS(태스크) l70 : 호스트 컴퓨터
180 : 디버거 190 : 인터페이스 버스
200(1)∼200(n) : 인터럽트 그룹 제어부
500 : 인터럽트 처리 510 : 가상 인터럽트 제어 프로그램 1110 : 제 3 OS
본 발명은, 멀티태스크 시스템을 디버그하기 위한 디버그 시스템 및 그 방법에 관한 것이다. 보다 구체적으로는, 본 발명은 복수의 태스크 처리와 인터럽트 처리로 구성되는 멀티태스크 시스템의 프로그램을 디버그하기 위한 디버그 방법, 및 그 디버그 방법을 이용하여 디버그를 행하는 것이 가능한 시스템, 회로 등에 관 한 것이다.
종래의 컴퓨터 시스템에서는, 하나의 작업(job)을 하나의 태스크로 하여 관리하는 단일(single) 태스크 프로그램을 하나의 프로세서로 처리하고 있었다. 그러나 최근에는, 일련의 독립된 복수의 태스크로 구성되는 멀티태스크 프로그램을 하나의 프로세서 상에서 처리하는 멀티태스크 시스템도 많이 개발되고 있다. 멀티태스크 프로그램에 의하면, 컴퓨터 상에서 복수의 태스크를 외견상 동시에(병렬적으로) 실행시키는 것이 가능하여 작업 효율을 향상시킬 수 있다.
컴퓨터 시스템의 예로서, 광 디스크를 이용하여 정보의 기록 및/또는 재생을 행하는 광 디스크 시스템이 알려져 있다. 도 20은, 종래의 광 디스크 시스템의 개략적인 구성을 나타낸다. 광 디스크 시스템은, 광 디스크(8)가 장전 가능한 드라이브 장치(91) 및 호스트 컴퓨터(92)로 구성되고, 호스트 인터페이스 버스(93)를 거쳐서 접속되어 있다.
이 광 디스크 시스템은, 시스템 콘트롤러(94) 및 광 디스크 콘트롤러(95)를 포함하고 있다. 시스템 콘트롤러(94) 및 광 디스크 콘트롤러(95)는 독립된 LSI로서 실장되어 있고, 각각이 별개의 멀티태스크 시스템으로서 기능하고 있다.
시스템 콘트롤러(94)는, 내장된 호스트 제어 태스크(1711)와 드라이브 제어 태스크(1722)에 따라서, 드라이브 장치(91) 전체의 동작을 제어한다. 예컨대, 시스템 콘트롤러(94)의 CPU(96)는, 제 1 OS에 의해서 관리되는 호스트 제어 태스크(1711), 드라이브 제어 태스크(1712)를 처리하고 있다.
한편, 광 디스크 콘트롤러(95)는, 각 태스크에 따라서, 광 디스크(8)로의 정 보의 기록과 재생을 위한 액세스를 제어하고 있다. 예컨대, 광 디스크 콘트롤러(95)의 CPU(97)는, 제 2 OS에 의해서 관리되는 서보 제어 태스크(1721), 디스크 제어 태스크(1722)를 처리하고 있다.
시스템 콘트롤러(94) 및 광 디스크 콘트롤러(95)의 각 태스크는, 연휴하면서 드라이브 장치(91)를 동작시킨다.
예컨대, 시스템 콘트롤러(94)의 드라이브 제어 태스크(1712)는, 광 디스크 콘트롤러(95)의 디스크 제어 태스크(1722)에 대해 데이터의 판독 요구 또는 기입 요구를 송출한다. 그러면, 디스크 제어 태스크(1722)는 데이터의 판독 또는 기입을 실행한다. 판독된 데이터 또는 기입 완료/실패의 통지는, 드라이브 제어 태스크(1712)로 돌려 보내진다.
멀티태스크 프로그램의 개발과 함께, 멀티태스크 프로그램을 디버그하는 기술이 여러 가지 개발되고 있다. 예컨대, 특허 문헌 1은, 오퍼레이팅·시스템(이하, 「0S」라고 기재함) 상에서 동작하는 태스크 중에서 복수의 태스크를 지정하여, 지정된 태스크 중 어느 하나의 실행이 정지되거나, 또는 브레이크포인트(breakpoint)에 의해서 정지된 경우에, 디버그 대상인 다른 지정된 태스크도 동시에 정지하는 태스크 디버그 방법을 개시하고 있다.
또한 특허 문헌 2는, 디버그를 위해, 멀티태스크 작업을 구성하는 임의의 태스크가 미리 설정된 브레이크포인트에 도달하거나, 또는 예외가 발생한 시점에서, 그 태스크와 동일한 멀티태스크 작업 그룹 중의 모든 태스크의 실행을 정지시키는 멀티태스크 제어 방법을 개시한다. 이 멀티태스크 제어 방법에 의하면, 임의의 시 점에서 그 멀티태스크 작업 그룹 내의 모든 태스크의 실행을 재개시킬 수 있다.
(특허 문헌 1)
일본 특허 공개 평성 제 2-300942 호 공보
(특허 문헌 2)
일본 특허 공개 평성 제 4-314141 호 공보
도 20에 도시하는 것과 같은 독립된 멀티태스크 시스템이 복수 포함되는 컴퓨터 시스템에 있어서, 종래의 디버그 방법을 이용하여 특정한 멀티태스크 시스템을 디버그하면, 이하의 2개의 문제를 발생한다.
즉, 제 1 문제는 시스템 콘트롤러(94) 및 광 디스크 콘트롤러(95)의 각각에 대해, 각각의 하드웨어에 의존한 제 1 OS 및 제 2 OS를 개발하고, 또한 각 0S 상에서 실행되는 태스크 프로그램을 작성할 필요가 발생한다. 여기에서는 각 콘트롤러의 LSI의 부품 비용 뿐만 아니라, OS 및 태스크의 개발 비용이 막대하게 든다.
또한 제 2 문제는, 종래의 멀티태스크 시스템용 디버그 방법에서는, 인터럽트 처리 프로그램 등의 디버그가 불가능하다는 것이다. 이것은, 종래의 디버그 방법이, 디버그 기능을 태스크 레벨로 실현하고 있는 것에 기인한다. 즉, 인터럽트 처리를 행하는 프로그램은 태스크로서 관리되어 있지 않고, 독립된 프로그램으로서 존재한다. 따라서, 인터럽트 처리 프로그램의 디버그를 태스크의 디버그와 마찬가 지로 실행할 수 없기 때문에, 인터럽트 처리를 포함한 멀티태스크 시스템 전체의 디버그는 불가능하다. 다른 콘트롤러로부터의 인터럽트 요구를 받아들이기 위해서는, 인터럽트 처리 프로그램의 디버그 환경도 구비할 필요가 있다.
본 발명의 목적은, 멀티태스크 시스템의 디버그를 용이하게 하는 디버그 시스템과 디버그 방법, 및 그러한 디버그 방법을 채용할 수 있는 회로 등을 제공하는 것에 있다.
본 발명에 따른 디버그 시스템은, 디버거 프로그램을 실행하는 호스트 컴퓨터와, 상기 디버거 프로그램에 의해서 디버그되는 제 1 멀티태스크 시스템, 및 비(非)디버그 대상의 제 2 멀티태스크 시스템을 갖는 복합 시스템이 구축된 회로를 포함한다. 상기 회로는, 프로그램이 저장된 메모리, 및 상기 메모리 상의 프로그램을 실행할 수 있는 처리부를 구비하고 있다. 상기 메모리는, 상기 제 1 멀티태스크 시스템의 1 이상의 태스크 프로그램을 관리하는 제 1 오퍼레이팅 시스템과, 상기 제 1 오퍼레이팅 시스템을 제 1 태스크 프로그램으로서 관리하고, 또한, 상기 제 1 태스크 프로그램과는 상이한 1 이상의 제 2 태스크 프로그램을 관리하는 제 2 오퍼레이팅 시스템을 저장한다.
상기 메모리에는, 상기 제 1 멀티태스크 시스템의 실행을 제어하기 위한 모니터 프로그램이 더 저장되어 있더라도 좋다. 상기 처리부는, 상기 디버거 프로그램을 실행한 상기 호스트 컴퓨터로부터의 커맨드에 응답하여 상기 모니터 프로그램 을 실행하고, 상기 커맨드에 따른 처리를 실행하여, 상기 호스트 컴퓨터에 응답을 되돌리더라도 좋다.
상기 메모리는, 상기 제 2 오퍼레이팅 시스템 및 상기 1 이상의 제 2 태스크 프로그램을, 상기 제 2 멀티태스크 시스템으로서 저장하더라도 좋다.
상기 메모리는, 상기 1 이상의 제 2 태스크 프로그램으로서, 제 3 오퍼레이팅 시스템 및 상기 제 3 오퍼레이팅 시스템에 의해서 관리되는 제 3 태스크 프로그램을 저장하고, 상기 제 3 오퍼레이팅 시스템 및 상기 제 3 태스크 프로그램을, 상기 제 2 멀티태스크 시스템으로서 저장하더라도 좋다.
상기 회로는 스택(stack)을 더 구비하고, 상기 처리부는, 상기 제 1 멀티태스크 시스템의 실행 환경을 상기 스택에 퇴피(退避)하고, 그 후, 상기 모니터 프로그램에 근거하여, 상기 제 1 멀티태스크 시스템에 포함되는 1 이상의 태스크 프로그램의 실행을 정지하더라도 좋다.
상기 처리부는, 상기 제 1 멀티태스크 시스템에 포함되는 태스크 프로그램의 실행을 정지할 때에, 상기 제 1 오퍼레이팅 시스템을 정지 상태로 천이시키더라도 좋다.
상기 처리부는, 처리가 미리 설정된 브레이크포왼트에 도달하면, 상기 제 1 오퍼레이팅 시스템을 정지 상태로 천이시켜, 상기 제 1 멀티태스크 시스템에 포함되는 태스크 프로그램의 실행을 정지하더라도 좋다.
상기 처리부는, 처리에 예외가 발생하면, 상기 제 1 오퍼레이팅 시스템을 정지 상태로 천이시켜, 상기 제 l 멀티태스크 시스템에 포함되는 태스크 프로그램의 실행을 정지하더라도 좋다.
상기 처리부는, 상기 제 1 오퍼레이팅 시스템 상에서, 상기 제 1 멀티태스크 시스템의 인터럽트 처리를 실행할 수 있고, 상기 인터럽트 처리를 상기 제 1 멀티태스크 시스템 중 어느 하나의 태스크 프로그램보다도 우선하여 실행하더라도 좋다.
상기 처리부는, 상기 제 1 오퍼레이팅 시스템 상에서, 상기 제 1 멀티태스크 시스템의 인터럽트 처리를 실행할 수 있고, 상기 처리부는, 상기 인터럽트 처리를 상기 복합 시스템 중 어느 하나의 태스크 프로그램보다 우선하여 실행하더라도 좋다.
상기 처리부에 의해 실행되는 상기 제 1 오퍼레이팅 시스템은, 상기 인터럽트 처리를 인터럽트 태스크 프로그램으로서 관리하고 있고, 상기 처리부는, 상기 인터럽트 태스크 프로그램을 상기 제 1 멀티태스크 시스템 중 어느 하나의 태스크 프로그램보다 우선하여 실행하더라도 좋다.
상기 처리부에 의해 실행되는 상기 제 1 오퍼레이팅 시스템은, 상기 인터럽트 처리를 인터럽트 태스크 프로그램으로서 관리하고 있고, 상기 처리부는, 상기 인터럽트 태스크 프로그램을 상기 복합 시스템 중 어느 하나의 태스크 프로그램보다 우선하여 실행하더라도 좋다.
본 발명에 따른 회로는, 디버거 프로그램을 실행하는 호스트 컴퓨터와 접속되고, 상기 디버거 프로그램에 의해서 디버그되는 제 1 멀티태스크 시스템, 및 비디버그 대상의 제 2 멀티태스크 시스템을 갖는 복합 시스템이 구축되어 있다. 상 기 회로는, 프로그램이 저장된 메모리와, 상기 메모리 상의 프로그램을 실행할 수 있는 처리부를 구비하고 있다. 상기 메모리는, 상기 제 1 멀티태스크 시스템의 1 이상의 태스크 프로그램을 관리하는 제 1 오퍼레이팅 시스템과, 상기 제 1 오퍼레이팅 시스템을 제 1 태스크 프로그램으로서 관리하고, 또한, 상기 제 1 태스크 프로그램과는 상이한 1 이상의 제 2 태스크 프로그램을 관리하는 제 2 오퍼레이팅 시스템을 저장하더라도 좋다.
본 발명에 따른 회로는, 디버거 프로그램을 실행하는 호스트 컴퓨터와 접속되고, 상기 디버거 프로그램에 의해서 디버그되는 제 1 멀티태스크 시스템, 및 비디버그 대상의 제 2 멀티태스크 시스템을 갖는 복합 시스템을 구축하는 것이 가능하다. 상기 회로는, 프로그램이 저장된 메모리와, 상기 메모리상의 프로그램을 실행할 수 있는 처리부를 구비하고 있다. 상기 메모리는, 제 1 오퍼레이팅 시스템과, 상기 제 1 오퍼레이팅 시스템을 제 1 태스크 프로그램으로서 관리하고, 또한, 상기 제 1 태스크 프로그램과는 상이한 1 이상의 제 2 태스크 프로그램을 관리하는 제 2 오퍼레이팅 시스템을 저장하고 있으며, 상기 제 1 오퍼레이팅 시스템은, 상기 메모리에 1 이상의 태스크 프로그램이 판독하였을 때, 상기 1 이상의 태스크 프로그램을 상기 제 1 멀티태스크 시스템의 태스크 프로그램으로서 관리하더라도 좋다.
본 발명의 디버그 시스템에 의하면, 디버그 대상의 제 1 멀티태스크 시스템을 제 1 OS에 의해서 관리하고, 또한, 그 제 1 OS를 태스크로 하여 제 2 OS로 관리하며, 또한 제 2 멀티태스크 시스템을 제 2 OS에 의해서 관리한다. 제 2 OS는 하나의 태스크로서 제 1 OS를 관리하고 있기 때문에, 제 1 멀티태스크 시스템의 태스 크의 영향을 받는 일없이, 태스크의 우선도를 결정할 수 있다.
예컨대, 제 1 멀티태스크 시스템의 태스크에 버그 등이 존재하고, 그 버그에 기인하여 제 2 OS의 각 태스크의 우선도를 변경하지는 않는다. 우선도의 변경의 영향은 제 1 OS에서 관리되는 다른 태스크에만 미치고, 제 2 OS의 각 태스크가 변경되지는 않기 때문이다.
또한 제 2 OS는, 제 1 멀티태스크 시스템의 태스크를 관리할 필요가 없기 때문에, 제 2 OS의 실행에 필요한 처리 부하를 억제할 수 있다.
(발명의 실시예)
이하, 첨부의 도면을 참조하면서, 본 발명의 실시예를 설명한다.
(실시예 1)
이하의 설명에서는, 우선 본 실시예에 따른 디버그 방법에 의해서 프로그램이 디버그된 후의 집적 회로(예컨대 LSI, VLSI)의 구성 및 그 특징을 설명한다. 그 후, 프로그램의 디버그를 실현하기 위한 구성 및 디버그 방법을 설명한다.
도 1은, 본 실시예에 따른 디버그 기능에 의해서 개발된 제 1 광 디스크 시스템의 구성을 나타낸다. 광 디스크 시스템은, 광 디스크(8)가 장전 가능한 드라이브 장치(1) 및 호스트 컴퓨터(2)로 구성되고, 호스트 인터페이스(3)를 거쳐서 접속되어 있다. 드라이브 장치(1)가 DVD-ROM 드라이브 등의 컴퓨터 주변 장치로서 사용되는 경우에는, 드라이브 장치(1)는 SCSI(Small Computer System lnterface) 등의 호스트 인터페이스(3)를 거쳐서, 호스트 컴퓨터(2)와의 사이에서 데이터를 수수한다.
드라이브 장치(1)는, 디스크 모터(5)와, 광 픽업(6)과, 서보 회로(7)와, 광 디스크 콘트롤러(107)를 구비하고 있다. 또, 도 1에는 광 디스크(8)도 기재되어 있지만, 이것은 설명의 편의를 위해서이다. 광 디스크(8)는 드라이브 장치(1)로부터 착탈 가능하기 때문에, 드라이브 장치(1)의 구성요소는 아니다.
광 디스크 콘트롤러(107)는, 드라이브 장치(1)의 동작을 제어하는 LSI이다. 광 디스크 콘트롤러(107)는, 적어도 CPU(9) 및 실 메모리(10)를 포함한다. 광 디스크 콘트롤러(107)에 따른 제어는, 주로 실 메모리(10)에서 판독된 프로그램을 CPU(9)가 실행하고, 그 실행 결과로서의 명령이 드라이브 장치(1)의 각 구성요소에 출력되는 것에 의해 실현된다.
디스크 모터(5)는, 광 디스크(8)를 소정의 회전 속도로 회전시킨다. 광 픽업(6)은, 레이저광을 방사하여 그 반사광을 검출하고, 반사광의 광량에 대응하는 광량 신호를 출력한다. 서보 회로(7)는, 광 픽업(6)으로부터의 광량 신호에 근거하여 포커싱(focusing) 제어나 트래킹 제어를 실행한다.
본 실시예에 따른 디버그 기능이 채용된 것을 나타내는 주요한 특징은, 드라이브 장치(1)에는 하나의 LSI(광 디스크 콘트롤러(107))만이 실장되고, 시스템 콘트롤러의 기능과 광 디스크 콘트롤러의 기능이 동일한 CPU로 실행되고 있는 것이다. 이것은, 종래의 드라이브 장치(94)(도 20)에 있어서의 시스템 콘트롤러의 기능이 광 디스크 콘트롤러에 내장된 것을 의미한다. LSI를 하나로 하는 것에 의해, 복수의 LSI를 실장하는 경우보다도 부품 비용이 저감된다.
광 디스크 콘트롤러(107)의 CPU(9)는, 실 메모리(10) 상에 구축된 하나의 0 S를 거쳐서 복수의 프로그램(복수의 태스크)을 실행한다. 복수의 태스크란, 구체적으로는 호스트 제어 태스크(1711), 드라이브 제어 태스크(1712), 서보 제어 태스크(1721), 디스크 제어 태스크(1722) 등이다.
각 태스크의 구체적인 처리는 이하와 같다. 호스트 제어 태스크(1711)는, 호스트 컴퓨터(2)와의 인터페이스, 및 스위치(도시하지 않음)의 누름 등에 관련되는 사용자와의 인터페이스의 동작을 제어한다. 드라이브 제어 태스크(1712)는, 드라이브 장치(1)의 기동·정지 처리와, 데이터의 버퍼링 처리 등을 제어한다. 서보 제어 태스크(1721)는, 서보 회로(7)의 동작을 제어한다. 디스크 제어 태스크(1722)는, 데이터의 재생 등을 제어한다.
도 1에 나타내는 광 디스크 시스템을 실현하기 위해서는, 하나의 CPU(9)에 있어서 실행 가능한 OS를 개발하여, 모든 태스크를 그 OS가 관리할 필요가 있다. LSI 벤더(vendor)는, 정상으로 동작하는 OS, 서보 제어 태스크(1721) 및 디스크 제어 태스크(1722)를 미리 내장한 상태에서, LSI를 드라이브 메이커로 판매한다. 그 드라이브 메이커는, 이미 내장된 0S 상에서 실행 가능한 호스트 제어 태스크(1711), 드라이브 제어 태스크(1712) 등을 작성하여, 디버그함으로써, 광 디스크 콘트롤러(107)를 완성시키면 좋다. OS를 새롭게 개발할 필요는 없기 때문에, 적어도 OS 개발을 위한 비용을 삭감할 수 있다.
단, 이러한 광 디스크 콘트롤러(107)를 개발하기 위해서는, 지금까지 별도의 OS 상에서 동작 가능하던 태스크를 하나의 0S에 적합하도록 수정하지 않으면 안 된다.
또한, 임의의 멀티태스크 시스템의 태스크에 대해, 별도의 멀티태스크 시스템의 태스크 등에 의해서 시스템 호출이 발행되면, 멀티태스크 시스템의 태스크의 상태가 변화하게 되어, 멀티태스크 시스템의 동작이 부정(不正)으로 되는 문제가 있다. 이 시스템 호출은, 예컨대 태스크의 스케줄링에 관한 시스템 호출(레디 큐의 회전, 태스크의 우선도의 변경)이다.
예컨대, 도 1의 드라이브 장치(1)에 있어서, 광 디스크 콘트롤러(107)의 개발중인 드라이브 제어 태스크(1712)가 버그를 포함하고 있는 것으로 한다. 드라이브 제어 태스크(1712)의 잘못된 처리 결과에 의해서, 디스크 제어 태스크(1722)의 우선도가 서보 제어 태스크(1721)의 우선도보다도 낮아지게 되면, 데이터의 재생이 불가능하다는 등의 불량을 발생하는 경우가 있다.
그래서, 이하의 설명에 있어서는, 도 1의 구성을 더 개량한 구성, 및 그러한 구성을 실현하기 위한 디버그 기능, 디버그 방법을 상세하게 설명한다.
도 2는, 본 실시예에 따른 디버그 기능에 의해서 개발된 제 2 광 디스크 시스템의 구성을 나타낸다. 도 1과 동일 구성 부분에는 동일 부호를 부여하여, 그 설명은 생략한다.
제 2 광 디스크 시스템의 드라이브 장치(11)도 또한, 제 1 광 디스크 시스템의 드라이브 장치(1)와 마찬가지로, 하나의 LSI(광 디스크 콘트롤러(107))만이 실장되어 있다. 시스템 콘트롤러의 기능은 광 디스크 콘트롤러에 내장되어 있다.
도 2에 나타내는 광 디스크 시스템과 도 1에 나타내는 광 디스크 시스템과의 상위점은, 광 디스크 콘트롤러의 실 메모리(113) 상에 구축된 프로그램의 관리 구조에 있다.
구체적으로는, 도 2의 광 디스크 콘트롤러(108)에 도시하는 바와 같이, 호스트 제어 태스크(1711) 및 드라이브 제어 태스크(1712)는 제 1 OS에서 관리된다. 이들은 전체로 l개의 멀티태스크 시스템을 구성한다. 또한, 서보 제어 태스크(1721), 디스크 제어 태스크(1722) 및 제 l OS는, 제 2 OS에서 관리된다. 이들도 또한, 별도의 멀티태스크 시스템을 구성한다. 또, 제 1 OS는 태스크의 하나로서 제 2 OS에 의해서 관리된다. 그 의미를 명확히 하기 위해서, 이하에서는 제 1 OS를 「제 1 OS 태스크」라고 기술한다.
광 디스크 콘트롤러(108)의 CPU(111)는, 모든 태스크를 제 2 OS 상에서 직접적으로 또는 간접적으로 관리할 수 있다. 이와 같이 복수의 멀티태스크 시스템이 구축된 포괄적인 시스템을, 복합형 멀티태스크 시스템이라고 부른다.
다음에, 본 실시예에 따른 복합형 멀티태스크 시스템의 구성, 및 복합형 멀티태스크 시스템의 디버그 방법을 설명한다.
도 3은, 복합형 멀티태스크 시스템이 구축된 대규모 반도체 집적 회로(LSI)(109)의 구성을 나타낸다. LSI(109)의 일례가, 도 2에 나타내는 광 디스크 콘트롤러(108)이다.
LSI(109)는, CPU(111)와, 인터럽트 제어 장치(112)와, 실 메모리(113)를 갖는다. 실 메모리(113)에는, 제 2 OS(130), 멀티태스크 시스템(140, 150), 및 제 1 OS 태스크(160)가 판독되어, 배치되어 있다. 이들은 CPU(111)에 의해 실행되는 소프트웨어(컴퓨터 프로그램)이다. 이 시스템은, 독립된 복수의 멀티태스크 시스템(140 및 150)을 포함하고 있고, 이들은 하나의 CPU(111) 상에서 처리된다.
멀티태스그 시스템(140)은 태스크(141) 및 태스크(142)로 구성되어, 제 2 OS(130)에 의해서 관리되고 있다. 디버그 대상 멀티태스크 시스템(150)은, 태스크(l51) 및 태스크(152)로 구성되어, 제 1 OS 태스크(160)에 의해서 관리된다.
도 3에 도시되는 복합형 멀티태스크 시스템을 구축하면, LSI(109)의 개발을 용이화할 수 있다고 하는 이점이 있다. 구체적으로는 이하와 같다.
우선 첫 번째로, 제 1 OS 태스크(160)를 제 2 OS(l30)로 관리함으로써, 독립된 2개의 멀티태스크 시스템(140 및 150)은 상이한 OS에서 관리된다. 그 결과, 모든 태스크를 하나의 0S 상에서 동작하도록 설계할 필요는 없어진다. 종래의 0S에서 동작하고 있었던 태스크를 그대로 이용하는 것도 가능해진다. 이 때에는, 제 1 OS 태스크(160)만을 제 2 OS(130)에 적합시키고, 또한, 종래의 0S의 사양을 실장하도록 다시 개발하면 충분하다. 따라서, 개발에 필요한 비용을 저감할 수 있다.
두 번째로, 제 2 OS(130)에 의해서 관리되는 태스크는, 태스크(141), 태스크(142) 및 제 1 OS 태스크(160)의 3개이다. 도시되어 있는 태스크(141, 142, 151 및 152)를 제 2 OS(130)에 의해서 관리하는 경우와 비교하면, 제 2 OS(130)가 관리해야 할 태스크의 수는 적어진다. 그 결과, 태스크 간의 우선도를 결정할 때에, 고려해야 할 태스크가 적어지게 되어, 개발이 용이하게 된다. 이 이점은, 제 1 OS 태스크(160)에 의해서 관리되는 태스크의 수가 증가할수록 현저하게 된다.
또한 세 번째로는, 복합형 멀티태스크 시스템에 있어서는, 한쪽의 멀티태스크 시스템의 태스크가 다른 쪽의 멀티태스크 시스템의 태스크에 인가되는 영향을 차단할 수 있다고 하는 이점이 있다. 예컨대, 멀티태스크 시스템(150)의 태스크(151)가 레디 큐 회전의 시스템 호출을 발행한 것으로 한다. 그러나, 이 때의 영향은 제 1 OS(160)로 관리되는 다른 태스크(152)에만 미치고, 다른 멀티태스크 시스템(140)의 태스크(141, 142) 및 제 1 OS 태스크(160)에는 미치지 않는다.
이하, 본 실시예에 따른 디버그 시스템의 구성 및 디버그 방법을 설명한다. 이하의 디버그 시스템을 이용하여 프로그램을 디버그함으로써, 도 3에 나타내는 LSI(109)를 얻을 수 있다. 예컨대, 광 디스크 용도의 LSI의 프로그램을 디버그하면, 도 2에 나타내는 광 디스크 콘트롤러(108)를 얻을 수 있다.
도 4는, 본 실시예에 따른 디버그 시스템의 전체 구성을 개략적으로 나타낸다. 이 디버그 시스템은, 인터페이스 버스(190)를 거쳐서 접속된 타겟 시스템(110)과 호스트 컴퓨터(170)를 갖고 있다.
타겟 시스템(l10)은, 중앙 처리 유닛(CPU)(111)과 인터럽트 제어 장치(112)와 실 메모리(113)로 구성된다.
실 메모리(113)에는, 모니터 프로그램(120), 제 2 OS(130), 멀티태스크 시스템(140), 디버그 대상 멀티태스크 시스템(150) 및 제 1 OS 태스크(160)가 판독되어, 배치되어 있다. 이들은 CPU(1l1)에 의해 실행되는 소프트웨어(컴퓨터 프로그램)이다. 이 시스템은, 독립된 복수의 멀티태스크 시스템(140 및 150)을 포함하고 있고, 이들은 하나의 CPU(111) 상에서 처리된다. 따라서, 이 시스템은 복합형 멀 티태스크 시스템이라고 할 수 있다.
멀티태스크 시스템(140)은 태스크(141) 및 태스크(142)로 구성되어, 제 2 OS(130)에 의해서 관리되고 있다. 디버그 대상 멀티태스크 시스템(150)은, 태스크(151) 및 태스크(152)로 구성되어, 제 1 OS 태스크(160)에 의해서 관리된다. 제 1 OS 태스크(160)는, 제 2 OS(130)에 의해서 관리되는 태스크의 하나이다. CPU(111) 및 인터럽트 제어 장치(112)의 구성 및 동작은 도 5를 참조하면서 후술한다.
또한, 호스트 컴퓨터(170)에는, 디버거(180)가 배치된다. 디버거(180)란, 프로그램의 오류(버그)를 발견하여 그 수정을 지원하는 소프트웨어이며, 호스트 컴퓨터(170)의 도시하지 않는 실 메모리로 판독되고, 그 CPU에 의해서 실행된다.
타겟 시스템(110)은 인터페이스 버스(190)를 거쳐서 호스트 컴퓨터(170)와 접속된다.
모니터 프로그램(120)은 디버거(180)로부터의 통신에 의한 인터럽트에 의해 기동된다. 기동된 모니터 프로그램(120)은, 디버거(180)로부터의 디버그 커맨드를 수신하고, 수신한 커맨드에 대응한 처리를 실행하여, 디버거(180)에 응답을 되돌려준다. 이에 따라, 디버그 대상 멀티태스크 시스템(150)의 데이터의 참조 및 변경, 브레이크포인트의 설정 등을 행함과 동시에, 디버그 대상 멀티태스크 시스템(150)의 실행을 제어한다. 예컨대, 모니터 프로그램(120)이 디버거로부터 데이터의 참조를 요구하는 커맨드와 함께, 참조되는 데이터의 어드레스를 수신한다. 그리고 지정된 어드레스로부터 데이터를 취득하여, 디버거(180)로 취득한 데이터를 되돌려준다. 이에 따라, 사용자는 데이터를 확인할 수 있다. 또, 상술한 「브레이크포 인트」란, 프로그램의 실행을 중단하는 프로그램의 특정한 행(프로그램 상의 위치)을 의미한다.
도 5는, CPU(111) 및 인터럽트 제어 장치(112)의 구성을 상세하게 나타낸다. 도 5에 나타내는 구성 중, 도 4에 나타내는 구성과 동일한 부분에는 동일 부호를 부여하고 있다. 도 5는, n개의 인터럽트 그룹의 인터럽트를 접수 가능한 시스템의 예이다. CPU(111)와 접속되는 주변 장치로부터의 인터럽트(예컨대, 키 입력을 받은 키보드(도시하지 않음)로부터의 인터럽트)는, 인터럽트 제어 장치(112)를 거쳐서 CPU(111)에 송출된다. 인터럽트를 수리한 CPU(111)는, 현재 실행 중의 프로그램을 중단하여, 인터럽트 처리 프로그램의 실행을 개시한다. 인터럽트 제어 장치(l12)는, 인터럽트 그룹 제어부((200)(1)∼200(n))를 구비하며, CPU(111)에 송출하는 인터럽트를 제어하고 있다. 또한, 각 인터럽트 그룹 제어부(200(1)∼2OO(n))는 인터럽트 제어 레지스터(도시하지 않음)를 구비하고, 인터럽트 그룹마다 인터럽트 우선 레벨, 인터럽트의 허가/금지를 설정할 수 있다.
다음에, 도 6을 참조하면서, 미리 설정된 브레이크포인트, 혹은 예외를 발생한 시점에서, 디버그 대상 멀티태스크 시스템(150)의 태스크(151)를 정지하는 처리를 설명한다. 도 6은, 디버그 대상 멀티태스크 시스템(150)을 정지하는 모니터 프로그램(120)의 처리 순서의 예를 나타내는 플로우차트이다. 상술한 바와 같이, 모니터 프로그램(120)은 CPU(111)에서 실행된다. 디버그 대상 멀티태스크 시스템(150)의 태스크(151)의 프로그램이 브레이크포인트에 도달하거나, 혹은 예외가 발생하면, 제어가 모니터 프로그램(120)의 멀티태스크 시스템 정지 처리로 전환된다.
우선, 단계 S301에서 전(前)처리가 행해진다. 전처리란, 현재 실행 중의 태스크(151)의 레지스터군, 프로그램 카운터, 스테이터스 레지스터 등의 값을 메모리(113)에 구축된 스택(도시하지 않음) 등에 퇴피하는 처리이다. 이 처리에 의해, 디버그 대상 멀티태스크 시스템(150)의 태스크의 실행 환경이 유지된다. 또, 퇴피처는 스택에 한정되지 않고, 스택 이외의 메모리(113) 또는 그 밖의 메모리(도시하지 않음)이더라도 좋다.
단계 S302에서, CPU(111)는 제 2 OS(130)에 대해, 제 1 OS 태스크를 강제 대기(서스펜드(suspend)) 상태로 천이시키는 시스템 호출을 발행한다. 그 결과, 제 1 OS 태스크(160)의 실행을 정지시킨다. 이 때, 제 2 OS(130)는, 시스템 호출을 받아 제 1 OS 태스크를 강제 대기 상태로 천이시키는 처리를 실행한다.
다음 단계 S303에서는, CPU(111)는, 디버그 대상 멀티태스크 시스템(150)의 모든 인터럽트를 금지한다. 인터럽트의 금지는, 예컨대, 인터럽트 제어 장치(112)의 인터럽트 제어 레지스터 중의, 디버그 대상 멀티태스크 시스템(150)의 인터럽트를 제어하는 레지스터를 인터럽트 금지로 설정으로 하는 것에 의해 실현된다.
그리고 단계 S304에서, CPU(111)는, 제 2 OS(130)의 태스크 디스패치 처리를 실행한다. 태스크 디스패치(이하, 간단히 「디스패치」라고 기술함) 처리란, 제 2 OS(130)가 태스크의 우선도를 기준으로 태스크의 실행 순서를 스케줄링하여, 최고 우선도의 태스크를 CPU(111)이 실행하는 대상으로 하여 전환하는 처리이다. 여기서는 디스패치 처리에 의해, 제 1 OS 태스크(160)로부터, 다른 최우선의 태스크(태스크(141 또는 142))로 태스크의 전환이 행해진다. 이에 따라 디버그 대상 멀티태 스크 시스템(150)의 복수 태스크(태스크(151 및 152))의 실행이 억제된다.
그 후, 단계 S305에서, 전환 후의 최우선 태스크(태스크(141 또는142))의 레지스터 복귀 등의 후(後)처리가 행해져, 모니터 프로그램120의 처리가 종료한다.
다음에, 도 7을 참조하면서, 정지한 디버그 대상 멀티태스크 시스템(150)의 재개 처리를 설명한다. 이 처리는, 디버그 대상 멀티태스크 시스템(150)의 디버그가 종료한 후에 행해진다.
도 7은 디버그 대상 멀티태스크 시스템(150)의 처리를 재개하는 모니터 프로그램(120)의 처리 예를 나타내는 플로우차트이다. 우선, 임의의 시점에서, 사용자가 디버거(180) 경유로 디버그 대상 멀티태스크 시스템(150)의 처리의 재개를 지시한다. 그러면, 제어는 모니터 프로그램의 멀티태스크 시스템 재개 처리로 전환된다.
단계 S401에서, CPU(111)는 현재 실행 중의 태스크의 레지스터 퇴피 등의 전 처리를 행한다. 이것은 단계 S301과 마찬가지의 처리이다. 단계 S402에서는, CPU(111)는, 제 2 OS(130)에 대해, 제 1 OS 태스크(160)의 실행을 재개시키기 위한 시스템 호출을 발행한다. 시스템 호출에 응답하여, 제 2 OS(130)는 제 1 OS 태스크(160)를 강제 대기 상태로부터 실행 가능 상태로 한다.
다음에 단계 S403에서, CPU(111)는, 디버그 대상 멀티태스크 시스템의 인터럽트 금지를 해제한다. 이것 이후, 상술한 단계 S303에서 금지되어 있던 인터럽트가 허가된다.
단계 S404에서는, CPU(111)는, 제 2 OS(130)의 디스패치 처리를 실행한다. 그 후, 제 1 OS 태스크(160)의 실행 재개가 허가되면, 태스크의 레지스터 복귀 등의 처리가 행해져, 실행 환경이 복원된다.
이상의 처리 결과, 디버그 대상 멀티태스크 시스템(150)의 복수 태스크(태스크(151 및 152))의 실행을 재개할 수 있다.
본 실시예에 의하면, 디버그 대상 멀티태스크 시스템(150)을 제 1 OS 태스크 (l60)로 관리하여, 디버그 대상 멀티태스크 시스템(150)의 임의의 태스크(태스크(l51) 또는 태스크(152))가 브레이크포인트에 도달한 시점 혹은 예외가 발생한 시점에서, 제 1 OS 태스크(160)의 실행을 정지한다. 이에 따라, 디버그 대상 멀티태스크 시스템(150)을 구성하는 모든 태스크(151 및 152)에 대해, 그 실행 환경을 유지한 상태에서 실행을 억제하는 것이 가능해진다.
또한, 디버그 대상 멀티태스크 시스템(150)의 정지 중에 다른 실행 중의 태스크 등에 의한, 태스크의 상태를 변화시키는 것과 같은 시스템 호출이 제 2 OS(130)에 대해 발행되더라도, 제 1 OS 태스크(160)로 관리되어 있는 디버그 대상 멀티태스크 시스템(150)의 태스크(15l 및 152)에는 영향을 인가하지 않고, 멀티태스크 시스템의 디버그를 용이화할 수 있다.
한편, 디버그 대상 멀티태스크 시스템(150)의 태스크(151 및 152)로부터 태스크의 상태를 변화시키는 시스템 호출이 발행되어도, 이 때 영향은 제 1 OS 태스크(160)로 관리되는 태스크에만 미치고, 다른 멀티태스크 시스템(140)의 태스크(l41, 142) 및 제 1 OS 태스크(160)에는 미치지 않는다.
OS나 기본적인 태스크가 내장된 LSI의 구입자는, 태스크(151 및 152)로서, 예컨대, 드라이브 제어 태스크 및 호스트 제어 태스크를 개발하여, 디버그해서 내장하는 것에 의해, 드라이브 장치(11)(도 2)의 광 디스크 콘트롤러(108)를 얻을 수 있다.
또, 본 실시예에서는, 브레이크포인트에 도달한 시점 혹은 예외가 발생한 시점에서 제 1 OS 태스크(160)를 강제 대기 상태로 천이시키는 시스템 호출로 제 1 OS 태스크(160)의 실행을 정지하고 있다. 그러나, 제 1 OS 태스크(160)의 실행을 억제할 수 있는 것이면, 예컨대, 대기(웨이트(wait)) 상태로 천이시키는 시스템 호출을 이용하여 제 1 OS 태스크(160)의 실행을 정지시키더라도 좋다.
본 실시예에서는, 타겟 시스템(110)이 2개의 멀티태스크 시스템(140, 150)으로 구성되는 예로 설명하였지만, 상술한 처리는 3개 이상의 멀티태스크 시스템으로 구성되어 있더라도 적용할 수 있다. 또한, 각 멀티태스크 시스템(140, 150)이 각 2개의 태스크로 구성되는 예를 들어 설명하였지만, 각 멀티태스크 시스템(140 및 150)의 한쪽, 또는 쌍방이 3개 이상의 태스크로 구성되는 경우에도 적용할 수 있다.
본 실시예에서는, 제 2 OS(130)가 제 1 OS 태스크(160) 및 비디버그 대상의 멀티태스크 시스템(140)을 태스크로서 관리하고, 또한 제 1 OS 태스크(160)가 디버그 대상의 멀티태스크 시스템(150)을 관리하는 것으로 설명하였다. 그러나, 디버그 대상 및 비디버그 대상의 각 멀티태스크 시스템을 각각 관리하는 0S를 마련하고, 또한 이들의 0S를 태스크로서 갖는 포괄적인 0S를 마련하여 관리를 행하더라도 좋다. 예컨대, 도 14는, 본 실시예의 변형 예에 따른 시스템의 관리 구조를 나타 낸다. 이 시스템에서는, 제 1 OS 태스크(160)에 의해서 디버그 대상의 멀티태스크 시스템(150)을 관리하고, 제 3 OS(1110)에 의해서 디버그 대상의 멀티태스크 시스템(140)을 관리하고 있다. 그리고, 제 2 OS(130)가, 제 1 OS(160) 및 제 3 OS(1110)을 태스크로서 갖고, 그 처리를 관리하고 있다. 이러한 관리 구조를 취하면, 비디버그 대상의 멀티태스크 시스템이 2개 이상 있는 경우에 있어서도, 각 비디버그 대상의 멀티태스크 시스템을 OS 태스크로 관리하고, 각 OS 태스크를 제 2 OS(130)로 관리할 수 있기 때문에, 획일적인 처리가 가능하고, 범용성이 높은 시스템을 구축할 수 있다. 또한, 제 2 OS(130)는 각 OS 태스크만을 관리하도록 설계하면 되기 때문에, 개발에 요하는 비용을 저감할 수 있다.
또, 본 실시예에 있어서는, 도 1에 나타내는 광 디스크 콘트롤러(107)의 멀티태스크 시스템을 얻기 위한 디버그 시스템을 설명하지 않는다. 그러나, 그러한 디버그 시스템은, 예컨대 도 4에 나타내는 타겟 시스템(11O)의 구성으로부터 제 1 OS 태스크(160)를 생략하는 것에 의해 얻을 수 있다. 또, 앞서 서술한 바와 같이, 하나의 0S에 적합하도록 각 태스크를 개발할 필요 등이 생기는 것에 유의해야 한다.
(실시예 2)
도 8은 본 실시예에 따른 디버그 시스템의 전체 구성을 개략적으로 나타낸다. 도 8에 나타내는 구성 중, 도 4에 나타내는 구성과 동일한 부분에는 동일 부호를 부여하고 있다. 도 8의 구성요소 중, 실시예 1에서 설명한 요소의 설명은 생 략한다.
본 실시예에 따른 디버그 시스템에 있어서는, 실시예 1에서 설명한 디버그 시스템(도 4)의 구성에 부가하여, 실 메모리 중(113)에 가상 인터럽트 제어 프로그램(510)이 배치되어 있다. 또한, 디버그 대상 멀티태스크 시스템(150)은, 태스크(151), 태스크(152) 및 인터럽트 처리(500)로 구성된다.
이하, 가상 인터럽트 처리를 설명한다. 본 실시예에 따른 가상 인터럽트 처리는, 디버그 대상 멀티태스크 시스템의 인터럽트 처리(500)를 태스크로 하여 제 1 OS 태스크(160)로 관리한다. 그리고, 가상 인터럽트 제어 프로그램(510)에 의해, 다른 태스크(태스크(141, 142, 151, 152))보다 우선하여 인터럽트 처리 태스크를 실행시킨다. 이하에서는, 이러한 인터럽트 처리 태스크를 「인터럽트 처리 태스크」라고 기술한다.
우선, 도 8의 각 태스크의 우선도를 이하에 나타내는 바와 같이 한다. 즉, 제 1 OS 태스크(160)가 관리하는 각 태스크의 우선도를,
인터럽트 처리 태스크(500)>인터럽트 처리 태스크이 외의 태스크(태스크(151 및 152))
로 한다. 또한, 인터럽트 처리 태스크(500)의 기동 시에는, 제 2 OS(130)가 관리하는 각 태스크의 우선도를,
제 1 OS 태스크(160)>제 1 OS 태스크 이외의 태스크(태스크(141 및 142))로 한다.
또한, 디버그 대상 멀티태스크 시스템(150)에 있어서, 인터럽트 처리가 복수 인 경우에는, 인터럽트 처리 태스크의 우선도를 상이하게 하고, 레벨 인터럽트의 기능을 가상 인터럽트 처리로 실행하는 것이 가능하다. 예컨대, 디버그 대상 멀티태스크 시스템(150)의 인터럽트 1, 인터럽트 2가 있고(단, 인터럽트 레벨의 우선도는, 인터럽트 1>인터럽트 2로 함), 각 인터럽트에 대응하는 인터럽트 처리 태스크를 각각, 인터럽트 처리 태스크 1, 인터럽트 처리 태스크 2로 한다. 이 때의 태스크의 우선도를
인터럽트 처리 태스크 1>인터럽트 처리 태스크 2
로 하는 것에 의해, 레벨 인터럽트에 대응한 가상 인터럽트 처리를 실현하는 것이 가능하다.
다음에, 가상 인터럽트 제어 프로그램(510)의 인터럽트 처리 태스크(500)의 기동 및 종료 처리를 설명한다.
도 9는 인터럽트를 판정하는 처리의 예를 나타내는 플로우차트이다. 단계 S601에서, 우선, 인터럽트가 발생하면, 제어는 가상 인터럽트 제어 프로그램(510)의 인터럽트 판정 처리로 전환된다. CPU(111)는 레지스터 퇴피, 스택의 전환 등의 전처리를 행한다. 다음에, 단계 S602에서, 그 인터럽트가, 디버그 대상 멀티태스크 시스템(150)의 인터럽트에 해당하는지 여부를 판정한다. 해당할 때에는 처리는 단계 S605로 진행하고, 하지 않을 때에는 단계 S603으로 진행한다.
단계 S603에서는, CPU(111)는 통상의 인터럽트 처리와 마찬가지로 인터럽트 처리 프로그램을 실행하고, 단계 S604에서 레지스터의 복귀, 디스패치 처리 등의 후처리를 실행하여, 인터럽트로부터 복귀한다.
한편, 단계 S605에서는, CPU(111)는, 인터럽트 처리 태스크(500)의 기동 처리를 행한다. 이 처리의 상세를, 이하, 도 10을 참조하면서 상술한다.
도 10은, 인터럽트 처리 태스크(500)를 기동하는 처리의 예를 나타내는 플로우차트이다. 우선 단계 S701에서, CPU(111)는, 제 2 OS(130)에 대해 제 1 OS 태스크(160)의 우선도 변경의 시스템 호출을 발행하여, 제 1 OS 태스크(160)의 우선도를 최고(최우선)로 변경한다. 그리고 단계 S702에서, CPU(111)는 제 2 OS(130)의 디스패치 처리를 실행한다. 이 결과, 실행의 대상이, 최고 우선도의 태스크인 제 1 OS 태스크(160)로 전환된다.
다음 단계 S703에서는, CPU(111)는, 인터럽트 처리 태스크(500)를 기동하기 위해서, 제 1 OS 태스크(160)에 인터럽트 처리 태스크(500)의 태스크 기동의 시스템 호출을 발행한다. 그리고 단계 S704에서, CPU(111)는, 제 1 OS 태스크(160)의 디스패치 처리를 실행한다. 이에 따라, 최고 우선도인 인터럽트 처리 태스크(500)가 디스패치된다.
또한 CPU(111)는, 단계 S705에서, 디버그 대상 멀티태스크 시스템(150)의 모든 인터럽트를 금지한다. 그리고, 인터럽트로부터 복귀하여, 인터럽트 처리 태스크(500)를 실행한다.
다음에, 도 11을 참조하면서, 인터럽트 처리 태스크의 종료 시의 처리를 설명한다. 도 11은, 인터럽트 처리 태스크(500) 종료 시의 처리의 예를 나타내는 플로우차트이다. 단계 S801에서, CPU(111)는, 인터럽트 처리 태스크(500)를 제 1 OS 태스크(160)의 레디 큐로부터 빼서, 휴지 상태로 천이시킨다. 또, 「레디 큐」 (Ready Queue)란, 실행 가능 상태의 태스크를 관리하기 위해서 사용하는 행렬이다. 태스크는 레디 상태로 되면, 우선도마다 대기 행렬로 배치된다. 이 대기 행렬의 것을 레디 큐라고 부른다.
다음 단계 S802에서는, CPU(111)는, 다른 인터럽트 처리 태스크가 기동되어 있는지 여부를 체크한다. 기동되어 있지 않을 때에는 단계 S803으로 진행하고, 기동되어 있을 때에는 단계 S804로 진행한다.
단계 S803에서는, 제 1 OS 태스크(160)의 우선도를 본래로 되돌리기 위해서, CPU(111)는, 제 2 OS(130)에 제 1 OS 태스크(160)의 우선도 변경의 시스템 호출을 발행한다.
단계 S804에서는, CPU(111)는, 제 1 OS 태스크(160)의 디스패치 처리를 실행한다. 이에 따라, 실행 대상이 최고의 우선도를 갖는 태스크로 전환된다.
디스패치 처리에 의해 실행 상태로 된 태스크에 대응한 인터럽트 허가 및 금지의 상태로 하기 위해서, 단계 S805에서, CPU(111)는, 디버그 대상 멀티태스크 시스템의 인터럽트 허가/금지 설정 처리를 실행한다. 예컨대, 단계 S804의 제 1 OS 태스크(160)로의 디스패치 처리 후에, 실행 상태로 된 태스크가 인터럽트 금지 상태의 인터럽트 처리 태스크 등인 경우에는, 디버그 대상 멀티태스크 시스템(150)의 인터럽트를 인터럽트 금지로 설정한다. 또한, 인터럽트 허가 상태의 태스크 등인 경우에는, 금지한 디버그 대상 멀티태스크 시스템(150)의 인터럽트를 인터럽트 허가로 설정한다.
인터럽트 허가/금지 설정 처리는, 이하의 처리에 의해서 실현된다. 즉, 제 1 OS 태스크(160)는, 각 태스크(태스크(151), 태스크(152) 및 인터럽트 처리 태스크(500))의 인터럽트 허가 및 금지의 상태를 관리하는 정보(이하, 「인터럽트 관리 정보」라고 함)를 유지한다. 예컨대, 제 1 OS 태스크(160)는, 태스크·콘트롤·블록(TCB)에 태스크의 인터럽트 허가 상태인지의 인터럽트 허가 플래그, 및 접수 가능한 인터럽트 레벨을 설정하기 위한 인터럽트 마스크 레벨을 유지한다. 그 후, 제 1 OS 태스크(160)의 디스패치 처리에 의해서 실행 상태로 된 태스크의 인터럽트 관리 정보를 참조하여, 디버그 대상 멀티태스크 시스템(150)의 인터럽트의 인터럽트 허가 및 금지를 설정하면 좋다. 예컨대, 인터럽트 제어 장치(112)의 인터럽트 제어 레지스터 중, 디버그 대상 멀티태스크 시스템(150)의 인터럽트를 제어하는 인터럽트 제어 레지스터의 설정을 인터럽트 허가 및 금지로 설정한다.
다음 단계 S806에서, CPU(111)는, 제 2 OS(130)의 디스패치 처리를 실행한다. 이에 따라, 이 시점에서의 최우선의 태스크가 실행된다.
이상과 같이, 인터럽트 처리를 하나의 태스크로 하여 제 1 OS 태스크(160)로 관리하여, 가상 인터럽트 제어 프로그램(510)에 의해서, 다른 태스크(태스크(141, 142, 151, 152))보다 우선적으로 인터럽트 처리 태스크(500)를 실행한다. 우선도를 설정할 수 있기 때문에, 통상의 인터럽트 처리와 마찬가지로 인터럽트 처리 태스크(150)를 우선하여 실행하는 것이 가능해진다.
다음에, 디버그 대상 멀티태스크 시스템(150)의 태스크(태스크(151 및 152)) 및 인터럽트 처리 태스크(500)의 정지 처리를 설명한다.
디버그 대상 멀티태스크 시스템(150)의 태스크(태스크(151) 또는 태스크 (152))의 정지 처리는, 실시예 1과 마찬가지로, 멀티태스크 시스템을 구성하는 임의의 태스크가 브레이크포인트에 도달한 시점, 혹은 예외가 발생한 시점에서 행해진다. 이 시점에 있어서, CPU(111)는 제 1 OS 태스크(160)의 실행을 정지한다. 디버그 대상 멀티태스크 시스템(150)의 인터럽트 처리에 있어서도 인터럽트 처리 태스크(500)로서 제 1 OS 태스크(160)로 태스크로서 관리되기 때문에, 통상의 태스크(태스크(151 또는 태스크(152))와 마찬가지로 브레이크포인트에 도달한 시점 혹은 예외가 발생한 시점에서, 제 1 OS 태스크(160)의 실행을 정지함으로써, 디버그 대상 멀티태스크 시스템(150)이 정지한다. 정지한 디버그 대상 멀티태스크 시스템(150)의 재개 처리는, 실시예 1에서 설명한 재개 처리와 마찬가지이다.
다음에 가상 인터럽트 처리의 동작 예를 설명한다. 이 예는, 태스크(141)가 실행 중이며, 인터럽트 처리 태스크는 기동되어 있을 때의 가상 인터럽트 처리의 동작 예이다. 또한, 제 2 OS(130)가 관리하고 있는 태스크의 우선도를
태스크(141)(우선도 2)>태스크(142)(우선도 3)>제 1 OS 태스크(160)(우선도 4)
로 한다. 인터럽트 처리 태스크의 기동 처리를 위해 제 1 OS 태스크(160)의 우선도를 최우선으로 하였을 때에는, 각 태스크의 우선도를
제 1 OS 태스크(160)(우선도 1)>태스크(141)(우선도 2)>태스크(142)(우선도 3)
로 한다. 또한, 제 1 OS 태스크(160)가 관리하는 태스크의 우선도를
인터럽트 처리 태스크(500)(우선도 1)>태스크(151)(우선도 2)>태스크(152)( 우선도 3)
로 한다.
도 12(a)는, 디버그 대상 멀티태스크 시스템의 인터럽트가 발생하였을 때의 태스크의 천이 타이밍을 나타낸다. 도 12(b)는, 비디버그 대상의 멀티태스크 시스템의 인터럽트가 발생하였을 때의 태스크의 천이 타이밍을 나타낸다. 도 13은, 인터럽트 처리 태스크의 기동 처리 및 종료 처리에 있어서의, 제 1 OS 태스크(160) 및 제 2 OS(130)의 레디 큐의 상태를 나타낸다.
우선, 디버그 대상 멀티태스크 시스템(150)의 인터럽트가 발생하였을 때의 동작을 설명한다.
도 12(a)의 (901) 및 도 13(a)에 도시하는 바와 같이, 디버그 대상 멀티태스크 시스템(150)의 인터럽트가 발생하면, CPU(111)는 제어를 가상 인터럽트 제어 프로그램(510)의 인터럽트 판정 처리로 전환한다. 레지스터 퇴피, 스택의 전환 등의 전처리(단계 S601)를 행한다. 다음에, 디버그 대상 멀티태스크 시스템(150)의 인터럽트인지 여부를 판정한다(단계 S602). 여기서는 디버그 대상 멀티태스크 시스템(150)의 인터럽트이므로, 인터럽트 처리 태스크의 기동 처리를 실행한다(단계 S605).
다음에 도 13(b)에 도시하는 바와 같이, 제 1 OS 태스크(160)의 우선도를 최고우선도로 하는 시스템 호출을 제 2 OS(130)에 대해 발행하고(단계 S701), 제 2 OS(130)의 디스패치 처리를 실행한다(단계 S702). 이에 따라, 태스크(141)로부터 최고 우선 태스크인 제 1 OS 태스크(160)로의 전환이 행해진다. 다음에 도 13(c) 에 도시하는 바와 같이, 제 1 OS 태스크(160)에 인터럽트 처리 태스크의 기동에 관한 시스템 호출이 발행되어(단계 S703), 제 1 OS 태스크(160)의 디스패치 처리를 실행한다(단계 S704). 이에 따라, 최고 우선도인 인터럽트 처리 태스크(500)가 실행 대상으로 할당된다. 다음에, 디버그 대상 멀티태스크 시스템(150)의 모든 인터럽트를 금지하고(단계 S705), 인터럽트로부터 복귀하여, 인터럽트 처리 태스크(500)의 실행이 개시된다(도 12(a)의 (902)).
인터럽트 처리 태스크(500)가 종료하면(도 12(a)의 (903)), 도 13(d)부터 이해되는 바와 같이, 인터럽트 처리 태스크(500)를 제 1 OS 태스크(160)의 레디 큐로부터 빼서 휴지 상태로 천이시킨다(단계 S801). 다음에, 다른 인터럽트 처리 태스크가 기동되어 있는지 여부가 체크된다(단계 S802).
기동되어 있지 않기 때문에, 제 1 OS 태스크(160)의 우선도를 본래로 되돌리기 위해서, 도 13(e)에 도시하는 바와 같이, 제 2 OS(130)에 제 lOS 태스크(160)의 우선도 변경의 시스템 호출을 발행한다(단계 S803). 그리고, 제 1 OS 태스크(l60)의 디스패치 처리를 실행함으로써(단계 S804), 태스크(151)가 실행 상태로 되어, 태스크(15l)의 인터럽트 상태에 따라 디버그 대상 멀티태스크 시스템의 인터럽트 설정이 행해진다(도 11 단계 S805). 또한, 제 2 OS(130)의 디스패치 처리를 실행한다(단계 S806). 이에 따라, 이 시점에서의 최우선의 태스크(141)가 실행된다 (도 12(a)의 (904)).
다음에, 비디버그 대상의 멀티태스크 시스템의 인터럽트가 발생한 경우의 동작을 설명한다.
인터럽트가 발생하면(도 12(b)의 (905)), CPU(111)는 제어를 가상 인터럽트 제어 프로그램(510)의 인터럽트 판정 처리로 전환한다. 그리고 레지스터의 퇴피, 스택의 전환 등의 전처리(단계 S601)를 행한다. 그 후, 그 인터럽트가 디버그 대상 멀티태스크 시스템(150)의 인터럽트인지가 판정된다(단계 S602). 여기서는 디버그 대상 멀티태스크 시스템(150)의 인터럽트가 아니기 때문에, 인터럽트 처리 프로그램로 분기한다(도 9의 단계 S603, 도 12(b)의 (906)). 인터럽트 처리 프로그램의 실행 후, 가상 인터럽트 처리로 되돌아간다(도 12(b)의 (907)). 레지스터의 복귀, 디스패치 처리 등의 후처리를 실행하여(단계 S604), 인터럽트로부터 복귀한다(도 12(b)의 (908)).
본 실시예에 의하면, 실시예 1에 있어서 설명한 효과와 함께, 또한 이하의 효과를 얻을 수 있다. 즉, 인터럽트 처리와 동등한 동작을 시키는 가상 인터럽트 처리에 의해서, 디버그 대상 멀티태스크 시스템의 인터럽트 처리를 제 1 OS 태스크(160)로 관리하고, 브레이크포인트에 도달한 시점 혹은 예외가 발생한 시점에서, 제 1 OS 태스크(160)의 실행을 정지한다. 이에 따라, 디버그 대상 멀티태스크 시스템(150)을 구성하는 모든 태스크(태스크(151) 및 태스크(152)) 및 인터럽트 처리(500)에 관하여, 그 실행 환경을 유지한 상태에서 실행을 억제할 수 있다. 이에 따라, 인터럽트 처리를 포함하는 멀티태스크 시스템 전체의 디버그가 가능해져, 디버그를 용이화할 수 있다.
또, 본 실시예에서는, 타겟 시스템(110)이 2개의 멀티태스크 시스템(140, 150)으로 구성되는 예로 설명하였지만, 3개 이상의 멀티태스크 시스템으로 구성되 는 경우에도 본 발명은 적용 가능하다. 또한, 각 멀티태스크 시스템(140, 150)에 있어서도 태스크 수를 각각 2개로 구성되는 예로 설명하였지만, 각 멀티태스크 시스템(140, 150)의 한쪽, 또는 쌍방이 3개 이상의 태스크로 구성되는 경우에도 본 발명은 적용 가능하다. 또한, 디버그 대상 멀티태스크 시스템(150)의 인터럽트 처리 수가 하나로 구성되는 예로 설명하였지만, 2개 이상의 인터럽트 처리로 구성되는 경우에도 본 발명은 적용 가능하다.
또, 본 실시예에서는, 비디버그 대상의 멀티태스크 시스템(140)은 제 2 OS(130)로 관리되지만, 제 2 OS(130)로 관리되는 OS 태스크로 관리하더라도 좋다. 또한, 비디버그 대상의 멀티태스크 시스템이 2개 이상인 경우에 있어서도, 각 비디버그 대상의 멀티태스크 시스템을 0S 태스크로 관리하여, 각 0S 태스크를 제 2 OS(130)로 관리하더라도 좋다.
또, 본 실시예에서는, 인터럽트 처리 태스크의 기동 처리의 인터럽트 금지 처리(도 10의 단계 S705), 및 인터럽트 처리 태스크 종료 처리의 인터럽트 허가/금지 처리(도 11의 단계 S805)에 있어서, 디버그 대상 멀티태스크 시스템(150)의 모든 인터럽트를 허가 및 금지하는 예로 설명하였지만, 디버그 대상 멀티태스크 시스템(150) 및 멀티태스크 시스템(140)의 모든 인터럽트를 허가 및 금지하더라도 좋다.
(실시예 3)
본 실시예의 디버그 시스템의 전체 구성은, 도 8을 참조하여 설명한 디버그 시스템의 구성과 동일하다. 따라서, 특히 새롭게 설명하지 않는 구성요소 및 동작에 있어서는, 이전의 실시예에서 설명한 바와 같이 한다.
이하, 본 실시예에 따른 가상 인터럽트 처리를 설명한다. 본 실시예의 가상 인터럽트 처리는, 디버그 대상 멀티태스크 시스템의 인터럽트 처리(500)를 태스크(인터럽트 처리 태스크)로 하여 제 1 OS 태스크(160)로 관리하고, 가상 인터럽트 제어 프로그램(510)에 의해, 디버그 대상 멀티태스크 시스템의 태스크(태스크(151, 152))보다 우선적으로 인터럽트 처리 태스크를 실행시키는 처리로서 실현한다. 이하, 그 처리를 설명한다.
우선, 도 8의 각 태스크의 우선도를 이하에 나타내는 바와 같이 한다. 즉, 제 1 OS 태스크(160)가 관리하는 각 태스크의 우선도를,
인터럽트 처리 태스크(500)>인터럽트 처리 태스크 이외의 태스크(태스크(151, 152))
로 한다. 또한, 제 2 OS(130)가 관리하는 각 태스크의 우선도에 관해서는, 우선도의 제약은 없다.
또한, 디버그 대상 멀티태스크 시스템(150)에, 인터럽트 처리가 복수 존재하는 경우에는, 실시예 2와 마찬가지로, 인터럽트 처리 태스크의 우선도를 상이하게 한 것에 의해, 레벨 인터럽트의 기능을 가상 인터럽트 처리로 실행하는 것이 가능하다.
다음에, 본 실시예의 가상 인터럽트 제어 프로그램(510)의 인터럽트 처리 태스크(500)의 기동 및 종료 처리를 설명한다. 또, 인터럽트를 판정하는 처리는 도 9에 나타내는 순서로 행해진다.
우선, 인터럽트가 발생하면, CPU(111)는 제어를 가상 인터럽트 제어 프로그램(510)의 인터럽트 판정 처리로 전환한다. 그리고 레지스터 퇴피, 스택의 전환 등의 전처리(도 9의 단계 S601)를 행한다. 다음에, 디버그 대상 멀티태스크 시스템(150)의 인터럽트인지 여부를 판정한다(도 9의 단계 S602).
디버그 대상 멀티태스크 시스템(150)의 인터럽트가 아닌 경우에는, 통상의 인터럽트 처리와 마찬가지로, 인터럽트 처리 프로그램을 실행하여(도 9의 단계 S603), 레지스터의 복귀, 디스패치 처리 등의 후처리를 실행하여(도 9의 단계 S604), 인터럽트로부터 복귀한다.
디버그 대상 멀티태스크 시스템의 인터럽트의 경우에는, 인터럽트 처리 태스크의 기동 처리를 실행한다(도 9의 단계 S605). 이 처리는 도 15에 도시되어 있다.
도 15는, 본 실시예의 인터럽트 처리 태스크(500)를 기동하는 처리의 예를 나타내는 플로우차트이다.
우선 단계 S1201에서, CPU(111)는 인터럽트 처리 태스크(500)를 기동하기 위해서 제 1 OS 태스크(160)에 태스크 기동의 시스템 호출을 발행하여, 단계 S1202에서, 제 1 OS 태스크가 실행 중인지 확인한다. 실행 중인 때에는 단계 S1203으로 진행하고, 실행 중이지 않을 때에는 단계 S1205로 진행한다.
단계 S1203에서는, CPU(111)는 제 1 OS 태스크(160)의 디스패치 처리를 실행한다. 이에 따라, 최고 우선도인 인터럽트 처리 태스크(500)가 디스패치된다. 또 한 단계 S1204에서는, 디버그 대상 멀티태스크 시스템(150)의 모든 인터럽트를 금지하고, 그 후, 인터럽트로부터 복귀하여, 인터럽트 처리 태스크(500)를 실행한다.
한편, 단계 S1205에서는, CPU(111)는 제 1 OS 태스크(160)가 디스패치된 후에, 인터럽트 처리 태스크(500)를 디스패치하기 위해서, 인터럽트 처리 태스크의 기동 요구를 설정한다. 이 기동 요구의 설정은, 예컨대, 인터럽트 처리 태스크의 기동 요구 플래그를 세트하는 것에 의해 실행한다. 다음에, 단계 S1206에서, 레지스터의 복귀 등의 후처리를 실행하여, 인터럽트로부터 복귀한다.
계속해서, 제 2 OS에서, 제 1 OS 태스크(160)가 디스패치된 후에, 제 1 OS 태스크에 있어서 인터럽트 처리 태스크(500)를 디스패치하는 처리를 설명한다. 도 16은, 제 2 OS의 디스패치 처리의 예를 나타내는 플로우차트이다.
우선, 단계 S1301에서, CPU(111)는 제 2 OS의 태스크 스케줄링을 실행하고, 실행 상태의 태스크가 제 1 OS 태스크이며, 또한, 인터럽트 처리 태스크의 기동 요구가 있는지 여부를 판정한다. 조건을 만족할 때에는 단계 S1303로 진행하고, 만족하고 있지 않을 때에는 프로그램으로 복귀하여, 제 2 OS의 태스크 스케줄링으로 실행 상태로 된 태스크를 실행한다.
단계 S1303에서, CPU(111)는, 제 1 OS 태스크의 디스패치 처리를 실행한다. 이에 따라, 인터럽트 처리 태스크(500)가 디스패치된다. 또한 단계 S1304에서, CPU(111)는, 디버그 대상 멀티태스크 시스템(150)의 모든 인터럽트를 금지하여, 인터럽트 처리 태스크(500)를 실행한다.
다음에, 인터럽트 태스크의 종료 시의 처리를 설명한다. 도 17은, 본 실시 예의 인터럽트 처리 태스크(500) 종료 시의 처리의 예를 나타내는 플로우차트이다.
우선 단계 S1401에서, CPU(111)는, 인터럽트 처리 태스크(500)를 제 1 OS 태스크(160)의 레디 큐로부터 빼서, 휴지 상태로 천이시킨다. 다음에 단계 S1402에서, CPU(111)는 제 1 OS 태스크(l60)의 디스패치 처리를 실행한다. 디스패치 처리에 의해 실행 상태로 된 태스크에 대응한 인터럽트 허가 및 금지의 상태로 하기 위해서, 단계 S1403에서, CPU(111)는 디버그 대상 멀티태스크 시스템의 인터럽트 허가/금지 설정 처리를 실행하여, 실행 상태로 된 태스크를 실행한다.
이상과 같이 인터럽트 처리를 하나의 태스크로 하여, 제 1 OS 태스크(160)로 관리하여, 가상 인터럽트 제어 프로그램(510)에 의해서, 디버그 대상 멀티태스크 시스템의 태스크(태스크(l51, 152))보다 우선적으로 인터럽트 처리 태스크(500)를 실행한다. 우선도를 설정할 수 있기 때문에, 인터럽트 처리 태스크(500)를 우선하여 실행하는 것이 가능해진다.
다음에, 본 실시예에 있어서의 디버그 대상 멀티태스크 시스템(150)의 태스크(태스크(151 및 152)) 및 인터럽트 처리 태스크(500)를 정지하는 처리를 설명한다.
디버그 대상 멀티태스크 시스템(150)의 태스크(태스크(151) 또는 태스크(152))를 정지하는 처리는, 실시예 1과 마찬가지로, 멀티태스크 시스템을 구성하는 임의의 태스크가 브레이크포인트에 도달한 시점 혹은 예외가 발생한 시점에서, 제 1 OS 태스크(160)의 실행을 정지한다.
디버그 대상 멀티태스크 시스템(150)의 인터럽트 처리에 있어서도, 인터럽트 처리 태스크(500)로 하여 제 1 OS 태스크(160)로 태스크로서 관리되기 때문에, 통상의 태스크(태스크(151) 또는 태스크(152))와 마찬가지로 브레이크포인트에 도달한 시점 혹은 예외가 발생한 시점에서, 제 1 OS 태스크(160)의 실행을 정지함으로써, 디버그 대상 멀티태스크 시스템(150)을 정지한다.
다음에 본 실시예에 따른 가상 인터럽트 처리의 동작 예를 설명한다. 이 예는, 태스크(141)가 실행 중이며, 인터럽트 처리 태스크는 기동되어 있을 때의 가상 인터럽트 처리의 동작 예이다. 또한, 제 2 OS(130)가 관리하고 있는 태스크의 우선도를
태스크(141)(우선도 2)>태스크(142)(우선도 3)>제 1 OS 태스크(160)(우선도 4)
로 하고, 또한, 제 1 OS 태스크(160)가 관리하는 태스크의 우선도를
인터럽트 처리 태스크(500)(우선도 1)>태스크(151)(우선도 2)>태스크(152)(우선도 3)
로 한다.
도 18은, 디버그 대상 멀티태스크 시스템(150)의 인터럽트가 발생한 경우에 있어서의, 태스크의 천이의 타이밍을 나타낸다. 또한, 도 19는, 인터럽트 처리 태스크의 기동 처리 및 종료 처리에 있어서의, 제 1 OS 태스크(160) 및 제 2 OS(130)의 레디 큐의 상태를 나타낸다.
디버그 대상 멀티태스크 시스템(150)의 인터럽트가 발생한 경우의 동작을 설명한다.
디버그 대상 멀티태스크 시스템의 인터럽트가 발생하면(도 18의 (1501), 도 19(a)), CPU(111)는 제어를 가상 인터럽트 제어 프로그램(510)의 인터럽트 판정 처리로 전환한다. 그리고, 레지스터 퇴피, 스택의 전환 등의 전처리(단계 S601)를 행한다. 다음에, 인터럽트 처리 태스크의 기동 대상의 인터럽트인지 여부를 판정한다(단계 S602). 이 예의 인터럽트는, 인터럽트 처리 태스크의 기동 대상의 인터럽트이다. 따라서 CPU(111)는, 인터럽트 처리 태스크의 기동 처리를 실행한다(단계 S605).
우선, 인터럽트 처리 태스크(500)를 기동하기 위해서, 제 1 OS 태스크(160)에 인터럽트 처리 태스크(500)의 태스크 기동의 시스템 호출을 발행한다(단계 S1201, 도 19(b)). 다음에, 제 1 OS 태스크가 실행 중인지 확인한다(단계 S1202). 제 1 OS 태스크가 실행 중이 아니기 때문에, 제 1 OS 태스크(160)가 디스패치된 후에 인터럽트 처리 태스크(500)를 디스패치하기 위해서, 인터럽트 처리 태스크의 기동 요구를 설정한다(단계 S1205). 다음에, 레지스터의 복귀 등의 후처리를 실행하여(단계 S1206), 인터럽트로부터 복귀하여, 태스크(141)를 실행한다(도 18의(1502)). 태스크(141)가 종료하면(도 18의 (1503)), 제 2 OS의 디스패치 처리가 실행된다.
우선, 제 2 OS의 태스크 스케줄링을 실행하여(단계 S1301), 태스크(142)가 실행 상태로 된다(도 19(c)). 실행 상태의 태스크가 제 1 OS 태스크이며, 또한, 인터럽트 처리 태스크의 기동 요구가 있는지 여부를 판정한다(단계 S1302). 제 1 OS 태스크가 아니기 때문에, 실행 상태로 된 태스크(142)를 실행한다(도 18의 (1504)). 태스크(142)가 종료하면(도 18의 (1505)), 제 2 OS의 디스패치 처리가 실행된다. 제 2 OS의 태스크 스케줄링을 실행하여(단계 S1301), 제 1 OS 태스크가 실행 상태로 된다(도 19(d)). 실행 상태의 태스크가 제 1 OS 태스크이며, 또한, 인터럽트 처리 태스크의 기동 요구가 있는지 여부를 판정한다(단계 S1302). 제 1 OS 태스크이며, 또한, 인터럽트 처리 태스크의 기동 요구가 있으므로, 제 1 OS의 디스패치 처리를 실행한다(단계 S1303). 이에 따라, 인터럽트 처리 태스크(500)가 디스패치된다. 또한, 디버그 대상 멀티태스크 시스템(150)의 모든 인터럽트를 금지하여(단계 S1304), 인터럽트 처리 태스크(500)를 실행한다(도 18의 (1506)).
인터럽트 처리 태스크(500)가 종료하면(도 18의(1507)), 우선, 인터럽트 처리 태스크(500)를 제 1 OS 태스크(160)의 레디 큐로부터 빼서, 휴지 상태로 천이시킨다(단계 S1401, 도 19(e)). 다음에, 제 1 OS 태스크(160)의 디스패치 처리를 실행함으로써(단계 S1402), 태스크(151)가 실행 상태로 된다. 태스크(151)의 인터럽트 상태에 따라서, 디버그 대상 멀티태스크 시스템(150)의 인터럽트 설정을 행하여 (단계 S1403), 실행 상태로 된 태스크(151)를 실행한다(도 18의 (1508)). 이에 따라, 실시예 2에 따른 디버그 시스템과 마찬가지의 효과를 얻을 수 있다.
상술한 바와 같이, 디버그 대상 멀티태스크 시스템(150)을 제 1 OS 태스크(160)로 관리하여, 디버그 대상 멀티태스크 시스템을 구성하는 임의의 태스크(태스크(151) 또는 태스크(152))가 브레이크포인트에 도달한 시점 혹은 예외가 발생한 시점에서, 제 1 OS 태스크(160)의 실행을 정지함으로써, 디버그 대상 멀티태스크 시스템(150)을 구성하는 모든 태스크(태스크(151) 및 태스크(152))에 관하여, 그 실행 환경을 유지한 상태에서 실행을 억제하는 것이 가능해진다. 또한, 디버그 대상 멀티태스크 시스템(150)의 정지 중에, 다른 실행 중의 태스크 등에 의한 태스크의 상태를 변화시키는 것과 같은 시스템 호출이 제 2 OS(130)에 대해 발행되더라도, 제 1 OS(160)로 관리되어 있는 디버그 대상 멀티태스크 시스템(150)의 태스크(151, 152)에는 영향을 주지 않고, 디버그를 용이화할 수 있다.
또한, 인터럽트 처리와 동등한 동작을 시키는 가상 인터럽트 처리에 의해서, 디버그 대상 멀티태스크 시스템의 인터럽트 처리를 제 1 OS 태스크(160)로 관리하고, 브레이크포인트에 도달한 시점 혹은 예외가 발생한 시점에서, 제 1 OS 태스크(160)의 실행을 정지함으로써, 디버그 대상 멀티태스크 시스템(150)을 구성하는 모든 태스크(태스크(151) 및 태스크(152)) 및 인터럽트 처리(500)에 관하여, 그 실행 환경을 유지한 상태에서 실행을 억제하는 것이 가능해진다. 이에 따라, 인터럽트 처리를 포함하는 멀티태스크 시스템 전체의 디버그가 가능해져, 디버그를 용이화할 수 있다.
본 실시예에 있어서는, 타겟 시스템(110)이 2개의 멀티태스크 시스템(140, 150)으로 구성되는 예로 설명하였지만, 3개 이상의 멀티태스크 시스템으로 구성되는 경우에도 본 발명은 적용 가능하다. 또한, 각 멀티태스크 시스템(140, 150)에 있어서도 태스크 수를 각각 2개로 구성되는 예로 설명하였지만, 각 멀티태스크 시스템(140, 150)의 한쪽, 또는 쌍방이 3개 이상의 태스크로 구성되는 경우에도 본 발명은 적용 가능하다. 또한, 디버그 대상 멀티태스크 시스템(150)의 인터럽트 처리 수가 하나로 구성되는 예로 설명하였지만, 2개 이상의 인터럽트 처리로 구성되 는 경우에도 본 발명은 적용 가능하다.
본 실시예에 있어서는, 비디버그 대상의 멀티태스크 시스템(140)은 제 2 OS(130)로 관리되지만, 제 2 OS(130)로 관리되는 OS 태스크로 관리하더라도 좋다. 또한, 비디버그 대상의 멀티태스크 시스템이 2개 이상인 경우에 있어서도, 각 비디버그 대상의 멀티태스크 시스템을 0S 태스크로 관리하여, 각 0S 태스크를 제 2 OS(130)로 관리하더라도 좋다.
또, 본 실시예에서는, 인터럽트 처리 태스크의 기동 처리 내의 인터럽트 금지 처리(도 15의 단계 S1204), 제 2 OS 디스패치 처리의 인터럽트 금지 처리(도 16의 단계 S1304), 및 인터럽트 처리 태스크 종료 처리의 인터럽트 허가/금지 처리(도 17의 단계 S1403)에서, 디버그 대상 멀티태스크 시스템(150)의 모든 인터럽트를 허가 및 금지하는 예를 들어 설명하였다. 그러나, 디버그 대상 멀티태스크 시스템(150) 및 멀티태스크 시스템(14O)의 모든 인터럽트를 허가 및 금지하더라도 좋다.
(산업상 이용 가능성)
본 발명에 의하면, 복수의 태스크와 인터럽트 처리로 구성되는 멀티태스크 시스템을 복수 병행 실행하는 프로그램의 디버그에 유용한 방법 및 장치를 얻을 수 있다. 본 발명에 따른 멀티태스크 시스템의 프로그램 디버그 방법과 그 장치는, 디버그 대상 멀티태스크 시스템을 구성하는 임의의 태스크 및 인터럽트 처리가 브레이크포인트에 도달한 시점 혹은 예외가 발생한 시점에서, 디버그 대상 멀티태스크 시스템을 구성하는 모든 태스크 및 인터럽트 처리에 관한 것으로, 그 실행 환경 을 유지한 상태에서 실행을 억제한다. 또한, 디버그 대상 멀티태스크 시스템 정지 중에, 다른 실행 중의 태스크로부터 태스크의 상태를 변화시키는 시스템 호출(call)이 발행되더라도, 디버그 대상 멀티태스크 시스템의 태스크는 영향을 받지 않는다. 이에 따라, 멀티태스크 시스템의 디버그가 용이하게 된다.
본 발명의 디버그 시스템에 의하면, 디버그 대상의 제 1 멀티태스크 시스템을 제 1 OS에 의해서 관리하고, 또한, 그 제 1 OS를 태스크로 하여 제 2 OS로 관리하며, 또한 제 2 멀티태스크 시스템을 제 2 OS에 의해서 관리한다. 제 2 OS는 하나의 태스크로서 제 1 OS를 관리하고 있기 때문에, 제 1 멀티태스크 시스템의 태스크의 영향을 받는 일없이, 태스크의 우선도를 결정할 수 있다.
예컨대, 제 1 멀티태스크 시스템의 태스크에 버그 등이 존재하고, 그 버그에 기인하여 제 2 OS의 각 태스크의 우선도를 변경하지는 않는다. 우선도의 변경의 영향은 제 1 OS에서 관리되는 다른 태스크에만 미치고, 제 2 OS의 각 태스크가 변경되지는 않기 때문이다.
또한 제 2 OS는, 제 1 멀티태스크 시스템의 태스크를 관리할 필요가 없기 때문에, 제 2 OS의 실행에 필요한 처리 부하를 억제할 수 있다.

Claims (14)

  1. 디버거 프로그램을 실행하는 호스트 컴퓨터와,
    상기 디버거 프로그램에 의해서 디버그되는 제 1 멀티태스크 시스템, 및 비(非)디버그 대상의 제 2 멀티태스크 시스템을 갖는 복합 시스템이 구축된 회로를 포함하는 디버그 시스템으로서,
    상기 회로는, 프로그램이 저장된 메모리, 및 상기 메모리 상의 프로그램을 실행할 수 있는 처리부를 구비하고 있고,
    상기 메모리는,
    상기 제 1 멀티태스크 시스템의 1 이상의 태스크 프로그램을 관리하는 제 1 오퍼레이팅 시스템과,
    상기 제 1 오퍼레이팅 시스템을 제 1 태스크 프로그램으로서 관리하고, 또한, 상기 제 1 태스크 프로그램과는 상이한 1 이상의 제 2 태스크 프로그램을 관리하는 제 2 오퍼레이팅 시스템을 저장하는
    디버그 시스템.
  2. 제 1 항에 있어서,
    상기 메모리에는, 상기 제 1 멀티태스크 시스템의 실행을 제어하기 위한 모니터 프로그램이 더 저장되어 있고,
    상기 처리부는, 상기 디버거 프로그램을 실행한 상기 호스트 컴퓨터로부터의 커맨드에 응답하여 상기 모니터 프로그램을 실행하고, 상기 커맨드에 따른 처리를 실행하여, 상기 호스트 컴퓨터에 응답을 되돌리는 디버그 시스템.
  3. 제 1 항에 있어서,
    상기 메모리는, 상기 제 2 오퍼레이팅 시스템 및 상기 1 이상의 제 2 태스크 프로그램을, 상기 제 2 멀티태스크 시스템으로서 저장하는 디버그 시스템.
  4. 제 1 항에 있어서,
    상기 메모리는, 상기 1 이상의 제 2 태스크 프로그램으로서, 제 3 오퍼레이팅 시스템 및 상기 제 3 오퍼레이팅 시스템에 의해서 관리되는 제 3 태스크 프로그램을 저장하고,
    상기 제 3 오퍼레이팅 시스템 및 상기 제 3 태스크 프로그램을, 상기 제 2 멀티태스크 시스템으로서 저장하는 디버그 시스템.
  5. 제 2 항에 있어서,
    상기 회로는 스택(stack)을 더 구비하며,
    상기 처리부는, 상기 제 1 멀티태스크 시스템의 실행 환경을 상기 스택에 퇴피하고, 그 후, 상기 모니터 프로그램에 근거하여, 상기 제 1 멀티태스크 시스템에 포함되는 1 이상의 태스크 프로그램의 실행을 정지하는 디버그 시스템.
  6. 제 5 항에 있어서,
    상기 처리부는, 상기 제 1 멀티태스크 시스템에 포함되는 태스크 프로그램의 실행을 정지할 때에, 상기 제 1 오퍼레이팅 시스템을 정지 상태로 천이시키는 디버그 시스템.
  7. 제 6 항에 있어서,
    상기 처리부는, 처리가 미리 설정된 브레이크포인트(breakpoint)에 도달하면, 상기 제 1 오퍼레이팅 시스템을 정지 상태로 천이시켜, 상기 제 1 멀티태스크 시스템에 포함되는 태스크 프로그램의 실행을 정지하는 디버그 시스템.
  8. 제 6 항에 있어서,
    상기 처리부는, 처리에 예외가 발생하면, 상기 제 1 오퍼레이팅 시스템을 정지 상태로 천이시켜, 상기 제 1 멀티태스크 시스템에 포함되는 태스크 프로그램의 실행을 정지하는 디버그 시스템.
  9. 제 1 항에 있어서,
    상기 처리부는, 상기 제 1 오퍼레이팅 시스템 상에서, 상기 제 1 멀티태스크 시스템의 인터럽트 처리를 실행할 수 있고, 상기 인터럽트 처리를 상기 제 1 멀티태스크 시스템 중 어느 하나의 태스크 프로그램보다도 우선하여 실행하는 디버그 시스템.
  10. 제 1 항에 있어서,
    상기 처리부는, 상기 제 1 오퍼레이팅 시스템 상에서, 상기 제 1 멀티태스크 시스템의 인터럽트 처리를 실행할 수 있고, 상기 인터럽트 처리를 상기 복합 시스템 중 어느 하나의 태스크 프로그램보다 우선하여 실행하는 디버그 시스템.
  11. 제 9 항에 있어서,
    상기 처리부에 의해 실행되는 상기 제 1 오퍼레이팅 시스템은, 상기 인터럽트 처리를 인터럽트 태스크 프로그램으로서 관리하고 있고, 상기 처리부는, 상기 인터럽트 태스크 프로그램을 상기 제 1 멀티태스크 시스템 중 어느 하나의 태스크 프로그램보다 우선하여 실행하는 디버그 시스템.
  12. 제 10 항에 있어서,
    상기 처리부에 의해 실행되는 상기 제 1 오퍼레이팅 시스템은, 상기 인터럽트 처리를 인터럽트 태스크 프로그램으로서 관리하고 있고, 상기 처리부는, 상기 인터럽트 태스크 프로그램을 상기 복합 시스템 중 어느 하나의 태스크 프로그램보다 우선하여 실행하는 디버그 시스템.
  13. 디버거 프로그램을 실행하는 호스트 컴퓨터와 접속되어, 상기 디버거 프로그램에 의해서 디버그되는 제 1 멀티태스크 시스템, 및 비디버그 대상의 제 2 멀티태스크 시스템을 갖는 복합 시스템이 구축된 회로로서,
    상기 회로는, 프로그램이 저장된 메모리와, 상기 메모리상의 프로그램을 실행할 수 있는 처리부를 구비하고,
    상기 메모리는,
    상기 제 1 멀티태스크 시스템의 1 이상의 태스크 프로그램을 관리하는 제 1 오퍼레이팅 시스템과,
    상기 제 1 오퍼레이팅 시스템을 제 1 태스크 프로그램으로서 관리하고, 또한, 상기 제 1 태스크 프로그램과는 상이한 1 이상의 제 2 태스크 프로그램을 관리 하는 제 2 오퍼레이팅 시스템을 저장하는 회로.
  14. 디버거 프로그램을 실행하는 호스트 컴퓨터와 접속되어, 상기 디버거 프로그램에 의해서 디버그되는 제 1 멀티태스크 시스템, 및 비디버그 대상의 제 2 멀티태스크 시스템을 갖는 복합 시스템을 구축하는 것이 가능한 회로로서,
    상기 회로는, 프로그램이 저장된 메모리와, 상기 메모리 상의 프로그램을 실행할 수 있는 처리부를 구비하며,
    상기 메모리는, 제 1 오퍼레이팅 시스템과,
    상기 제 1 오퍼레이팅 시스템을 제 1 태스크 프로그램으로서 관리하고, 또한, 상기 제 1 태스크 프로그램과는 상이한 1 이상의 제 2 태스크 프로그램을 관리하는 제 2 오퍼레이팅 시스템을 저장하고 있고,
    상기 제 1 오퍼레이팅 시스템은, 상기 메모리에 1 이상의 태스크 프로그램이 판독되었을 때, 상기 1 이상의 태스크 프로그램을 상기 제 1 멀티태스크 시스템의 태스크 프로그램으로서 관리하는 회로.
KR1020050082050A 2004-09-06 2005-09-05 멀티태스크 시스템을 디버그하기 위한 디버그 시스템 및회로 KR100674751B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004258675 2004-09-06
JPJP-P-2004-00258675 2004-09-06

Publications (2)

Publication Number Publication Date
KR20060051011A KR20060051011A (ko) 2006-05-19
KR100674751B1 true KR100674751B1 (ko) 2007-01-25

Family

ID=35997597

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050082050A KR100674751B1 (ko) 2004-09-06 2005-09-05 멀티태스크 시스템을 디버그하기 위한 디버그 시스템 및회로

Country Status (3)

Country Link
US (1) US20060053413A1 (ko)
KR (1) KR100674751B1 (ko)
TW (1) TWI299468B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4676289B2 (ja) * 2005-09-14 2011-04-27 パナソニック株式会社 デバッグシステム及び方法
JP5125659B2 (ja) * 2008-03-24 2013-01-23 富士通株式会社 情報処理装置、情報処理方法及びコンピュータプログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000250777A (ja) 1999-02-25 2000-09-14 Canon Inc 情報処理装置と情報処理方法、及び記憶媒体

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5301312A (en) * 1991-08-21 1994-04-05 International Business Machines Corporation Method and system for utilizing benign fault occurrence to measure interrupt-blocking times
US5621912A (en) * 1994-12-29 1997-04-15 International Business Machines Corporation Method and apparatus for enabling monitoring of guests and native operating systems
US5903718A (en) * 1996-09-16 1999-05-11 International Business Machines Corporation Remote program monitor method and system using a system-under-test microcontroller for self-debug
US5978902A (en) * 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port
US6678645B1 (en) * 1999-10-28 2004-01-13 Advantest Corp. Method and apparatus for SoC design validation
US7823131B2 (en) * 2001-06-29 2010-10-26 Mentor Graphics Corporation Debugger for a hardware-implemented operating system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000250777A (ja) 1999-02-25 2000-09-14 Canon Inc 情報処理装置と情報処理方法、及び記憶媒体

Also Published As

Publication number Publication date
TW200622906A (en) 2006-07-01
TWI299468B (en) 2008-08-01
KR20060051011A (ko) 2006-05-19
US20060053413A1 (en) 2006-03-09

Similar Documents

Publication Publication Date Title
KR100934533B1 (ko) 연산 처리 시스템, 컴퓨터 시스템 상에서의 태스크 제어 방법, 및 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
US6675191B1 (en) Method of starting execution of threads simultaneously at a plurality of processors and device therefor
TWI537831B (zh) 多核心處理器、用於執行處理程序切換之方法、用於保全一記憶體區塊之方法、用於致能使用一多核心裝置之異動處理之設備、以及用於執行記憶體異動處理之方法
JP3546678B2 (ja) マルチos構成方法
TWI426452B (zh) Work processing device
TWI428764B (zh) 編譯器管理之多重處理器上之單執行緒程式之最佳化執行
US20130305259A1 (en) Hardware control method and apparatus
CN101271409A (zh) 用于迁移逻辑分区的装置和方法以及产品
JP5725162B2 (ja) 排他制御方法、および排他制御プログラム
US8321874B2 (en) Intelligent context migration for user mode scheduling
CN101310257A (zh) 多处理器系统和用于使计算机执行多处理器系统的控制方法的程序
WO2005006188A2 (en) Parallel execution of enhanced efi based bios drivers on a multi-processor or hyper-threading enabled platform
CN104461876A (zh) 一种基于运行快照序列的并行程序重现调试方法
KR100834180B1 (ko) 프로그램/명령어의 실행을 구동하는 “l”구동법 및그것의 아키텍처와 프로세서
KR20180080329A (ko) 어플리케이션 마이그레이션을 위한 시스템 및 방법
US20040098722A1 (en) System, method, and computer program product for operating-system task management
US7434222B2 (en) Task context switching RTOS
US20220035664A1 (en) Reverse restartable sequences for lock polling scalability
KR100674751B1 (ko) 멀티태스크 시스템을 디버그하기 위한 디버그 시스템 및회로
JP2009175960A (ja) 仮想マルチプロセッサシステム
US7096472B2 (en) Systems and methods for ensuring atomicity of processes in a multitasking computing environment
JP2006099755A (ja) マルチタスクシステムをデバッグするためのデバッグシステム
JP2012123726A (ja) シミュレーション装置及びシミュレーションプログラム
JPH07225694A (ja) 仮想計算機システム
US6002870A (en) Method and apparatus for non-damaging process debugging via an agent thread

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120105

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee