KR100337149B1 - 프로그램 테스트 및 디버깅이 용이한 중앙처리장치 - Google Patents

프로그램 테스트 및 디버깅이 용이한 중앙처리장치 Download PDF

Info

Publication number
KR100337149B1
KR100337149B1 KR1020000038161A KR20000038161A KR100337149B1 KR 100337149 B1 KR100337149 B1 KR 100337149B1 KR 1020000038161 A KR1020000038161 A KR 1020000038161A KR 20000038161 A KR20000038161 A KR 20000038161A KR 100337149 B1 KR100337149 B1 KR 100337149B1
Authority
KR
South Korea
Prior art keywords
debugging
program
data
central processing
register
Prior art date
Application number
KR1020000038161A
Other languages
English (en)
Other versions
KR20020004346A (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 권 기 홍
Priority to KR1020000038161A priority Critical patent/KR100337149B1/ko
Priority to JP2001036649A priority patent/JP2002041326A/ja
Priority to CNB011123141A priority patent/CN1185578C/zh
Priority to TW090109224A priority patent/TW501007B/zh
Priority to US09/841,875 priority patent/US6820192B2/en
Priority to EP01305204A priority patent/EP1170668A3/en
Publication of KR20020004346A publication Critical patent/KR20020004346A/ko
Application granted granted Critical
Publication of KR100337149B1 publication Critical patent/KR100337149B1/ko
Priority to HK02105112.0A priority patent/HK1045377A1/zh
Priority to JP2006026313A priority patent/JP2006127553A/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • 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

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

본 발명의 프로그램 테스트 및 디버깅이 용이한 중앙처리장치는 호스트 컴퓨터와 데이터 통신을 위한 데이터 통신부; 중앙처리장치의 동작모드가 일반 동작 상태를 나타내는 일반 동작 모드인지 디버깅 상태를 나타내는 디버깅 모드인지를 나타내는 플래그를 구비한 상태 레지스터; 메모리상의 디버깅 스택 영역을 지정하는 디버깅 스택 포인터 레지스터; 브레이크 레지스터에 저장된 값과 중지데이터를 비교하여 동일하면 중앙처리장치를 디버깅 모드로 진입시키는 비교부를 구비하여 상기의 브레이크 레지스터에 저장된 값과 중지 데이터가 일치하면 상기의 중앙처리장치를 디버깅 모드로 전환시키고 상기의 플래그들이 디버깅 모드를 나타내는 값을 가지며 상기의 디버깅 스택 포인터 레지스터를 디버깅 프로그램의 데이터를 저장하는 메모리를 지정하는 스택 포인터로 사용하며 데이터 통신수단을 통해 호스트 컴퓨터로부터의 명령에 따라 디버깅을 수행하는 것을 특징으로 한다.

Description

프로그램 테스트 및 디버깅이 용이한 중앙처리장치{Central processing unit for easily testing and debugging of program}
본 발명은 프로그램 테스트 및 디버깅이 용이한 중앙처리장치에 관한 것으로, 특히 디버깅 상태에서 호스트 컴퓨터로부터 다운로드 된 테스트 및 디버깅을 하기 위한 응용 프로그램을 용이하게 테스트 및 디버깅을 수행할 수 있는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치에 관한 것이다.
일반적으로 중앙처리장치(Micro-Processor)는 메모리에 저장된 다수의 명령어들의 집합으로 이루어진 프로그램을 읽어 들여 이를 명령어 해석기에 의해 해석하고, 실행기에 의해 각 명령어에 해당하는 동작을 실행한다.
메모리에 저장된 다수의 명령어들의 집합으로 이루어진 프로그램이 올바르게 작성되었는지를 테스트하여야 하고, 응용 프로그램이 올바르게 작성되어 있지 않은 경우 그 응용 프로그램을 디버깅(Debugging)하여야 한다.
도 1은 종래의 인서킷 에뮬레이터를 사용하여 프로그램의 테스트 및 디버깅을 하기 위한 한 예의 블럭다이아그램이다.
도 1의 인서킷 에뮬레이터를 사용하여 프로그램의 테스트 및 디버깅을 하기 위한 블럭다이아그램은 중앙처리장치, 입출력장치(1) 및 메모리(2)로 구성되는 대상 시스템(4), 대상 시스템(4)을 테스트 및 디버깅하기 위해 대상 시스템(4)의 중앙처리장치를 대치할 수 있는 회로로 구성되어 대상 시스템(4)의 중앙처리장치를 중앙처리장치 모듈(Module)(3)로 대치시켜 중앙처리장치 모듈(3)과 연결된 인서킷 에뮬레이터(In Circuit Emulator:ICE)(5) 및 디버깅을 하기 위한 응용 프로그램의 테스트 및 디버깅을 위한 명령 등을 인서킷 에뮬레이터로 출력시키는 호스트 컴퓨터(6)로 구성된다.
인서킷 에뮬레이터(5)는 호스트 컴퓨터(6)로부터 응용 프로그램을 입력받아 응용 프로그램을 디버깅할 수 있는 디버깅용 프로그램을 저장하고 있으며, 호스트 컴퓨터(6)로부터 입력되는 명령에 따라 인서킷 에뮬레이터(5) 내부의 중앙처리장치를 동작시킨다. 그리고 중앙처리장치 모듈(3)을 통해 대상 시스템(4)의 제어 버스, 어드레스 버스 및 데이터 버스를 직접적으로 제어하여 대상 시스템(4)의 입출력장치(2) 및 메모리(3)에 필요한 입출력을 수행할 수 있고, 인서킷 에뮬레이터(5) 내부의 중앙처리장치의 내부 레지스터를 읽거나 내부 레지스터의 데이터를 변경할 수 있다.
즉, 인서킷 에뮬레이터(5)는 호스트 컴퓨터(6)로부터 디버깅을 하기 위한 응용 프로그램을 입력받아 프로그램을 수행시켜 인서킷 에뮬레이터(5) 내의 중앙처리장치를 동작시킨다. 그리고 대상 시스템(4)의 제어 버스, 어드레스 버스 및 데이터 버스를 직접적으로 제어하여 입출력장치(2) 및 메모리(3)에 필요한 입출력을 수행하고, 응용 프로그램의 테스트 및 디버깅을 위하여 강제적으로 응용 프로그램의 수행을 중지시킨 후 호스트 컴퓨터(6)로부터의 명령에 따라 대상 시스템(4)의 입출력장치(2) 및 메모리(3)의 데이터를 읽거나 쓰고 또는 인서킷 에뮬레이터(5) 내의 레지스터에 저장된 데이터 값을 읽거나 써서 응용 프로그램이 올바르게 작성되었는지를 판단하고, 오류가 있는 경우 응용 프로그램을 디버깅한다.
상기 종래의 인서킷 에뮬레이터를 사용하여 응용 프로그램의 테스트 및 디버깅을 하는 경우 반드시 대상 시스템의 중앙처리장치를 인서킷 에뮬레이터에 연결된 중앙처리장치 모듈로 대치될 수 있는 경우에만 유용하게 사용할 수 있고, 인서킷 에뮬레이터내에는 대상 시스템의 중앙처리장치의 기능을 하는 하드웨어가 있어야 하므로 인서킷 에뮬레이터는 고가의 장비라는 문제점을 가지고 있다. 그리고 대상 시스템을 하나의 반도체 칩으로 집적화 시킨 경우 중앙처리장치를 중앙처리장치 모듈(3)로 대체할 수 없으므로 인서킷 에뮬레이터를 사용할 수 없는 문제점을 가지고 있다.
도 2는 종래의 중앙처리장치 내에 백그라운드 디버깅 모니터부가 내장되어 프로그램의 테스트 및 디버깅을 하기 위한 블럭다이아그램이다.
도 2의 블럭다이아그램은 도 1의 대상 시스템을 하나의 반도체 칩으로 집적시킨 경우 인서킷 에뮬레이터를 사용할 수 없는 문제점을 해결하기 위해 중앙처리장치는 백그라운드 디버깅 모니터부(Background Debugging Monitor : BDM)(11)와 직렬 통신부(12)를 별도로 가지고 있다.
도 2의 종래의 중앙처리장치 내에 백그라운드 디버깅 모니터부(11)가 내장되어 프로그램의 테스트 및 디버깅을 하기 위한 블럭다이아그램은 별도의 백그라운드 디버깅 모니터부(11) 및 직렬 통신부(12)를 가진 중앙처리장치(13), 입출력장치(14) 및 메모리(15)가 하나의 반도체 칩으로 집적화된 대상 시스템(10)과 직렬 통신부(12)를 통해 응용 프로그램의 테스트 및 디버깅을 하기 위한 호스트 컴퓨터(20)로 구성된다.
백그라운드 디버깅 모니터부(11)는 호스트 컴퓨터(20)로부터 직렬 통신부(12)를 통해 입력된 명령어를 해석하여 필요한 동작을 수행하기 위해 자체적으로 레지스터, 제어유니트 등으로 구성된 콘트롤러로 중앙처리장치(13) 내부의 모든 구성요소들을 직접적으로 제어할 수 있어야 한다. 즉, 백그라운드 디버깅 모니터부(11)는 내부 버스에 연결되어 레지스터를 읽거나 값을 변경할 수 있다. 그리고 제어부, 메모리 어드레스 레지스터 및 메모리 데이터 레지스터를 제어하여 제어신호버스, 어드레스 버스 및 데이터 버스를 제어한다.
도 2의 종래의 백그라운드 디버깅 모니터부가 내장된 중앙처리장치는 직렬 통신부(12)를 통하여 호스트 컴퓨터(20)와 백그라운드 디버깅 모니터부(11)의 통신이 가능해야 하는데, 이에 요구되어지는 호스트 컴퓨터(20)와 중앙처리장치(13)를 연결하기 위한 입출력선은 2∼3개의 선이 필요하므로 도 1에서와 같이 중앙처리장치 전부를 대치하는 경우 보다 효율적이다.
종래의 백그라운드 디버깅 모니터부는 중앙처리장치(13) 내부의 모든 구성요소들을 직접적으로 제어하여야 하므로 도 2의 백그라운드 디버깅 모니터부가 내장된 중앙처리장치는 고가이고, 복잡한 하드웨어를 가지는 문제점을 가지고 있다.
본 발명의 목적은 디버깅 입력신호를 활성화시켜 사용자 모드를 갖는 중앙처리장치의 상태에 디버깅 모드를 새로이 추가하고, 디버깅 모드에서 호스트 컴퓨터로부터 다운로드 된 테스트 및 디버깅을 하기 위한 응용 프로그램을 용이하게 테스트 및 디버깅함으로써 중앙처리장치의 하드웨어가 단순하게 구성되어 중앙처리장치의 가격을 하락시킬 수 있고, 보다 효율적인 테스트 및 디버깅을 할 수 있는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치를 제공하는 데 있다.
도 1은 종래의 인서킷 에뮬레이터를 사용하여 프로그램의 테스트 및 디버깅을 하기 위한 블럭다이아그램,
도 2는 종래의 중앙처리장치 내에 직렬통신장치와 백그라운드 디버깅 모니터부가 내장되어 프로그램의 테스트 및 디버깅을 하기 위한 블럭다이아그램,
도 3은 본 발명의 프로그램 테스트 및 디버깅이 용이한 중앙처리장치의 블럭다이아그램,
도 4는 본 발명의 프로그램 테스트 및 디버깅을 위한 상태 레지스터의 구성도,
도 5a는 일반 동작을 위한 응용 프로그램 및 디버깅 프로그램이 동일한 메모리에 저장된 경우 벡터 처리의 동작도,
도 5b는 디버깅 프로그램이 일반 동작을 위한 응용 프로그램과는 다른 독립된 메모리에 저장된 경우 벡터 처리의 동작도,
도 5c는 디버깅 프로그램이 일반 동작을 위한 응용 프로그램이 저장된 메모리 및 다른 독립된 메모리에 모두 저장된 경우 벡터 처리의 동작도이다.
상기의 목적을 달성하기 위하여 본 발명의 프로그램 테스트 및 디버깅이 용이한 중앙처리장치는 호스트 컴퓨터와 데이터 통신을 위한 데이터 통신부; 중앙처리장치의 동작모드가 일반 동작 상태를 나타내는 일반 동작 모드인지 디버깅 상태를 나타내는 디버깅 모드인지를 나타내는 플래그를 구비한 상태 레지스터; 디버깅 프로그램의 데이터를 저장하는 스택 메모리를 지정하는 스택 포인터로 사용되는 디버깅 스택 포인터 레지스터; 및 브레이크 레지스터에 저장된 값과 중지데이터를 비교하여 동일하면 중앙처리장치를 디버깅 모드로 진입시키는 비교부를 구비하여 브레이크 레지스터에 저장된 값과 중지 데이터가 일치하면 중앙처리장치를 디버깅 모드로 전환시키고 상태 레지스터의 플래그가 디버깅 모드를 나타내는 값을 가지고 프로그램 카운터에 디버깅 프로그램을 수행하기 위한 시작 주소를 적재하여 디버깅 프로그램을 수행하여 데이터 통신부를 통해 호스트 컴퓨터로부터의 명령에 따라 디버깅을 수행하는 것을 특징으로 한다.
비교부의 중지데이터(BD)는 프로그램 카운터에 저장된 프로그램 번지, 데이터가 저장된 메모리 어드레스, 입출력되는 데이터, 입출력되는 어드레스일 수 있고, 마스크 레지스터(MR)를 더 구비하여 프로그램 카운터에 저장된 프로그램 번지와 마스크 레지스터(MR)에 저장된 값을 연산한 결과, 데이터가 저장된 메모리 어드레스와 마스크 레지스터(MR)에 저장된 값을 연산한 결과, 입출력되는 어드레스와마스크 레지스터(MR)에 저장된 값을 연산한 결과, 입출력되는 데이터와 마스크 레지스터(MR)에 저장된 값을 연산한 결과인 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명의 프로그램 테스트 및 디버깅이 용이한 중앙처리장치를 상세히 설명하고자 한다.
도 3은 본 발명의 프로그램 테스트 및 디버깅이 용이한 중앙처리장치를 도시한 블럭다이아그램이다.
도 3의 본 발명의 프로그램 테스트 및 디버깅이 용이한 중앙처리장치는 데이터 및 어드레스 연산에 필요한 데이터를 일시적으로 저장하는 범용 레지스터 파일(100), 프로그램이 저장된 메모리의 주소를 기억하는 프로그램 카운터(PC)와 중앙처리장치의 일반 동작 상태를 나타내는 일반 동작 모드 및 프로그램 테스트 및 디버깅을 하기 위한 상태를 나타내는 디버깅 모드를 나타내는 디버깅 모드 플래그를 가진 상태 레지스터(SR)와 브레이크 레지스터(BR), 마스크 레지스터(MR) 및 디버깅 초기화 프로그램과 디버깅 서비스 프로그램의 데이터를 저장하는 메모리를 지정하는 디버깅 스택 포인터(ISP)로 구성된 특수 레지스터 파일(200), 범용 레지스터 파일(100) 및 특수 레지스터 파일(200)을 연결하는 내부 버스(IB), 내부 버스(IB)에 연결되어 중앙처리장치 내외부에 필요한 각종 제어신호(CONT)를 출력하고 리셋 신호(RESET)에 의해 중앙처리장치를 초기화하고 디버깅 모드 진입 신호(OSI)를 검사하여 디버깅 모드 진입 신호(OSI)가 활성화되면 프로그램 카운터(PC)에 디버깅 초기화 프로그램을 수행하기 위한 시작주소를 적재하여 중앙처리장치를 디버깅 초기화 모드로 전환시키고 상태 레지스터(SR)의 플래그는 디버깅 모드를 나타내는 값을 가지도록 하는 제어유니트(300), 메모리 어드레스 레지스터(400), 메모리 데이터 레지스터(500), 호스트 컴퓨터와 데이터 통신을 위한 데이터 통신부(600) 및 브레이크 레지스터(BR)에 저장된 값(IBR)과 중지데이터(BD)를 비교하여 동일하면 중앙처리장치를 디버깅 모드로 진입시키는 비교부(700)로 구성된다.또한 본 발명의 프로그램 테스트 및 디버깅이 용이한 중앙처리장치는 호스트 컴퓨터와 데이터 통신을 위한 데이터 통신부(600), 중앙처리장치의 동작모드가 일반 동작 상태를 나타내는 일반 동작 모드인지 디버깅 상태를 나타내는 디버깅 모드인지를 나타내는 플래그를 구비한 상태 레지스터(SR), 디버깅 프로그램의 데이터를 저장하는 스택 메모리를 지정하는 스택 포인터로 사용되는 디버깅 스택 포인터(ISP) 및 브레이크 레지스터에 저장된 값과 중지데이터를 비교하여 동일하면 중앙처리장치를 디버깅 모드로 진입시키는 비교부(700)로 구성되어 초기 디버깅 모드 진입에 의해 호스트 컴퓨터로부터 입력된 브레이크 레지스터(BR)에 저장된 값과 중지 데이터(BD)가 일치하면 프로그램 카운터(PC)에 디버깅 초기화 프로그램과 디버깅 서비스 프로그램으로 이루어진 디버깅 프로그램을 수행하기 위한 시작 주소를 적재하여 디버깅 프로그램을 수행하여 중앙처리장치를 디버깅 모드로 전환시키고 상태 레지스터의 플래그가 디버깅 모드를 나타내는 값을 가지고 데이터 통신부(600)를 통해 호스트 컴퓨터로부터의 명령에 따라 디버깅을 수행할 수 있다.비교부(700)에 입력되는 중지데이터(BD)는 프로그램 카운터(PC)에 저장된 프로그램 번지, 데이터가 저장된 메모리 어드레스, 입출력되는 데이터, 입출력되는 어드레스일 수 있고, 마스크 레지스터(MR)를 사용하여 프로그램 카운터에 저장된 프로그램 번지와 마스크 레지스터(MR)에 저장된 값을 연산한 결과, 데이터가 저장된 메모리 어드레스와 마스크 레지스터(MR)에 저장된 값을 연산한 결과, 입출력되는 어드레스와 마스크 레지스터(MR)에 저장된 값을 연산한 결과, 입출력되는 데이터와 마스크 레지스터(MR)에 저장된 값을 연산한 결과일 수 있다.도 3, 도 5a 및 도 5b에 도시된 바와 같이 제어유니트(300)는 디버깅 메모리 선택신호(OSIROM)를 수신하여 브레이크 레지스터(BR)에 저장된 값(IBR)과 중지데이터(BD)가 동일할 때 디버깅 메모리 선택신호(OSIROM)에 따라 프로그램 카운터(PC)에 디버깅 서비스 프로그램(PROG5, PROG7)을 수행하기 위한 서로 다른 주소를 적재할 수 있다. 또한 도 5b에 도시된 바와 같이 디버깅 초기화 프로그램(PROG6)과 디버깅 서비스 프로그램(PROG7)으로 구성된 디버깅 프로그램을 저장하는 메모리(90)와 일반 프로그램이 저장된 메모리(80)를 분리할 수 있다.디버깅 프로그램에서 사용하는 데이터 값을 저장하는 데이터 저장 메모리와 일반 프로그램에서 사용하는 데이터 값을 저장하는 데이터 저장 메모리를 분리할 수 있다.디버깅 모드로 전환되었을 때 본 발명의 프로그램 테스트 및 디버깅이 용이한 중앙처리장치는 빠른 디버깅을 위하여 임시 저장 레지스터(1200)를 더 구비하여 디버깅 모드로 전환한 뒤 디버깅 프로그램을 수행하기 전에 프로그램 카운터(PC)와 상태 레지스터(SR)를 임시 저장 레지스터(1200)에 저장하고 디버깅 프로그램을 수행 할 수도 있다.상기 프로그램 테스트 및 디버깅이 용이한 중앙처리장치는 기준데이터가 저장된 기준 데이터 저장부(900) 및 데이터 통신부(600)를 통해 입력받은 데이터(DEB1)와 기준데이터를 비교하여 데이터 통신부(600)를 통해 입력받은 데이터(DEB1)와 기준데이터가 동일하면 중앙처리장치를 디버깅 서비스 모드로 전환시키는 기준 데이터 비교부(800)를 구비하여 사용자가 호스트 컴퓨터를 이용하여 데이터 통신부를 통해 중앙처리장치를 강제로 디버깅 서비스 모드로 전환시켜 디버깅 서비스 프로그램을 수행시킬 수 있다.본 발명의 프로그램 테스트 및 디버깅이 용이한 중앙처리장치는 미리 설정된 리셋 데이터를 저장하는 리셋 데이터 저장부(1100)와 리셋 데이터 저장부(1100)에 저장된 리셋데이터와 데이터 통신부(600)를 통해 입력된 디버깅 데이터(DEB2)를 비교하는 리셋 데이터 비교부(1000)를 더 구비하여, 사용자가 중앙처리장치를 강제로 초기화시키기 위하여 호스트 컴퓨터에서 데이터 통신부(600)로 데이터 전송하면 리셋 데이터 비교부(1000)에서 리셋 데이터 저장부(1100)에 저장된 리셋 데이터와 데이터 통신부(600)로 수신된 값을 비교하여 두 값이 동일하면 중앙처리장치를 초기화시킨다.
상기의 구성에 따른 본 발명인 프로그램의 테스트 및 디버깅이 용이한 중앙처리장치의 동작은 다음과 같다.제어유니트(300)는 리셋 신호(RESET)에 의해 중앙처리장치를 초기화하고 제어유니트(300)로 입력되는 디버깅 모드 진입 신호(OSI)가 활성화되면 도 4에 도시된 바와 같이 상태 레지스터(SR)의 디버깅 모드 플래그(OSIM)를 활성화시켜, 중앙처리장치를 응용 프로그램의 테스트 및 디버깅을 수행하기 위한 초기 환경으로 설정해 주고, 데이터 통신부(600)를 통해 호스트 컴퓨터로부터 중앙처리장치로 다운로드 된 테스트 및 디버깅을 하기 위한 응용 프로그램을 실행한다. 응용 프로그램 실행중에 비교부(700)에 의해 브레이크 레지스터(BR)에 저장된 값(IBR)과 중지데이터(BD)가 동일한지 판단하여, 두 값이 동일하면 제어유니트(300)는 중앙처리장치를 디버깅 모드로 진입시킨 후 데이터 통신부(600)를 통해 호스트 컴퓨터로부터의 명령에 따라 응용 프로그램의 테스트 및 디버깅을 수행한다.응용 프로그램은 디버깅 모드 진입 신호(OSI)가 활성화되어 테스트 및 디버깅을 수행하기 위한 초기 환경으로 중앙처리장치를 설정한 후 호스트 컴퓨터로부터 중앙처리장치로 다운로드 받거나, 중앙처리장치를 테스트 및 디버깅을 수행하기 위한 초기 환경으로 설정한 후 비교부(700)에 의해 브레이크 레지스터(BR)에 저장된 값(IBR)과 중지데이터(BD)가 동일하면 중앙처리장치를 프로그램 테스트 및 디버깅 상태로 진입시킨 후 호스트 컴퓨터로부터 중앙처리장치로 다운로드 받을 수 있다.비교부(700)에 의해 브레이크 레지스터(BR)에 저장된 값(IBR)과 중지데이터(BD)가 동일하면 제어유니트(300)는 응용 프로그램의 실행 중인 동작을 중지 또는 완료하고, 프로그램 카운터(PC)에 저장된 값과 상태 레지스터(SR)에 저장된 데이터를 임시 저장 레지스터(TR)나 디버깅 스택 포인터(ISP)가 지정하는 스택 메모리에 저장하고, 프로그램 카운터(PC)에는 응용 프로그램을 테스트 및 디버깅하기 위한 디버깅 서비스 프로그램을 수행하기 위한 시작 주소를 저장하고, 중앙처리장치를 응용 프로그램의 테스트 및 디버깅하기 위한 상태에 있도록 상태 레지스터(SR)의 데이터를 변경한다.비교부(700)에 입력되는 중지데이터(BD)는 프로그램 카운터(PC)에 저장된 프로그램 번지, 데이터가 저장된 메모리 어드레스, 입출력되는 데이터, 입출력되는 어드레스일 수 있고, 마스크 레지스터(MR)를 사용하여 프로그램 카운터에 저장된 프로그램 번지와 마스크 레지스터(MR)에 저장된 값을 연산한 결과, 데이터가 저장된 메모리 어드레스와 마스크 레지스터(MR)에 저장된 값을 연산한 결과, 입출력되는 어드레스와 마스크 레지스터(MR)에 저장된 값을 연산한 결과, 입출력되는 데이터와 마스크 레지스터(MR)에 저장된 값을 연산한 결과일 수 있다. 마스크 레지스터(MR)는 검사하고자 하는 데이터의 일부만을 비교하고자 할 때 유용하게 사용된다. 즉, 입출력되는 데이터 중 하위 6비트들만을 검사하고자 할 경우 마스크 레지스터(MR)에 16진수로 3F란 값을 설정하고 입출력되는 데이터와 마스크 레지스터(MR)를 논리곱 연산을 수행하여 중지데이터(BD)의 하위 6비트들과 브레이크 레지스터(BR)의 하위 6비트들이 동일하면 중앙처리장치를 디버깅 모드로 전환하도록 할 수 있다.도 5a에 도시된 바와 같이 중앙처리장치의 초기화 및 일반 동작을 위한 응용 프로그램(PROG1, PROG2, PROG4), 디버깅 모드 진입 신호(OSI)의 활성화에 따라 중앙처리장치를 응용 프로그램의 테스트 및 디버깅을 수행하기 위한 초기 환경으로 설정해 주는 디버깅 모드 초기화 프로그램(PROG3)과 비교부(700)에 의해 중앙처리장치를 프로그램 테스트 및 디버깅 상태로 진입시켜 응용 프로그램을 테스트 및 디버깅하는 디버깅 서비스 프로그램(PROG5)은 동일한 메모리(80)에 저장되거나 도 5b에 도시된 바와 같이 디버깅 모드 초기화 프로그램(PROG6)과 디버깅 서비스 프로그램(PROG7)은 다른 독립된 메모리(90)에 저장될 수 있다.도 5b에 도시된 바와 같이 일반 동작을 위한 응용 프로그램(PROG1, PROG2, PROG4)을 저장하는 메모리(80)와 디버깅 모드 초기화 프로그램(PROG6)과 디버깅 서비스 프로그램(PROG7)을 저장하는 메모리(90)를 분리시키고, 메모리(90)를 중앙처리장치와 함께 집적화(integrated circuit) 함으로써 중앙처리장치의 동작속도를 빠르게 할 수 있다.또는 도 5c에 도시된 바와 같이 디버깅 모드 초기화 프로그램(PROG6) 및 디버깅 서비스 프로그램(PROG7)이 저장되는 중앙처리장치와 함께 집적화 되는 메모리(90)와 별도로 사용자가 직접 디버깅 모드 초기화 프로그램(PROG3) 및 디버깅 서비스 프로그램(PROG5)을 작성하여 중앙처리장치를 초기화 및 일반 동작을 위한 응용 프로그램(PROG1, PROG2, PROG4)이 저장된 메모리(80)에 디버깅 모드 초기화 프로그램(PROG3) 및 디버깅 서비스 프로그램(PROG5)을 저장할 수도 있다.
도 5a에 도시된 바와 같이 중앙처리장치를 초기화 및 일반 동작을 위한 응용 프로그램(PROG1, PROG2, PROG4), 디버깅 모드 초기화 프로그램(PROG3) 및 디버깅 서비스 프로그램(PROG5)이 모두 동일한 메모리(80)에 저장되어 있는 경우 본 발명의 동작을 상세히 설명하면 다음과 같다.
중앙처리장치에 전원이 공급되면 리셋 신호(RESET)가 활성화된다. 리셋 신호(RESET)에 따라 제어유니트(300)는 중앙처리장치를 초기화하고, 디버깅 모드 진입 신호(OSI)의 활성화 여부를 판단한다. 디버깅 모드 진입 신호(OSI)가 비활성화되어 있으면 도 4의 상태 레지스터(SR)의 디버깅 모드 플래그(OSIM)를 비활성화시킨다. 그리고 제어유니트(300)는 벡터 테이블(81)에서 최초로 수행할 프로그램이 저장된 메모리(80) 주소가 저장되어 있는 리셋 벡터를 읽어들여 특수 레지스터 파일(200)의 프로그램 카운터(PC)에 저장한다. 제어유니트(300)는 프로그램 카운터(PC)에 저장된 리셋 벡터를 메모리 어드레스 레지스터(400)로 이동시키고 어드레스 버스(ADDB)로 출력한다. 그리고 메모리 읽기 신호를 제어버스(CONT)로 출력하여 응용 프로그램(PROG1)이 저장된 메모리(80) 내용을 읽어 들이게 된다. 메모리에서 출력된 데이터는 데이터 버스(DATAB) 및 메모리 데이터 레지스터(500)를 통하여 내부버스(IB)를 경유하여 제어유니트(300)로 들어오게 된다. 이렇게 제어유니트(300)로 입력된 명령어는 해석되어 제어유니트(300)로부터 필요한 제어신호들(CONT)이 출력되어 해당 명령어를 수행한다.
리셋 벡터에 의해 디버깅하기 위한 응용 프로그램(PROG1)을 수행하기 위해 중앙처리장치가 초기화되고, 디버깅 모드 진입 신호(OSI)가 비활성화되어 있으면 중앙처리장치는 그 응용 프로그램(PROG1)을 수행한다.
만일 리셋 신호(RESET)에 의해 중앙처리장치가 초기화되고, 제어유니트(300)로 입력되는 디버깅 모드 진입 신호(OSI)가 활성화되면, 제어유니트(300)는 상태 레지스터(SR)의 디버깅 모드 플래그(OSIM)를 활성화시킨다. 그리고 제어유니트(300)는 메모리(80)에 저장된 디버깅 모드 초기화 프로그램(PROG3)의 시작 주소인 디버깅 모드 초기화 벡터를 읽어들여 프로그램 카운터(PC)에 저장한다. 프로그램 카운터(PC)에 저장된 디버깅 모드 초기화 벡터에 의해 디버깅 모드 초기화 프로그램(PROG3)을 수행한 후, 중앙처리장치는 응용 프로그램의 테스트 및 디버깅을 수행하기 위한 초기 환경으로 설정된다.
제어유니트(300)는 호스트 컴퓨터에서의 명령에 의해 상태 레지스터(SR)의 디버깅 모드 플래그(OSIM)를 비활성화시키고 수행할 응용 프로그램의 명령어가 저장되어 있는 주소를 프로그램 카운터(PC)에 저장하여 디버깅을 하기 위한 응용 프로그램을 실행한다. 응용 프로그램의 실행 중 비교부(700)에 의해 특수 레지스터 파일(200)의 브레이크 레지스터(BR)에 저장된 값(IBR)과 중지데이터(BD)가 동일하면, 중앙처리장치는 응용 프로그램의 실행 중인 동작을 중지 또는 완료하고, 프로그램 카운터(PC)에 저장된 응용 프로그램의 주소 값과 상태 레지스터(SR)에 저장된 데이터를 임시 저장 레지스터(TR)(1200)에 저장하고, 프로그램 카운터(PC)에는 응용 프로그램을 테스트 및 디버깅하기 위한 디버깅 서비스 프로그램(PROG5)의 시작 주소인 디버깅 서비스 벡터를 저장하고, 응용 프로그램을 테스트 및 디버깅하기 위한 상태에 있도록 중앙처리장치의 상태 레지스터(SR) 값을 변경한다. 즉 상태 레지스터(SR)의 디버깅 모드 플래그(OSIM)를 활성화시킨다.
비교부(700)에 의해 브레이크 레지스터(BR)에 저장된 값(IBR)과 중지데이터(BD)가 동일하면 중앙처리장치는 응용 프로그램의 실행 중인 동작을 중지 또는 완료하고, 프로그램 카운터(PC)에 저장된 값과 상태 레지스터(SR)에 저장된 데이터를 별도의 임시 저장 레지스터(TR)에 저장하지 않고 디버깅 스택 포인터(ISP)가 지정하는 스택에 저장할 수도 있다.
중앙처리장치는 프로그램 테스트 및 디버깅 상태로 진입한 후 메모리(80)에 저장된 디버깅 서비스 프로그램(PROG5)에 따라 호스트 컴퓨터로부터의 명령, 예를 들어 사용자가 작성한 응용 프로그램의 다운로드, 다운로드된 응용 프로그램의 실행, 브레이크 레지스터(BR)의 데이터 변경, 범용 레지스터 파일(100) 및 특수 레지스터 파일(200)의 레지스터들에 저장된 데이터의 판독(READ) 또는 기록(WRITE) 및 메모리에 저장된 데이터들의 판독 또는 기록 등의 명령을 수행한다. 이러한 명령들을 이용하여 사용자는 응용 프로그램이 올바르게 작성되었는지를 판단하고, 잘못 작성되었으면 이를 수정하여 바로 잡는다.
상기의 명령들을 수행하기 위하여 데이터 통신부(600)를 통해 중앙처리장치와 호스트 컴퓨터간의 처리 순서는 다음과 같다.
호스트 컴퓨터로부터의 다운로드 명령에 의해 사용자가 작성한 프로그램을 데이터 통신부(600)를 통해 전송받아 중앙처리장치의 메모리에 저장한 후 중앙처리장치는 성공적으로 수신 받았다는 신호를 호스트 컴퓨터로 송신한다. 만약 응용 프로그램의 전송 중 에러가 발생했다면 중앙처리장치는 호스트 컴퓨터로 응용 프로그램의 재전송을 요구한다. 응용 프로그램을 중앙처리장치에 성공적으로 다운로드 한 후 디버깅을 위하여 호스트 컴퓨터는 중앙처리장치의 브레이크 레지스터(BR)의 데이터 값을 설정하기 위한 브레이크 레지스터(BR) 데이터 변경 명령을 내린다. 브레이크 레지스터(BR) 데이터 변경 명령 후 중앙처리장치는 호스트 컴퓨터로 성공적으로 수신 받았다는 신호를 송신한다. 호스트 컴퓨터는 중앙처리장치의 메모리에 다운로드된 응용 프로그램을 실행시키기 위하여 응용 프로그램의 실행 명령을 중앙처리장치로 송신하고, 중앙처리장치는 이에 응답하고 응용 프로그램을 실행한다. 응용 프로그램의 실행 중 비교부(700)에 의해 브레이크 레지스터(BR)의 데이터 값과 중지데이터인 프로그램 카운터(PC)의 데이터 값이 동일하면, 응용 프로그램의 실행 중인 동작을 중지 또는 완료하고 프로그램 카운터(PC)에 저장된 값과 상태 레지스터(SR)에 저장된 데이터 및 범용 레지스터의 내용들을 임시 저장 레지스터(TR) 또는 디버깅 스택 포인터(ISP)가 지정하는 스택에 저장한다. 프로그램 카운터(PC)에는 응용 프로그램을 테스트 및 디버깅하는 디버깅 서비스 프로그램(PROG5)의 시작 주소인 디버깅 서비스 벡터를 저장하고, 중앙처리장치를 응용 프로그램의 테스트 및 디버깅하기 위한 상태에 있도록 상태 레지스터(SR)의 데이터를 변경한다. 즉 상태 레지스터(SR)의 데이터를 변경한다. 즉, 상태 레지스터(SR)의 디버깅 모드 플래그(OSIM)를 활성화시킨다. 디버깅 서비스 프로그램(PROG5)에 의해 중앙처리장치는 응용 프로그램의 테스트 및 디버깅을 수행하기 위한 상태로 진입된다. 중앙처리장치가 테스트 및 디버깅을 수행하기 위한 디버깅 모드로 진입한 후 호스트 컴퓨터로부터 레지스터 판독 명령을 수신 받으면, 임시 저장 레지스터(TR) 또는 디버깅 스택 포인터(ISP)가 지정하는 스택에 저장된 레지스터의 데이터를 호스트 컴퓨터로 전송하고, 사용자는 전송된 데이터를 분석하여 올바른 값이 출력되었는지를 판단하고, 분석 결과 올바른 데이터가 아니면 응용 프로그램이 올바르게 작성되지 않은 것이므로 응용 프로그램을 수정한다.
상기와 같은 방법을 반복하여 응용 프로그램을 용이하게 디버깅할 수 있다.
리셋 신호(RESET)는 중앙처리장치에 최초 전압 인가시 활성화되거나 리셋 데이터 비교부(1000)에 의해서 데이터 통신부(600)를 통해 호스트 컴퓨터로부터 입력되는 디버깅 데이터(DEB2)와 리셋 데이터 저장부(1100)에 저장된 리셋 데이터를 비교하여 동일하면 중앙처리장치를 초기화시킨다. 이는 디버깅 할 응용프로그램의 수행 중 중앙처리장치가 복구 불가능한 상태, 예를 들어 무한루프 등의 상태에 있을 경우 중앙처리장치를 초기화시켜 문제를 해결한다.
응용 프로그램이 일정 시간 이상 계속해서 실행되는 경우, 즉 응용 프로그램이 무한 루프에 있는 경우 데이터 통신부(600)를 통해 기준 데이터 저장부(900)에 저장된 기준데이터와 동일한 디버깅 데이터(DEB1)를 송신하면, 기준 데이터 비교부(800)는 기준 데이터 저장부(900)에 저장된 기준 데이터와 데이터 통신부(600)를 통해 받은 디버깅 데이터(DEB1)를 비교하여 같으면 강제적으로 중앙처리장치를 프로그램 테스트 및 디버깅 상태인 디버깅 서비스 모드로 진입시켜 무한 루프에서 벗어나서 무한 루프가 발생된 부분의 응용 프로그램을 디버깅 할 수 있다.
도 5c에 도시된 바와 같이 디버깅 모드 초기화 프로그램(PROG3, PROG6) 및 디버깅 서비스 프로그램(PROG5, PROG7)은 중앙처리장치를 초기화 및 동작시키기 위한 서비스 프로그램이 저장된 메모리(80)와 별도의 메모리(90)에 동시에 저장될 수 있다. 이를 위해 제어유니트(300)의 입력신호로 메모리 구분 신호(OSIROM)가 필요하다. 즉 리셋 신호(RESET)에 의해 제어유니트(300)가 중앙처리장치를 초기화시키고 디버깅 모드 진입 신호(OSI)를 검사하여 활성화되었으면, 메모리 구분 신호(OSIROM)를 검사하여 활성화되었으면, 프로그램 카운터(PC)에는 응용 프로그램의 테스트 및 디버깅을 위해 메모리(90)에 저장된 디버깅 모드 초기화 프로그램(PROG6)의 시작 주소인 디버깅 모드 초기화 벡터2가 저장되어야 한다. 그리고 브레이크 레지스터(BR)의 데이터 값과 중지데이터가 동일할 경우 비교부(700)는 두 값이 동일함을 제어유니트(300)에 알려주고 제어유니트(300)는 프로그램 카운터(PC)에 메모리(90)에 저장된 디버깅 서비스 프로그램(PROG7)의 시작 주소인 디버깅 서비스 벡터2를 저장한다.
만약에 메모리 구분 신호(OSIROM)가 비활성화되면, 디버깅 모드 초기화 벡터1이 디버깅 모드 초기화 프로그램(PROG3)을 수행하기 위한 시작 주소이고 디버깅 서비스 벡터1이 디버깅 서비스 프로그램(PROG5)을 수행하기 위한 시작 주소가 된다.
상기와 같이 메모리를 분리함으로써 사용자는 내장되어 있는 디버깅 모드 초기화 프로그램(PROG6) 및 디버깅 서비스 프로그램(PROG7)을 사용하지 않고, 사용자가 작성한 디버깅 모드 초기화 프로그램(PROG3) 및 디버깅 서비스 프로그램(PROG5)을 이용하여 응용 프로그램을 테스트 및 디버깅할 수 있다.
또한 본 발명의 프로그램 테스트 및 디버깅이 용이한 중앙처리장치는 리셋 신호(RESET)에 의한 중앙처리장치의 초기화 후 디버깅 모드 진입 신호(OSI)에 의해 최초 디버깅 모드로 전환되거나 또는 중앙처리장치가 응용 프로그램을 수행하는 중에 호스트 컴퓨터로부터 데이터 통신부(600)를 통해 기준 데이터 저장부(900)에 저장된 기준데이터와 동일한 디버깅 데이터(DEB1)의 입력에 의하여 제어유니트(300)에 의해 강제적으로 최초 디버깅 모드로 전환되어 디버깅 초기화 프로그램과 디버깅 서비스 프로그램으로 이루어진 디버깅 프로그램이 수행되면 디버깅 프로그램에 의해 호스트 컴퓨터에서 브레이크 레지스터(BR)의 값을 설정할 수 있다. 설정된 브레이크 레지스터(BR)의 데이터는 데이터 통신부(600)를 통해 브레이크 레지스터(BR)에 저장되어 중앙처리장치가 응용 프로그램 수행 중 브레이크 레지스터(BR)에 저장된 값(IBR)과 중지데이터(BD)가 동일하면 디버깅 모드 진입 신호(OSI)의 활성화 여부에 관계없이 항상 중앙처리장치를 디버깅 모드로 진입하게 한다. 즉, 브레이크 레지스터(BR)에 저장된 값(IBR)과 중지데이터(BD)가 동일하면 제어유니트(300)는 상태 레지스터(SR)의 디버깅 모드 플래그(OSIM)를 활성화시키고, 프로그램 카운터(PC)에는 디버깅 프로그램을 수행하기 위한 시작 주소를 적재하여 중앙처리장치는 디버깅 프로그램을 수행하도록 하여 디버깅 모드로 전환시키고, 디버깅 프로그램에 의해 데이터 통신부(600)를 통해 호스트 컴퓨터의 명령, 예를 들어 디버깅 프로그램에서 사용할 메모리의 초기화, 디버깅 스택 포인터의 설정, 기준데이터의 설정이나 변경, 중앙처리장치를 초기화시키기 위한 리셋데이터의 설정이나 변경, 브레이크 레지스터(BR) 값의 변경, 범용 레지스터 파일(100) 및 특수 레지스터 파일(200)의 레지스터들에 저장된 데이터의 판독(READ) 또는 기록(WRITE) 및 메모리에 저장된 데이터들의 판독 또는 기록 등의 명령을 수행하여 응용 프로그램이 올바르게 작성되었는지를 판단하고, 잘못 작성되었으면 이를 수정하여 바로 잡는다.
본 발명의 프로그램 테스트 및 디버깅이 용이한 중앙처리장치는 사용자 모드를 갖는 중앙처리장치의 상태에 디버깅 모드를 새로이 추가하고, 디버깅 모드에서 호스트 컴퓨터로부터 다운로드 된 테스트 및 디버깅을 하기 위한 응용 프로그램을 용이하게 테스트 및 디버깅할 수 있게 해준다. 여기서 중앙처리장치는 보다 단순한 하드웨어로 구성되어 중앙처리장치의 가격을 하락시킬 수 있고 보다 효율적인 테스트 및 디버깅을 할 수 있다. 또한 응용 프로그램의 테스트 및 디버깅을 수행하기 위한 초기 환경으로 설정해 주는 디버깅 모드 초기화 프로그램 및 중앙처리장치를 프로그램 테스트 및 디버깅 상태로 진입시켜 응용 프로그램을 테스트 및 디버깅을 위한 디버깅 서비스 프로그램은 중앙처리장치를 초기화 및 동작시키기 위한 사용자 응용 프로그램이 저장된 메모리와 다른 독립된 메모리에 저장함으로써 사용자는 제공된 디버깅 모드 초기화 프로그램 및 디버깅 서비스 프로그램을 고려하지 않고 사용자에 의해 작성된 디버깅 프로그램을 이용하여 응용 프로그램을 작성할 수 있다.

Claims (34)

  1. 데이터 및 어드레스 연산에 필요한 데이터를 일시적으로 저장하는 범용 레지스터 파일, 프로그램이 저장된 메모리의 주소를 기억하는 프로그램 카운터와 중앙처리장치의 상태를 나타내는 상태 레지스터 및 브레이크 레지스터로 구성된 특수 레지스터 파일, 상기의 범용 레지스터 파일 및 특수 레지스터 파일을 연결하는 내부 버스, 상기의 내부 버스에 연결되어 중앙처리장치 내외부에 필요한 제어신호를 출력하는 제어유니트로 구성된 중앙처리장치에 있어서,
    호스트 컴퓨터와 데이터 통신을 위한 데이터 통신수단;
    중앙처리장치의 동작모드가 일반 동작 상태를 나타내는 일반 동작 모드인지 디버깅 상태를 나타내는 디버깅 모드인지를 나타내는 플래그를 구비한 상태 레지스터;
    디버깅 프로그램의 데이터를 저장하는 스택 메모리를 지정하는 스택 포인토로 사용되는 디버깅 스택 포인터 레지스터; 및
    상기의 브레이크 레지스터에 저장된 값과 중지데이터를 비교하여 동일하면 상기의 중앙처리장치를 디버깅 모드로 진입시키는 비교수단을 구비하여 상기의 브레이크 레지스터에 저장된 값과 상기의 중지 데이터가 일치하면 상기의 중앙처리장치를 디버깅 모드로 전환시키고 상기의 상태 레지스터의 플래그가 디버깅 모드를 나타내는 값을 가지고 상기의 프로그램 카운터에 디버깅 프로그램을 수행하기 위한 시작 주소를 적재하여 디버깅 프로그램을 수행하여 상기의 데이터 통신수단을 통해 호스트 컴퓨터로부터의 명령에 따라 디버깅을 수행하는 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  2. 제1항에 있어서, 상기의 프로그램 테스트 및 디버깅이 용이한 중앙처리장치는
    리셋 데이터가 저장된 리셋 데이터 저장수단; 및
    상기의 데이터 통신수단을 통해 입력받은 데이터와 상기의 리셋 데이터 저장수단에 저장된 리셋 데이터를 비교하여 상기의 데이터 통신수단을 통해 입력받은 데이터와 리셋 데이터가 동일하면 제어유니트가 중앙처리장치를 초기화하도록 지시하는 리셋 데이터 비교수단을 더 구비한 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  3. 제1항에 있어서, 상기의 중지데이터는 상기의 프로그램 카운터에 저장된 프로그램 주소인 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  4. 제1항에 있어서, 마스크 레지스터를 더 구비하여 상기의 중지데이터는 상기의 프로그램 카운터와 상기의 마스크 레지스터에 저장된 값을 연산한 결과인 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  5. 제1항에 있어서, 상기의 중지데이터는 데이터가 저장된 메모리 어드레스인 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  6. 제1항에 있어서, 마스크 레지스터를 더 구비하여 상기의 중지데이터는 데이터가 저장된 메모리 어드레스와 상기의 마스크 레지스터에 저장된 값을 연산한 결과인 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  7. 제1항에 있어서, 상기의 중지데이터는 상기의 중앙처리장치에서 입출력되는 데이터인 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  8. 제1항에 있어서, 마스크 레지스터를 더 구비하여 상기의 중지데이터는 상기의 중앙처리장치에서 입출력되는 데이터와 상기의 마스크 레지스터에 저장된 값을 연산한 결과인 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  9. 제1항에 있어서, 상기의 중지데이터는 상기의 중앙처리장치에서 입출력되는 어드레스인 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  10. 제1항에 있어서, 마스크 레지스터를 더 구비하여 상기의 중지데이터는 상기의 중앙처리장치에서 입출력되는 어드레스와 상기의 마스크 레지스터에 저장된 값을 연산한 결과인 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  11. 제1항에 있어서, 상기의 제어유니트는 디버깅 메모리 선택신호를 수신하여 상기의 브레이크 레지스터에 저장된 값과 상기의 중지데이터가 동일할 때 상기의 디버깅 메모리 선택신호에 따라 상기의 프로그램 카운터에 서로 다른 디버깅 프로그램을 수행하기 위한 주소를 적재하는 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  12. 제1항에 있어서, 상기 디버깅 프로그램에서 사용하는 데이터 값을 저장하는 데이터 저장 메모리를 더 구비하여 일반 프로그램에서 사용하는 데이터 값을 저장하는 데이터 저장 메모리와 분리한 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  13. 제1항에 있어서, 상기 디버깅 프로그램을 저장하는 메모리를 더 구비하여 일반 프로그램이 저장된 메모리와 분리한 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  14. 제1항에 있어서, 상기의 데이터 통신 수단을 통해 상기의 호스트 컴퓨터로부터 테스트 및 디버깅 할 응용 프로그램을 다운로드 받는 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  15. 삭제
  16. 제1항에 있어서, 디버깅 모드로 전환되었을 때 상기의 프로그램 카운터에 저장된 값과 상기의 상태 레지스터에 저장된 데이터를 상기 디버깅 스택 포인터 레지스터가 지정하는 메모리에 저장하는 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  17. 제1항에 있어서, 임시 저장 레지스터를 더 구비하여 디버깅 모드로 전환되었을 때 상기의 프로그램 카운터에 저장된 값과 상기의 상태 레지스터에 저장된 데이터를 상기 임시 저장 레지스터에 저장하는 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  18. 데이터 및 어드레스 연산에 필요한 데이터를 일시적으로 저장하는 범용 레지스터 파일, 프로그램이 저장된 메모리의 주소를 기억하는 프로그램 카운터와 중앙처리장치의 상태를 나타내는 상태 레지스터 및 브레이크 레지스터로 구성된 특수 레지스터 파일 및 상기의 범용 레지스터 파일 및 특수 레지스터 파일을 연결하는 내부 버스로 구성된 중앙처리장치에 있어서,
    호스트 컴퓨터와 데이터 통신을 위한 데이터 통신수단;
    중앙처리장치의 동작모드가 일반 동작 상태를 나타내는 일반 동작 모드인지 디버깅 상태를 나타내는 디버깅 모드인지를 나타내는 플래그를 구비한 상태 레지스터;
    디버깅 초기화 프로그램 및 디버깅 서비스 프로그램의 데이터를 저장하는 스택 메모리를 지정하는 디버깅 스택 포인터 레지스터;
    리셋 신호에 의해 상기의 중앙처리장치를 초기화하고 디버깅 모드 진입 신호를 수신하여 디버깅 모드 진입 신호가 활성화되면 상기 프로그램 카운터에 디버깅 초기화 프로그램을 수행하기 위한 시작 주소를 적재하여 상기의 중앙처리장치를 디버깅 초기화 모드로 전환시키고, 상기 상태 레지스터의 플래그를 디버깅 모드를 나타내는 값으로 설정하고, 상기 내부 버스에 연결되어 중앙처리장치의 내외부에 필요한 제어신호를 출력하는 제어유니트; 및
    상기 브레이크 레지스터에 저장된 값과 중지데이터를 비교하여 동일하면 상기 중앙처리장치를 디버깅 서비스 모드로 진입시키는 비교수단을 구비하여 상기 브레이크 레지스터에 저장된 값과 상기 중지데이터가 동일하면 상기의 중앙처리장치를 디버깅 모드로 전환시키고 상기의 상태 레지스터의 플래그가 디버깅 서비스 모드를 나타내는 값을 가지고 상기의 프로그램 카운터에 디버깅 서비스 프로그램을 수행하기 위한 시작 주소를 적재하여 디버깅 서비스 프로그램을 수행하여 상기의 데이터 통신수단을 통해 호스트 컴퓨터로부터의 명령에 따라 디버깅을 수행하는 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  19. 제18항에 있어서, 상기의 프로그램 테스트 및 디버깅이 용이한 중앙처리장치는
    리셋 데이터가 저장된 리셋 데이터 저장수단; 및
    상기의 데이터 통신수단을 통해 입력받은 데이터와 상기의 리셋 데이터 저장수단에 저장된 리셋 데이터를 비교하여 상기의 데이터 통신수단을 통해 입력받은 데이터와 리셋 데이터가 같으면 상기의 중앙처리장치를 초기화하는 리셋 데이터 비교수단을 구비한 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  20. 제18항에 있어서, 상기 디버깅 프로그램에서 사용하는 데이터 값을 저장하는 데이터 저장 메모리를 더 구비하여 일반 프로그램에서 사용하는 데이터 값을 저장하는 데이터 저장 메모리와 분리한 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  21. 제18항에 있어서, 상기 디버깅 프로그램을 저장하는 메모리를 더 구비하여 일반 프로그램이 저장된 메모리와 분리한 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  22. 제18항에 있어서, 상기의 데이터 통신 수단을 통해 상기의 호스트 컴퓨터로부터 테스트 및 디버깅을 하기 위한 디버깅 프로그램을 다운로드 받는 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  23. 삭제
  24. 제18항에 있어서, 디버깅 모드로 전환되었을 때 상기의 프로그램 카운터에 저장된 값과 상기의 상태 레지스터에 저장된 데이터를 상기 디버깅 스택 포인터 레지스터가 지정하는 메모리에 저장하는 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  25. 제18항에 있어서, 임시 저장 레지스터를 더 구비하여 디버깅 모드로 전환되었을 때 상기의 프로그램 카운터에 저장된 값과 상기의 상태 레지스터에 저장된 데이터를 상기 임시 저장 레지스터에 저장하는 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  26. 삭제
  27. 삭제
  28. 제18항에 있어서, 상기의 제어유니트는 디버깅 메모리 선택신호를 수신하여 상기의 브레이크 레지스터에 저장된 값과 상기의 중지데이터가 동일할 때 상기의 디버깅 메모리 선택신호에 따라 상기의 프로그램 카운터에 디버깅 프로그램을 수행하기 위한 서로 다른 주소를 적재하는 것을 특징으로 하는 프로그램 테스트 및 디버깅이 용이한 중앙처리장치.
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
KR1020000038161A 2000-07-05 2000-07-05 프로그램 테스트 및 디버깅이 용이한 중앙처리장치 KR100337149B1 (ko)

Priority Applications (8)

Application Number Priority Date Filing Date Title
KR1020000038161A KR100337149B1 (ko) 2000-07-05 2000-07-05 프로그램 테스트 및 디버깅이 용이한 중앙처리장치
JP2001036649A JP2002041326A (ja) 2000-07-05 2001-02-14 プログラムのテスト及びデバッギングが容易な中央処理装置
CNB011123141A CN1185578C (zh) 2000-07-05 2001-03-29 易于测试和调试程序的中央处理单元
TW090109224A TW501007B (en) 2000-07-05 2001-04-18 Central processing unit for easily testing and debugging programs
US09/841,875 US6820192B2 (en) 2000-07-05 2001-04-26 Central processing unit for easily testing and debugging programs
EP01305204A EP1170668A3 (en) 2000-07-05 2001-06-15 Central processing unit for easily testing and debugging programs
HK02105112.0A HK1045377A1 (zh) 2000-07-05 2002-07-09 用於簡便的檢測和調試程序的中央處理器
JP2006026313A JP2006127553A (ja) 2000-07-05 2006-02-02 プログラムのテスト及びデバッギングが容易な中央処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020000038161A KR100337149B1 (ko) 2000-07-05 2000-07-05 프로그램 테스트 및 디버깅이 용이한 중앙처리장치

Publications (2)

Publication Number Publication Date
KR20020004346A KR20020004346A (ko) 2002-01-16
KR100337149B1 true KR100337149B1 (ko) 2002-05-18

Family

ID=36722159

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000038161A KR100337149B1 (ko) 2000-07-05 2000-07-05 프로그램 테스트 및 디버깅이 용이한 중앙처리장치

Country Status (7)

Country Link
US (1) US6820192B2 (ko)
EP (1) EP1170668A3 (ko)
JP (2) JP2002041326A (ko)
KR (1) KR100337149B1 (ko)
CN (1) CN1185578C (ko)
HK (1) HK1045377A1 (ko)
TW (1) TW501007B (ko)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0124563D0 (en) * 2001-10-12 2001-12-05 Siroyan Ltd Debug exception registers
US6976189B1 (en) * 2002-03-22 2005-12-13 Network Appliance, Inc. Persistent context-based behavior injection or testing of a computing system
JP3764405B2 (ja) * 2002-05-27 2006-04-05 株式会社東芝 デバッグ装置及びデバッグ方法
US20050028036A1 (en) * 2003-07-30 2005-02-03 Kohsaku Shibata Program debug apparatus, program debug method and program
JP2005070949A (ja) * 2003-08-21 2005-03-17 Sanyo Electric Co Ltd プログラム処理装置
US7363544B2 (en) * 2003-10-30 2008-04-22 International Business Machines Corporation Program debug method and apparatus
US8070994B2 (en) 2004-06-18 2011-12-06 Zephyros, Inc. Panel structure
US7698544B2 (en) * 2005-05-13 2010-04-13 Texas Instruments Incorporated Automatic halting of a processor in debug mode due to reset
US8024706B1 (en) 2005-09-27 2011-09-20 Teradata Us, Inc. Techniques for embedding testing or debugging features within a service
US20100025147A1 (en) * 2005-10-31 2010-02-04 L&L Products, Inc. Damping material, method of forming the damping material and method of using the damping material
EP1884846A1 (de) * 2006-08-01 2008-02-06 Siemens Aktiengesellschaft System und Verfahren zur Anzeige eines Variablenstatus
US7945901B2 (en) * 2006-08-16 2011-05-17 Seiko Epson Corporation System and method for facilitating software profiling procedures
JP4976817B2 (ja) * 2006-11-06 2012-07-18 オンセミコンダクター・トレーディング・リミテッド プログラム処理装置及びプログラム処理方法
US8359585B1 (en) * 2007-01-18 2013-01-22 Advanced Testing Technologies, Inc. Instrumentation ATS/TPS mitigation utilizing I/O data stream
JP5115628B2 (ja) * 2008-11-13 2013-01-09 富士通セミコンダクター株式会社 マイクロコンピュータ
US8914621B2 (en) * 2009-04-02 2014-12-16 Infineon Technologies Ag Processing unit that detects manipulations thereof, device comprising two processing units, method for testing a processing unit and a device comprising two processing units
US10698859B2 (en) 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
DE102010002309B4 (de) * 2010-02-24 2013-04-18 Endress + Hauser Gmbh + Co. Kg Verfahren zur Überprüfung der Funktionsfähigkeit eines Speicherelements
CN102193860B (zh) * 2010-03-10 2015-04-22 上海海尔集成电路有限公司 微控制器在线调试电路及方法、微控制器
US8572573B2 (en) * 2012-03-09 2013-10-29 Nvidia Corporation Methods and apparatus for interactive debugging on a non-preemptible graphics processing unit
KR101910934B1 (ko) * 2012-03-26 2018-12-28 삼성전자 주식회사 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법
US8954794B2 (en) * 2012-06-05 2015-02-10 Infineon Technologies Ag Method and system for detection of latent faults in microcontrollers
US8875413B2 (en) * 2012-08-13 2014-11-04 Millrock Technology, Inc. Controlled nucleation during freezing step of freeze drying cycle using pressure differential ice crystals distribution from condensed frost
US9489287B2 (en) * 2013-08-23 2016-11-08 Atmel Corporation Breaking code execution based on time consumption
JP6183251B2 (ja) * 2014-03-14 2017-08-23 株式会社デンソー 電子制御装置
US10222989B1 (en) * 2015-06-25 2019-03-05 Crossbar, Inc. Multiple-bank memory device with status feedback for subsets of memory banks
US9921763B1 (en) 2015-06-25 2018-03-20 Crossbar, Inc. Multi-bank non-volatile memory apparatus with high-speed bus
US10141034B1 (en) 2015-06-25 2018-11-27 Crossbar, Inc. Memory apparatus with non-volatile two-terminal memory and expanded, high-speed bus
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US20170083318A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Configuring modes of processor operation
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US10198263B2 (en) 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US10180840B2 (en) 2015-09-19 2019-01-15 Microsoft Technology Licensing, Llc Dynamic generation of null instructions
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US10445097B2 (en) 2015-09-19 2019-10-15 Microsoft Technology Licensing, Llc Multimodal targets in a block-based processor
CN106709860B (zh) * 2016-12-12 2020-04-07 中国航空工业集团公司西安航空计算技术研究所 一种gpu统一染色处理阵列的调试结构
CN112463675A (zh) * 2020-11-25 2021-03-09 上海磐启微电子有限公司 一种程序离线下载方法
CN113672554B (zh) * 2021-07-06 2023-12-29 平头哥(杭州)半导体有限公司 处理器核、处理器、片上系统和调试系统
CN116719746B (zh) * 2023-07-26 2023-12-19 北京象帝先计算技术有限公司 调试方法、设备、待调试产品和计算机存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10222395A (ja) * 1996-10-31 1998-08-21 Sgs Thomson Microelectron Ltd マイクロコンピュータ
US5802347A (en) * 1994-09-12 1998-09-01 Nec Corporation Emulator with function for detecting illegal access to special function register
JPH1165881A (ja) * 1997-08-12 1999-03-09 Fujitsu Ltd Cpuの拡張割込み制御方式及びそのcpuで使用するデバッガ
JPH11167501A (ja) * 1997-12-04 1999-06-22 Oki Tsushin System Kk プログラムデバッグシステムとそのデバッグ方法
EP0942373A1 (en) * 1998-03-13 1999-09-15 STMicroelectronics Limited Adapter device with a local memory and method for processor emulation
JP2000122891A (ja) * 1998-10-16 2000-04-28 Nec Corp エミュレーティング装置および方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0259937A (ja) * 1988-08-26 1990-02-28 Hitachi Maxell Ltd Icカード
US5964893A (en) * 1995-08-30 1999-10-12 Motorola, Inc. Data processing system for performing a trace function and method therefor
GB9626401D0 (en) * 1996-12-19 1997-02-05 Sgs Thomson Microelectronics Diagnostic procedures in an integrated circuit device
US6223275B1 (en) * 1997-06-20 2001-04-24 Sony Corporation Microprocessor with reduced instruction set limiting the address space to upper 2 Mbytes and executing a long type register branch instruction in three intermediate instructions
US6567910B2 (en) * 1998-02-13 2003-05-20 Texas Instruments Incorporated Digital signal processing unit with emulation circuitry and debug interrupt enable register indicating serviceable time-critical interrupts during real-time emulation mode
KR20000038161A (ko) 1998-12-04 2000-07-05 전주범 카 오디오 시스템의 문자 정보 표시방법

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802347A (en) * 1994-09-12 1998-09-01 Nec Corporation Emulator with function for detecting illegal access to special function register
JPH10222395A (ja) * 1996-10-31 1998-08-21 Sgs Thomson Microelectron Ltd マイクロコンピュータ
JPH1165881A (ja) * 1997-08-12 1999-03-09 Fujitsu Ltd Cpuの拡張割込み制御方式及びそのcpuで使用するデバッガ
JPH11167501A (ja) * 1997-12-04 1999-06-22 Oki Tsushin System Kk プログラムデバッグシステムとそのデバッグ方法
EP0942373A1 (en) * 1998-03-13 1999-09-15 STMicroelectronics Limited Adapter device with a local memory and method for processor emulation
JP2000122891A (ja) * 1998-10-16 2000-04-28 Nec Corp エミュレーティング装置および方法

Also Published As

Publication number Publication date
US6820192B2 (en) 2004-11-16
EP1170668A2 (en) 2002-01-09
HK1045377A1 (zh) 2002-11-22
EP1170668A3 (en) 2004-12-15
TW501007B (en) 2002-09-01
JP2006127553A (ja) 2006-05-18
KR20020004346A (ko) 2002-01-16
CN1332409A (zh) 2002-01-23
CN1185578C (zh) 2005-01-19
JP2002041326A (ja) 2002-02-08
US20020007451A1 (en) 2002-01-17

Similar Documents

Publication Publication Date Title
KR100337149B1 (ko) 프로그램 테스트 및 디버깅이 용이한 중앙처리장치
US6668339B1 (en) Microprocessor having a debug interruption function
US5574892A (en) Use of between-instruction breaks to implement complex in-circuit emulation features
US5903718A (en) Remote program monitor method and system using a system-under-test microcontroller for self-debug
US7890828B2 (en) Built-in self-test using embedded memory and processor in an application specific integrated circuit
US6145123A (en) Trace on/off with breakpoint register
US20030056071A1 (en) Adaptable boot loader
JPH01251141A (ja) データバスおよびアドレスバスによって相互接続されたマイクロプロセッサならびにメモリを有する型式の装置をテストする方法
US7313729B2 (en) Low-cost debugging system with a ROM or RAM emulator
EP0354654B1 (en) Method and apparatus for marking emulation analysis states
US5367472A (en) Keyboard testing methods and apparatus
WO2012008319A1 (ja) エミュレータ検証システム、エミュレータ検証方法
US7047460B1 (en) Method and apparatus for testing a storage interface
JPH1083318A (ja) 電子回路解析装置
JP2001216176A (ja) デバッグ装置およびデバッグ方法ならびにデバッグプログラムを記憶した記憶媒体
KR20050018394A (ko) 엠시유를 이용하여 다양한 목표 시스템을 검증하는 재탑재에뮬레이션 장치, 이를 구비한 마이크로 컴퓨터 개발시스템, 및 그 방법
KR100557918B1 (ko) 조인트 테스트 액세스 그룹을 이용한 오류수정장치
EP0504515A2 (en) Memory emulation test system in which undesirable microprocessor reset is precluded
KR20010052868A (ko) 에뮬레이터 시스템에서 사용자 메모리를 업데이트하기위한 방법 및 시스템
KR20020079162A (ko) 하드웨어에 기반한 소프트웨어 디버깅 장치
JPH11167501A (ja) プログラムデバッグシステムとそのデバッグ方法
CN116055331A (zh) 一种全功能以太网物理层芯片模拟器及方法
JPH11175366A (ja) 電子回路解析装置、電子回路解析方法、電子回路解析プログラムを記録した媒体および電子回路解析システム
KR20020096661A (ko) 컴퓨터시스템 및 컴퓨터시스템의 부팅제어방법
JPH07121396A (ja) エミュレータ

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: 20130430

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20140430

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20180424

Year of fee payment: 17

FPAY Annual fee payment

Payment date: 20190426

Year of fee payment: 18