KR100255026B1 - 마이크로프로세서 및 디버그 시스템 - Google Patents
마이크로프로세서 및 디버그 시스템 Download PDFInfo
- Publication number
- KR100255026B1 KR100255026B1 KR1019950061484A KR19950061484A KR100255026B1 KR 100255026 B1 KR100255026 B1 KR 100255026B1 KR 1019950061484 A KR1019950061484 A KR 1019950061484A KR 19950061484 A KR19950061484 A KR 19950061484A KR 100255026 B1 KR100255026 B1 KR 100255026B1
- Authority
- KR
- South Korea
- Prior art keywords
- signal
- processor core
- program counter
- debug
- tracer
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
- G06F11/364—Software debugging by tracing the execution of the program tracing values on a bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3656—Software debugging using additional hardware using a specific debug interface
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
마이크로프로세서(10)는 프로세서코어(20)와 디버그모듈(30)을 가지며, 프로세서코어(20)는 유저타게트시스템(70)을 오류수정하기 위한 유저프로그램과 모니터프로그램을 실행하고, 디버그모듈(30)은 디버그장치(60)과의 인터페이스로서 작용하여 프로세서코어(20)가 디버그장치(60)내에 기억된 모니터프로그램을 실행하게 하며, 디버그모듈(30)은 프로세서코어(20)를 유저 프로그램으로부터 모니터프로그램으로 스위치하도록 인터럽트 또는 예외요구를 행한다.
Description
제1도는 종래기술에 의한 유저 타겟시스템을 디버그하는 디버그시스템도.
제2도는 또 다른 종래기술에 의한 유저 타겟시스템을 디버그하는 디버그시스템도.
제3도는 또 다른 종래기술에 의한 유저 타겟시스템을 디버그하는 디버그시스템도.
제4도는 본 발명의 일실시예에 의한 마이크로프로세서 및 디버그 시스템도.
제5도는 제4도의 실시예의 디버그모듈도.
제6도는 제4도의 실시예의 레지스터회로도.
제7도는 제6도의 레지스터회로의 디버그 제어레지스터(DCR)도.
제8도는 제6도의 레지스터회로의 명령차단어드레스 0 (IBA0) 레지스터도.
제9도는 제6도의 레지스퍼회로의 명령차단제어 0 (IBC0) 레지스터도.
제10도는 제6도의 레지스터회로의 명령차단상태 0 (IBS) 레지스터도.
제11도는 제6도의 레지스터회로의 데이터차단어드레스 0 (DBA0) 레지스터도.
제12도는 제6도의 레지스터회로의 데이터차단제어 0 (DBC0) 레지스터도.
제13도는 제6도의 레지스터회로의 데이터차단상태 0 (DBS) 레지스터도.
제14도는 제6도의 레지스터회로의 프로세서버스차단 어드레스 0 (PBA0) 레지스터도.
제15도는 제6도의 레지스터회로의 프로세서버스차단 데이터 0(PBD0) 레지스터도.
제16도는 제6도의 레지스터회로의 프로세서버스마스크 0 (PBM0) 레지스터도.
제17도는 제6도의 레지스터회로의 프로세서버스제어 0 (PBC0) 레지스터도.
제18도는 제6도의 레지스터회로의 프로세서버스차단 상태 0 (PBS) 레지스터도.
제19도는 제5도의 디버그모듈의 명령/데이터어드레스차단회로도.
제20도는 제5도의 디버그모듈의 프로세서버스차단회로도.
제21도는 제5도의 디버그모듈의 직렬모니터버스회로도.
제22도는 직렬모니터버스회로의 리드동작을 나타내는 타이밍도.
제23도는 직렬모니터버스회로의 라이트동작을 나타내는 타이밍도.
제24도는 명령 CFC0에 의한 직렬모니터버스회로의 라이트동작을 나타내는 타이밍도.
제25도는 명령 CTC0에 의한 직렬모니터버스회로의 라이트동작을 나타내는 타이밍도.
제26도는 제21도의 직렬모니터버스회로의 동작을 나타내는 플로우차트도.
제27도는 직렬모니터버스회로의 리드동작을 나타내는 플로우차트도.
제28도는 직렬모니터버스회로의 라이트동작을 나타내는 플로우차트도.
제29도는 제5도의 디버그모듈의 프로그램카운터 트레이서도.
제30도는 브랜치명령에 의한 프로그램카운터출력을 나타내는 타이밍도.
제31도는 간접점프명령에 의한 프로그램카운터출력을 나타내는 타이밍도.
제32도는 예외 및 간접점프명령에 의한 프로그램카운터출력을 나타내는 타이밍도.
제33도는 명령/데이터어드레스 트레이스트리거를 나타내는 타이밍도.
제34도는 예외발생명령에 응답하여 발생되는 명령/데이터어드레스 트레이스트리거를 나타내는 타이밍도.
제35도는 간접명령에 응답하여 발생되는 명령/데이터어드레스 트레이스트리거를 나타내는 타이밍도.
제36도는 디버그 예외가 발생할 경우의 출력신호 PCST[2:0]를 나타내는 타이밍도.
제37도는 타겟프로그램 카운터의 출력이 제공되는 동안 디버그 예외가 발생할 경우의 출력신호 PCST[2:0]를 나타내는 타이밍도.
제38도는 디버그모드후 정상모드가 리턴될 경우 신호 PCST[2:0]를 나타내는 타이밍도.
제39도는 타겟프로그램 카운터의 출력을 나타내는 타이밍도.
제40도는 타겟프로그램 카운터의 출력이 제공되는 동안 발생된 그 다음 간접점프를 나타내는 타이밍도.
제41도는 타겟프로그램 카운터의 출력이 제공되는 동안 발생한 예외를 나타내는 타이밍도.
제42도는 제5도의 디버그모듈의 외부인터페이스회로도.
제43도는 확장된 IBS 레지스터도.
제44도는 본 발명의 실시예에 의한 디버그 시스템도.
본 발명은 프로그램카운터(program counter)를 트레이스(trace)하는 기능과 프리셋(preset)된 어드레스 또는 데이터가 억세스되었음을 외부에 알리는 기능을 갖는 마이크로프로세서 및 디버그 시스템에 관한 것이다.
제1도는 종래의 기술에 의한 내부회로 에뮬레이터(in-circuit emulator)라고 하는 디버그 시스템을 나타낸 것이다.
이 시스템은 유저타겟시스템(user target system, 500)과 상기 타겟시스템(500)을 디버그(debug)하는 디버거(debugger, 505)를 포함한다. 타겟시스템(500)은 마이크로프로세서(501), 메모리(503) 및 I/O유닛(502)을 갖고 있다. 디버거(505)는 디버그 마이크로프로세서(debugging microprocessor, 506)와 모니터프로그램 메모리(507)를 갖고 있다.
타겟시스템(500)을 디버그하기 위해서는 마이크로프로세서(501)를 제거 또는 디스에이블(disable)시키고 디버거(505)의 프로브(probe)를 마이크로프로세서(501) 위치에 접속하여 마이크로프로세서(501) 대신 마이크로프로세서(506)를 동작시켜야 한다. 마이크로프로세서(506)는 메모리(507)에 저장된 모니터프로그램을 실행하여 메모리(503)에 저장된 유저프로그램을 제어한다.
마이크로프로세서(506)는 유저프로그램을 실행하여 메모리(503) 내의 데이터를 억세스하고, 또한 I/O유닛(502)을 억세스한다. 디버거(505)는 메모리(508)를 가지고 있어서, 마이크로프로세서(506)는 프로세서버스(504)를 통해 마이크로프로세서(501)에 의해 통상 제공되지 않는 프로그램카운터값과 같은 내부상태에 관한 트레이스 정보를 제공할 수 있다.
그러나, 제1도의 종래 기술은 디버거(505)를 타겟시스템(500)의 마이크로프로세서(501)의 모든 핀에 접속해야 한다. 예를 들어, 마이크로프로세서(501)는 30 어드레스신호, 4 바이트 인에이블 신호, 리드신호, 라이트 신호, 리드확인신호, 라이트확인신호 및 32 데이터신호용의 70핀을 갖고 있다. 디버거(505)는 이들 핀들에 대하여 모두 프로브를 가져야 하므로 값이 비싸지며 불안정하다. 마이크로프로세서(506)는 타겟시스템(500)의 메모리(503)와 디버거(505)의 메모리(507)를 억세스하기 위하여 버스를 하나에서 다른 것으로 스위치해야 하므로 고속마이크로프로세서에는 적용할 수가 없다.
만일 타겟 마이크로프로세서가 주변요소들을 가질 경우, 상이한 핀 배치를 가질 수도 있다. 이 경우에 디버거는 그러한 핀 배치에 적합한 프로브를 가져야 한다. 타겟시스템(500)에 접속될 경우, 디버거(505)의 프로브들은 타겟시스템(500)내의 신호들에 영향을 주어 이들을 불안정하게 할 수 있다.
제2도는 또 다른 종래기술에 의한 ROM모니터(ROM minitor)라고 하는 디버그 시스템을 나타낸다.
유저타겟시스템(510)은 호스트컴퓨터(517)에 접속된 직렬인터페이스(512)를 갖는다 메모리(513)는 모니터 프로그램(514)을 저장한다. 마이크로프로세서(511)는 메모리(513), I/O유닛(515) 및 레지스터(516)를 억세스하도록 모니터프로그램(514)을 실행한다. 소프트웨어차단명령(software break instruction)을 사용하여 유저프로그램을 실행하고 제어한다.
이 종래기술은 유저메모리(513)를 사용하여 모니터프로그램(514)을 저장한다. 만일 타겟시스템(510)의 메모리시스템이 불완전할 경우, 모니터 프로그램(514) 자체가 불안정해진다. 메모리(513)의 용량이 작을 경우, 모니터 프로그램(514)을 저장할 공간이 없다. 모니터 모드가 유저인터럽트에 의해 시작되기 때문에 어떤 프로그램은 디버그되지 못할 수도 있다.
타겟시스템(510)에 장착된 직렬인터페이스(512)는 디버그후에는 불필요하지만 디버그동안에는 필수적이다. 이 종래기술의 디버그성능은 불량하다. 왜냐하면 하드웨어차단점(hardware break point)을 갖고 있지 않기 때문이며, 또한 프로그램카운터를 트레이스할 수 없기 때문이다.
제3도는 또 다른 종래기술에 의한 디버그시스템을 나타낸다.
유저타겟시스템(520)은 직렬인터페이스(526)와 시퀀서(sequencer,525)가 통합되어 있는 마이크로프로세서(521)를 갖고 있다. 직렬인터페이스(526)는 디버그장치(529)와 통신한다. 디버그장치(529)는 신호를 인터페이스(526)에 보내고 시퀀서(525)는 신호를 해석한다. 신호에 응답하여 시퀀서(525)는 일시적으로 유저프로그램의 실행을 중지하고 레지스터(528)를 억세스하며, 버스콘트롤러(527)를 사용하여 I/O유닛(523)과 메모리(524)를 억세스하고, 또한 유저프로그램을 제어한다. 직렬인터페이스(526)는 통상적으로 호스트컴퓨터(530)와 직접 통신할 수 없다. 따라서, 디버그장치(529)는 호스트컴퓨터(530)로부터의 명령을 마이크로프로세서(520)가 이해할 수 있는 신호로 변환하고, 또한 마이크로프로세서(521)로부터의 신호를 호스트컴퓨터(530)가 이해할 수 있는 데이터형식으로 변환한다.
마이크로프로세서(521)는 마이크로프로세서(521)뿐만 아니라 디버그장치(529)를 억세스해야하는 시퀀서(525)를 포함하고 있다. 이러한 방식으로 종래기술은 복잡한 접속논리를 사용하므로 칩 면적을 증가시킨다. 타겟시스템(520)에 추가레지스터를 구비할 경우 이에 따라 시퀀서(525)는 복잡한 작업을 거쳐 수정되어야 한다. 이 종래기술은 프로그램카운터를 트레이스할 수 없다.
상기 설명한 바와 같이, 종래의 기술은 프로그램카운터를 트레이스할 수 없거나, 할 수 있다 하더라도 디버그프로세서와 타겟시스템간의 많은 신호들을 프로세서버스를 통해 접속해야 한다. 제1도의 종래 기술에 의하면, 디버거(505)의 마이크로프로세서(506)는 타겟시스템(500)의 I/O유닛(502)과 메모리(503)를 억세스해야 하는데 이들 억세스동작의 타이밍을 제어하기는 어렵다.
제2도의 종래기술은 유저메모리(513)내에 모니터 프로그램을 저장하므로 유저메모리 공간을 감소시키게 된다. 따라서, 이 종래기술에 의한 디버그는 불확실하고 불충분하다.
제3도의 종래기술은 타겟시스템(520)의 마이크로프로세서(521)내에 시퀀서(525)를 포함하고 있으므로, 디버그장치(529)로부터 전송되는 신호들을 해석하고 실행한다. 즉, 이 종래기술은 타겟시스템과 디버그장치간의 접속이 복잡하게 된다. 마이크로프로세서(521)를 수정할 필요가 있을 경우 복잡한 작업을 거쳐 시퀀서(525)도 수정해야 한다.
제2도 및 제3도의 종래기술은 트리거(trigger) 기능을 가지고 있지 않다. 제1도의 종래 기술은 디버그 마이크로프로세서(506)내에 트레이스 기능을 가질 수도 있으나, 트리거정보를 제공하기 위한 부가적 신호와 함께 하는 경우만이 가능하다.
본 발명의 목적은 유저타겟시스템내에 배치되어 타겟시스템과 디버거간에 적은 수의 신호로서 디버그 기능을 달성하는 마이크로프로세서를 제공하는 것이다.
본 발명의 다른 목적은 유저타겟시스템내에 배치되어 타겟시스템의 메모리와 I/O유닛을 용이하게 억세스하도록 타겟시스템에서 동작하여 디버그 기능을 달성하는 마이크로프로세서를 제공하는 것이다.
본 발명의 또 다른 목적은 유저타겟시스템내에 배치되어 적은 수의 신호로서 프로그램카운터를 트레이스하도록 디버그기능을 달성하는 마이크로프로세서를 제공하는 것이다.
본 발명의 또 다른 목적은 유저타겟시스템내에 배치되어 하드웨어차단기능과 트리거기능으로 어드레스 및 데이터 비교기들을 공유하고, 또한 프로그램카운터정보 및 트리거정보로 출력신호들을 공유함으로서 최소한의 하드웨어로서 디버그 기능을 달성하는 마이크로프로세서를 제공하는 것이다.
상기한 목적들을 달성하기 위해, 본 발명의 제1태양에서는 프로세서 코어(processor core)와 디버그모듈(debug module)을 갖는 마이크로프로세서를 제공한다. 프로세서코어는 유저타겟시스템을 디버그하기 위해 모니터프로그램 뿐만 아니라 유저프로그램도 실행한다. 디버그모듈은 내부디버그인터레이스 및 프로세서버스를 통해 프로세서코어에 접속된다.
디버그모듈은 프로세서코어가 디버그장치내에 저장된 모니터 프로그램을 실행하도록 해주는 인터페이스를 갖는다. 또한 디버그모듈은 유저프로그램으로부터 모니터프로그램으로 프로세서코어를 스위칭하기 위해 프로세서코어에 인터럽트(interupt) 또는 예외(exception)를 요구하는 실행콘트롤러를 갖는다.
본 발명의 제2태양에 의하면 디버그시스템이 제공된다. 이 시스템에서, 디버그장치는 유저타겟시스템을 디버그하는 모니터프로그램을 저장한다. 타겟시스템은 마이크로프로세서, 메모리 및 I/O유닛을 포함한다. 마이크로프로세서는 프로세서코어와 디버그모듈을 갖는다. 프로세서는 유저프로그램 또는 모니터프로그램을 실행한다. 디버그모듈은 내부디버그인터페이스와 프로세서버스를 통해 프로세서코어에 접속된다. 디버그모듈의 인터페이스들은 프로세서코어가 모니터프로그램을 실행할 수 있게 한다. 디버그모듈은 또한 유저프로그램으로부터 모니터 프로그램으로 프로세서코어를 스위칭하기 위해 프로세서코어에 인터럽트 또는 예외를 요구하는 실행콘트롤러를 갖는다. 메모리는 프로세서버스를 통해 마이크로프로세서에 접속되며, 마이크로프로세서가 유저프로그램을 실행하는데 필요한 정보를 저장한다. I/O유닛은 프로세서버스를 통해 마이크로프로세서에 접속된다.
제1 및 제2태양에 의하면, 타겟시스템의 마이크로프로세서는 타겟시스템과 디버그장치간의 신호수를 줄인 디버그기능을 갖는다. 제1 및 제2태양은 디버그하는 동안 마이크로프로세서를 동작시켜 타겟시스템의 I/O유닛과 메모리를 쉽게 억세스할 수 있다.
본 발명의 제3태양에 의하면, 프로그램을 실행하는 프로세서코어와 프로그램카운터를 트레이스하는 트레이서를 갖는 마이크로프로세서가 제공된다. 트레이서는 내부디버그인터페이스를 통해 프로세서코어에 접속되며, 또한 프로세서코어에 의해 실행할 명령의 어드레스를 나타내는 프로그램카운터 신호를 제공한다. 출력신호를 전송하는 신호라인의 숫자는 명령어드레스의 비트수보다 적다.
제3태양에 의하면 타겟시스템의 마이크로프로세서는 프로그램카운터를 트레이스하기 위해 사용되는 인터페이스의 신호수를 줄인 디버그기능을 갖고 있다.
본 발명의 제4태양은 프로그램을 실행하는 프로세서코어, 차단회로 및 프로그램카운터 트레이서를 갖는 마이크로프로세서를 제공한다. 차단회로는 억세스된 어드레스가 세트된 어드레스와 일치할 때 또는 억세스된 어드레스 및 데이터가 세트된 어드레스 및 데이터와 일치할 때, 차단요구 또는 트리거요구를 프로세서코어에 제공한다. 트레이서는 트레이스요구가 인에이블되었음을 알리는 외부상태신호를 제공한다.
본 발명의 제4태양에 의하면, 타겟시스템의 마이크로프로세서는 어드레스 비교기가 하드웨어차단기능과 트리거기능에 의해 공유되며 트레이서의 출력이 트리거정보를 제공하기 위해 사용되어 하드웨어를 최소화할 수 있는 디버그 기능을 가진다.
이하, 첨부도면을 참조하여 본 발명의 양호한 실시예를 상세히 설명한다.
제4도는 본 발명의 일실시예에 의한 디버그시스템과 마이크로프로세서를 나타낸다.
디버그시스템은 유저타겟시스템(user target system, 70)과 디버거(debugger, 60)를 갖는다.
타겟시스템(70)은 마이크로프로세서(10), 메모리(40) 및 I/O유닛(50)을 가지고 있다. 마이크로프로세서(10)는 디버그기능을 갖는다.
마이크로프로세서(10)는 프로세서코어(processor core, 20)와 디버그 모듈(debug module, 30)을 가진다. 프로세서코어(20)는 프로세서버스(80)를 통해 메모리(BO)와 I/O유닛(50)을 억세스하고 프로그램을 실행한다. 프로세서코어(20)는 내부디버그인터페이스와 프로세서버스(80)를 통해 디버그모듈(30)에 접속된다. 디버그모듈(30)은 외부디버그인터페이스를 통해 디버거(60)에 접속된다.
디버그시스템은 디버그모드(debug mode)를 취하여 모니터 프로그램을 실행하고, 또한 정상모드(normal mode)를 취하여 유저프로그램을 실행한다.
[디버그모드(debug mode)]
프로세서코어(20)는 디버그모드를 시작하도록 디버그예외(debug exception) 또는 디버그리셋(debug reset)을 생성한다. 프로세서코어(20)는 디버그예외 벡터어드레스 FF20_0200 또는 디버그리셋 벡터어드레스 FF20_0000으로 점프하여 디버그모드신호 DM을 어서트(assert)한다. 이들 벡터어드레스로서 억세스되는 메모리는 디버거(60) 내에 있다. 프로세서코어(20)는 디버그모듈(30)을 통해 디버거(60) 내에 저장된 모니터프로그램(monitor program)을 실행한다. 모니터프로그램은 메모리와 레지스터들을 리드(read) 및 라이트(write)하고, 또한 유저프로그램의 시작 및 종료 어드레스를 특정함으로서 유저프로그램을 실행하고 제어한다. 프로세서코어(30)는 리턴(return)명령을 실행하여 정상모드로 리턴시키고 유저프로그램을 실행할 수 있다. 이 경우, 프로세서코어(20)는 리턴명령에 의해 특정된 어드레스로 점프하여 디버그모드신호 DM을 취소(negate) 즉, 무효화시킨다.
[정상모드(normal mode)]
정상모드에서 디버그시스템은 유저프로그램을 실행함과 동시에 프로그램카운터를 트레이스한다. 디버드시스템은 하드웨어차단(hardware break), 소프트웨어차단(software break) 또는 디버그인터럽트(debug interrupt)를 통해 프로세서코어(20)용 디버그예외(debug exception) 또는 디버그리셋(debug reset)을 발생시켜 정상모드를 디버그모드로 스위치할 수 있다.
정상모드에서 인에이블(enable)되는 프로그램카운터 트레이스기능, 하드웨어차단기능, 소프트웨어차단기능, 디버그인터럽트기능, 디버그리셋기능 및 트레이스트리거기능을 설명한다.
프로그램카운터 트레이스기능(program counter trace function)은 프로세서코어(20)가 메모리(40)내에 저장된 유저프로그램을 실행하는 동안 프로그램카운터내의 값을 트레이스한다, 프로세서코어(20)가 유저프로그램을 실행하는 동안 프로그램카운터정보는 내부디버그인터페이스로 송출된다. 디버그모듈(30)은 정보를 처리하여 처리된 정보를 외부디버그인터페이스를 통해 디버거(60)로 송출한다.
하드웨어차단기능(hardware break function)은 소정의 어드레스를 갖는 명령이 실행될 때 또는 소정 어드레스의 데이터가 억세스될 때 디버그예외(debug exception)를 생성하여 프로세서코어(20)가 모니터프로그램을 실행하도록 한다. 좀더 구체적으로 설명하면, 디버그모듈(30)은 프로세서코어(20)에 의해 실행될 명령의 어드레스를 디버그모듈(30) 내에 저장된 명령어드레스와 비교하거나 또는 프로세서코어(20)에 의해 억세스될 데이터어드레스를 디버그모듈(30)내에 저장된 데이터어드레스와 비교하거나 또는 프로세서코어(20)에 의해 제공된 데이터를 디버그모듈(30)에 저장된 데이터와 비교하여 이들이 서로 일치할 경우 디버그예외 요구 또는 디버그인터럽트 요구를 프로세서코어(20)에 제공한다.
소프트웨어차단기능(software break funtion)은 디버그예외를 발생시키도록 소프트웨어차단명령을 생성하여 프로세서코어(20)가 모니터프로그램을 실행하도록 한다.
디버그인터럽트기능(debug interrupt function)은 디버그예외를 발생시키도록 디버그인터럽트 신호를 어서트하여 프로세서코어(20)가 모니터프로그램을 실행하도록 한다.
디버그리셋기능(debug reset function)은 디버그를 리셋시키도록 디버그리셋 신호를 어서트하여 프로세서코어(20)와 디버그모듈(30)의 내부상태를 초기화시킨다. 그 다음 프로세서코어(20)가 디버그모드로 되어 디버그리셋 벡터어드레스 FF20_0000으로부터 디버그프로그램을 시작한다.
트레이스트리거기능(trace trigger function)은 소정 어드레스를 갖는 명령이 실행되는 것 또는 소정 어드레스의 데이터가 억세스되는 것을 나타내는 외부신호를 마이크로프로세서(10)가 송출하도록 한다. 이 신호에 응답하여 디버거(60)는 프로그램카운터 트레이스기능을 온/오프한다. 이 기능은 디버그모듈(30)이 프로세서코어(20)에 의해 실행될 명령의 어드레스와 디버그모듈(30)에 저장된 명령어드레스를 비교하거나 또는 프로세서 코어(20)에 의해 억세스할 데이터의 어드레스를 디버그모듈(30)내에 저장된 데이터어드레스와 비교하거나 또는 프로세서코어(20)로부터 내부디버그 인터페이스 및 프로세서버스(80)로 보낸 데이터를 디버그모듈(30)내에 저장된 데이터와 비교하여 이들이 서로 일치하는 경우, 트리거정보를 디버거(60)에 제공하도록 실행된다.
디버그모듈(30)에 대해 이하에서 상세히 설명한다.
제5도는 디버그모듈(30)의 내부블록들을 나타낸다. 디버그모듈(30)은 명령/데이터어드레스차단회로(31), 프로그램카운터트레이서(32), 프로세서버스차단회로(33), 직렬모니터버스회로(34), 레지스터회로(35), 외부인터페이스회로(36) 및 클록발생기(37)를 가진다.
명령/데이터어드레스차단회로(31)는 내부디버그인터페이스를 통해 프로세서코어(20)에 접속된다. 이 회로(31)는 프로세서코어(20)에 의해 제공된 명령어드레스를 레지스터회로(35)내에 세트된 명령어드레스와 비교하여 이들이 서로 일치할 경우, 명령어드레스차단 예외요구를 프로세서코어(20)에 제공한다. 또한, 이 회로(31)는 프로세서코어(20)에 의해 제공된 데이터어드레스를 레지스터회로(35)내에 세트된 데이터어드레스와 비교하여 이들이 서로 일치할 경우, 데이터어드레스차단 예외요구를 프로세서코어(20)에 제공한다.
프로그램카운터트레이서(32)는 내부디버그인터페이스를 통해 프로세서코어(20)에 접속되어 프로세서코어(20)에 의해 제공된 프로그램카운터트레이스정보를 처리하여 이 처리된 정보를 외부인터페이스회로(36)에 제공한다.
프로세서버스차단회로(33)는 프로세서버스(80)를 통해 프로세서코어(20)에 접속된다. 이 회로(33)는 프로세서버스(80)내의 버스사이클을 모니터하여 레지스터회로(35)내에 세트된 어드레스와 데이터에 대한 버스사이클이 수행될 경우에 예외요구를 프로세서코어(20)에 제공한다.
직렬모니터버스회로(34)는 프로세서버스(80)를 통해 프로세서코어(20)에 접속되며, 프로세서코어(20)가 디버거(60)의 모니터프로그램을 실행할 경우 인터페이스로서 역할한다.
레지스터회로(35)는 디버그모듈(30)의 기능을 제어하는 제어레지스터를 포함한다. 레지스터회로(35)는 프로세서버스(80)와 내부디버그인터페이스를 통해 프로세서코어(20)에 접속되어 프로세서코어(20)가 제어레지스터의 내용을 리드 및 라이트할 수 있다. 제어레지스터의 내용은 디버그모듈(30)과 프로세서코어(20)의 소자들에 공급되어 디버그기능을 제어한다.
외부인터페이스회로(36)는 프로그램카운터트레이서(32)와 디버그모듈(30) 및 프로세서코어(20)의 직렬모니터버스회로(3B)를 디버거(60)와 인터페이스해준다.
클록발생기(37)는 클록신호 CLK의 주파수를 분할하여, 직렬모니터버스회로(34)에 클록신호 CLK2를 제공한다.
[외부신호]
디버그모듈(30)이 외부 디버거(60)와 통신하도록 다음 8개의 인터페이스 신호를 사용한다.
1. SDAO/TPC(출력)
2. SDI/DINT*(입력)
3. DCLK (출력)
4. DRESET*(입력)
5∼7. PCST[2:0](출력)
8. DBGE*(입력)
(1) 디버그클록신호 DCLK(출력)
이 신호는 직렬모니터버스와 프로그램카운터트레이스인터페이스내의 신호들의 타이밍을 제어하기 위한 디버거(60)에 대한 출력클록신호이다. 이 신호는 직렬모니터버스의 동작을 위해 프로세서코어(20)의 동작클록신호의 주파수를 반분하여 형성된다.
(2) 디버그리셋신호 DRESET(풀-업 단자(pull-up terminal)에 대한 입력)
이 신호는 로우-액티브(low active) 신호이며, 입력신호 DBGE*에 관계없이 디버그모듈(30)을 초기화하도록 사용된다. 이 신호에 대한 단자는 디버거(60)가 사용되지 않을 경우 차단된다.
(3) 프로그램카운터트레이스 상태신호 PCST[2:0] (출력)
이 신호는 다음의 프로그램카운터트레이스 상태 및 직렬모니터버스 모드를 나타낸다.
111 : 파이프라인 스톨상태(pipeline stall state : STL)
110 : 브랜치/점프(branch/jump)한 상태 (JMP) (프로그램카운터 출력과 함께)
101 : 브랜치/점프(branch/jump)한 상태 (BRT) (프로그램카운터 출력없이)
100 : 예외상태 (EXP) (예외벡터코드 출력과 함께)
011 : 순차실행상태 (SEQ) (명령실행)
010 : 파이프라인스톨에서의 트레이스트리거 출력상태 (TST)
001 : 실행에서의 트레이스트리거 출력상태 (TSQ)
000 : 디버그모드 (DBM) (0 : 로우레벨, 1 : 하이레벨)
(4) 디버거 인에이블신호 DBGE* (풀업단자의 입력)
이 신호는 디버거(60)가 접속되어 있는지를 나타낸다. 만일 디버거(60)가 접속되지 않은 경우 신호는 하이(high)이고, 접속된 경우 신호는 로우(low)이다.
신호 DBGE*가 디버거가 접속되지 않았음을 나타내는 하이상태일 경우, 프로세서코어(20)의 신호 DEV는 로우이고, 디버그예외 벡터어드레스는 FF200200이다. 유저리셋 신호 RESET*는 디버그모듈(30)의 기능을 초기화하고, 디버거(60)의 기능을 디스에이블한다. 이 때, 출력신호 SDAO/TPC, DCLK 및 PCST(2:0)은 하이로 된다.
신호 DBGE*가 디버거(60)가 접속되었음을 나타내는 로우상태일 경우, 신호 DEV는 하이이고, 디버그예외 벡터어드레스는 FF20_0200(모니터 영역에서)이다. 유저리셋 신호 RESET*는 디버그모듈(30)을 초기화하지 않는다.
(5) 직렬데이터 및 어드레스 출력 / 타겟프로그램카운터 신호 SDAO/TPC(출력)
이 신호는 신호 PCST[2:0]가 디버그모드(DBM)를 나타낼 경우 직렬데이터 및 어드레스 출력신호 SDAO로서 역할하고, 또한 신호 PCST[2:0]가 디버그모드(DBM)를 나타내지 않을 경우 타겟프로그램 카운터신호 TPC로서 역할한다.
신호 PCST[2:0]이 디버그모드를 나타낼 경우, 신호 SDAO는 데이터, 어드레스, 리드/라이트 및 바이트인에이블(byte enable) 신호들을 한 비트씩 직렬로 제공한다. 버스사이클을 시작하기 전에 로우레벨 시작비트 신호가 클록기간동안 제공된다.
리드 동작시, 신호들은 로우레벨 시작비트, 즉 어드레스비트 A[2]-A[19], 리드/라이트 비트 R/W* 및 바이트인에이블 비트 BE[O]*∼BE[3]* 순으로 제공된다. 라이트 동작시, 신호들은 로우레벨 시작비트, A[2]-A[19], R/W*, BE[O]*-BE[3]* 및 데이터비트 D[0]∼D[31] 순으로 제공된다.
신호 PCST[2:0]이 정상모드를 나타낼 경우, 신호 TPC는 브랜치/점프 명령의 타겟어드레스와 예외/인터럽트의 벡터번호를 제공한다. 타겟어드레스는 비트 A[2]로부터 비트A[31]까지 순차적으로 제공된다.
(6) 직렬데이터 입력 / 디버그인터럽트 신호 SDI/ DINT*(풀업 단자의 입력)
이 신호는 신호 PCST[2:0]이 디버그모드를 나타낼 경우 직렬모니터 버스인터페이스신호 SDI로서 역할하고, 또한 신호 PCST[2:0]이 정상모드를 나타낼 경우 프로그램카운터트레이스 인터페이스신호 DINT*로서 역할한다.
이 신호 SDI는 데이터 입력신호이다. 클록기간동안 로우상태인 외부 시작비트가 리드 동작시에 수신되면 데이터 입력동작이 그 다음 클록부터 시작된다. 라이트 동작시 로우레벨 입력이 있을 경우 버스사이클이 종료된다.
리드 동작시 비트들은 로우레벨 시작비트와 데이터비트 D[0]∼D[31]순으로 제공된다. 라이트 동작시 로우레벨 종료비트만 수신된다.
신호 DINT*는 디버거(60)로부터의 디버그인터럽트 입력신호이다.
디버거(60)가 사용되지 않을 경우 단자는 차단된다.
제6도는 레지스터회로(35)의 상세도를 나타낸다.
레지스터회로(35)는 어드레스디코더(351)와 레지스터유닛(352)으로 구성된다.
어드레스디코더(351)는 프로세서코어(20)로부터 프로세서버스(80)를 통해 어드레스입력신호 A[31:0], 리드신호 RD*, 라이트신호 WR*, 디버그 모드신호 DM 및 코어클록신호 CLK를 수신한다. 레지스터유닛(352)내의 레지스터를 리드할 때, 어드레스디코더(351)는 레지스터를 지정하는 어드레스를 수신하여 그 어드레스를 디코드하고, 그 레지스터에 대응하는 레지스터리드신호를 어서트한 다음, 프로세서코어(20)로 리드확인신호 RDACK*를 보낸다.
주어진 어드레스에 대응하는 레지스터 유닛(352)내의 레지스터에 데이터를 라이트하는 경우, 어드레스디코더(351)는 그 레지스터에 대응하는 레지스터라이트신호, 리드확인신호 RDACK* 및 라이트확인신호 WRACK*를 어서트한다.
레지스터유닛(352)은 정상모드하에서는 억세스될 수 없다. 이 경우, 어드레스디코더(351)는 리드버스(read bus) 사이클에서 프로세서코어(20)에 대한 리드확인신호 RDACK*를 어서트하고, 라이트버스(write bus) 사이클에서 프로세서코어(20)에 대한 라이트확인신호 WRACK*를 어서트한다. 결국, 리드할 값이 정의되지 않으므로 라이트데이터가 무시된다.
디버그모드에서도, 레지스터 DCR의 메모리보호비트 MP가 세트될 경우 레지스터 DCR을 제외한 레지스터유닛(352)의 레지스터는 억세스될 수 없다.
이 경우에 어드레스디코더(351)는 리드버스 사이클에서 리드확인신호 RDACK*만을 어서트하고, 라이트버스 사이클에서 라이트확인신호 WRACK*만을 어서트한다. 결국 리드할 값이 정의되지 않으므로 라이트 데이터가 무시된다.
표 1은 어드레스 디코더(351)의 동작을 나타낸다.
[표 1]
레지스터 유닛(352)은 디버그제어레지스터(DCR), 명령차단상태(IBS)레지스터, 데이터차단상태(DBS) 레지스터, 프로세서버스차단상태(PBS) 레지스터, 명령차단어드레스0(IBA0) 레지스터, 명령차단제어0(IBC0) 레지스터, 데이터차단어드레스0(DBA0) 레지스터, 데이터차단제어0(DBC0) 레지스터, 프로세서버스차단어드레스0(PBA0) 레지스터, 프로세서버스차단데이터0(PBD0) 레지스터, 프로세서버스차단데이터 마스크0(PBM0) 레지스터 및 프로세서버스차단제어0(PBC0) 레지스터 등을 포함한다.
레지스터들은 디버그리셋신호 DRESET*가 어서트될 경우 또는 유저 리셋신호 RESET*가 디버거(60)가 차단됨을 나타내는 하이레벨 신호 DBGE*로 활성화될 경우에 리셋된다.
레지스터들의 기능에 대해 이하에 설명한다.
제7도는 디버그제어 레지스트(DCR)를 나타낸다.
트레이스모드비트 TM(0으로 리셋):
이 비트는 프로그램카운터 트레이스동작을 특정한다.
0 : 실시간(real time)으로 프로그램카운터 트레이스정보를 제공
1 : 완전 프로그램카운터 트레이스정보(실시간 동작확인 없이) 제공
이 비트 TM은 프로그램카운터트레이서(32)에 공급된다.
마스크유저 리셋비트 MRst(0으로 리셋):
이 비트는 유저 리셋마스크를 특정한다.
0 : 디버그예외시 유저 리셋을 마스크
1 : 디버그예외시 유저 리셋을 인에이블
이 비트 MRst는 외부인터페이스회로(36)에 공급된다.
메모리 보호비트 MP(1로 리셋):
0 : 디버그모드하에서 모니터영역에 대한 라이트동작 인에이블
1 : 디버그모드하에서 라이트동작에 대한 레지스터 DCR을 제외하고 모니터영역(FF20_0000∼FF3F_FFFF)을 보호
이 비트 MP는 어드레스디코더(351)와 직렬모니터버스회로(34)에 공급된다.
마스크 비마스크 인터럽트비트 MmI(1로 리셋):
0 : 프로세서코어(20)의 NmI 마스크
1 : NmI 인에이블
이 비트 MNmI는 프로세서코어(20)에 공급된다.
마스크인터럽트비트 MInt(1로 리셋):
0 : 프로세서코어(20)의 외부인터럽트(Int[5:0]*)를 마스크
1 : 외부인터럽트(Int[5:0]*) 인에이블
이 비트 MInt는 외부인터페이스회로(36)에 공급된다.
엔디안(endian) 메모리비트 ENM:
이 비트는 유저리셋동작이 수행될 때 엔디안 신호의 값을 나타낸다.
이 비트는 리드-온리(read-only)이므로 이 비트에 대한 라이트동작은 무시된다.
0 : 소 엔디안(little endian)
1 : 대 엔디안(big endian)
이 비트 ENM은 로우레벨인 유저리셋신호 RESET*로서 코어클록신호의 상승시에 엔디안신호를 랫칭(latching)하여 형성된다.
정지상태비트 HIS:
이 비트는 신호 DINT*가 액티브(active)일 때의 정지신호값을 나타낸다. 비트 HIS는 리드-온리이므로 이 비트에 대한 라이트동작은 무시된다.
0 : 비정지상태
1 : 정지상태
이 비트 HIS는 디버그인터럽트신호 DINT*의 상승 에지(edge)부에서 정지신호를 랫치하여 형성된다.
도즈(Doze) 상태비트 DzS:
이 비트는 신호 DINT*가 액티브일 때의 도즈(doze) 신호값을 나타낸다. 비트 DzS는 리드-온리로서 이 비트에 대한 라이트동작은 무시된다.
0 : 비 도즈 상태
1 : 도즈 상태
이 비트 DzS는 디버그인터럽트신호 DINT*의 하강에지부에서 도즈 신호를 래치하여 형성된다.
제8도는 명령차단어드레스0 레지스터 IBA0을 나타낸다.
명령차단어드레스필드 IBA:
이 레지스터 IBA0의 필드는 가상어드레스(virtual address)인 명령차단어드레스를 저장한다. 필드 IBA는 명령/데이터어드레스차단회로(31)에 공급된다.
제9도는 명령차단제어0 레지스터 IBC0을 나타낸다.
차단인에이블 비트 BE(0으로 리셋):
이 비트는 명령어드레스차단기능의 유효성을 특정한다.
0 : 명령어드레스차단기능을 디스에이블
1 : 명령어드레스차단기능을 인에이블
만일 실행할 명령의 가상어드레스가 비트 BE가 1인 레지스터 IBA0내에 세트된 어드레스와 일치할 경우, 프로세서코어(20)에 명령차단 요구를 하여 레지스터 IBS의 비트 BS0을 세트한다. (프로세서코어(20)는 어드레스가 일치한 명령을 실행하기 직전에 명령어드레스차단예외를 생성한다) 차단회로(31)에는 비트 BE가 공급된다.
트레이스트리거 인에이블비트 TE(0으로 리셋):
이 비트는 명령어드레스 트레이스트리거 기능의 유효성(validity)을 특정한다.
0 : 명령어드레스 트레이스트리거 기능을 디스에이블
1 : 명령어드레스 트레이스트리거 기능을 인에이블
만일 실행되는 명령의 가상어드레스가 인에이블된 명령어드레스 트레이스트리거 기능을 나타내는 비트 TE가 1인 레지스터 IBA0 내에 세트된 어드레스와 일치할 경우, 신호 PCST[2:0]는 레지스터 IBS의 비트 BS0을 세트하도록 트레이스트리거 출력상태 TST(010) 또는 TSQ(001)를 나타낸다. 비트 TE는 차단회로(31)에 공급된다.
제10도는 명령차단상태 레지스터 IBS를 나타낸다.
차단채널 번호필드 BCN:
이 필드는 명령차단의 채널번호를 나타낸다.
이 필드는 리드-온리이므로 이 필드의 라이트동작은 무시된다.
0000 : 없음(예약됨)
0001 : 1채널
1111 : 15채널(예약됨)
차단상태0 비트 BS0:
이는 명령어드레스 차단 또는 명령어드레스 트레이스트리거의 발생을 나타내는 상태 비트이다.
0 : 채널 0의 명령어드레스 차단과 어드레스 트레이스트리거 없음
1 : 명령의 가상어드레스가 세트된 어드레스와 일치함을 나타내는 레지스터 IBC0내에서 비트 BE가 1이고, 또는 비트 TE가 1인 명령어드레스 차단예외 또는 명령어드레스 트레이스트리거의 발생이 비트 BS0은 차단회로(31)로부터 BS0 세트신호가 어서트될 때 세트되고 0을 라이트함으로써 소거(clear)된다.
제11도는 데이터차단어드레스0 레지스터 DBA0을 나타낸다.
데이터차단어드레스 필드 DBA:
이 필드는 가상어드레스인 데이터차단 어드레스를 저장한다. 이 필드는 차단회로(31)에 공급된다.
제12도는 데이터 차단제어0 레지스터 DBC0을 나타낸다.
차단 인에이블비트 BE(0으로 리셋):
이 비트는 데이터어드레스 차단기능의 유효성을 측정한다.
0 : 데이터어드레스 차단기능을 디스에이블
1 : 데이터어드레스 차단기능을 인에이블
만일 억세스할 데이터의 가상어드레스가 1의 비트 BE를 갖는 레지스터 DBA0내에 세트된 어드레스와 일치할 경우, 프로세서코어(20)에 대해 데이터 차단요구가 행해지고, 레지스터 DBS의 비트 BS0이 세트된다. 비트 BE는 차단회로(31)에 공급된다.
트레이스트리거 인에이블비트 TE(0으로 리셋):
이 비트는 데이터어드레스 트레이스트리거기능의 유효성을 특정한다.
0 : 데이터어드레스 트레이스트리거기능을 디스에이블
1 : 데이터어드레스 트레이스트리거기능을 인에이블
만일 억세스된 데이터의 가상어드레스가 인에이블된 데이터어드레스 트레이스트리거 기능을 나타내는 1의 비트 TE를 갖는 레지스터 DBA0내에 세트된 어드레스와 일치할 경우, 신호 PCST[2:0]은 트레이스트리거 출력상태 TST(010) 또는 TSQ(001)을 나타내고, 레지스터 DBS의 비트 BS0이 세트된다. 비트 TE는 차단회로(31)에 공급된다.
제13도는 데이터차단상태 레지스터 DBS를 나타낸다.
차단채널 번호필드 BCN:
이 필드는 데이터차단의 채널번호를 나타낸다.
이 필드는 리드-온리이므로 이 필드에 대한 라이트동작은 무시된다.
0000 : 없음(예약)
0001 : 1채널
.
.
.
1111 : 15채널(예약)
차단상태0 비트 BS0
이 비트는 데이터어드레스 차단 또는 데이터어드레스 트레이스트리거가 발생되었음을 나타내는 상태 비트이다.
0 : 채널 0의 데이터어드레스 차단 또는 데이터어드레스 트레이스트리거 없음
1 : 레지스터 DBC0내에 1의 비트 BE 또는 1의 비트 TE를 갖는 세트어드레스와 일치하는 데이터의 가상어드레스로서 데이터어드레스 차단 예외 또는 데이터어드레스 트레이스트리거 발생
이 비트 BS0은 0을 라이트함으로서 소거되고 또한 차단회로(31)로부터의 BS0 세트신호가 어서트될 때 세트된다.
제14도는 프로세서버스 차단어드레스 레지스터 PBA0을 나타낸다.
프로세서버스 차단어드레스 필드 PBA:
이 필드는 프로세서버스차단/트레이스트리거 기능의 차단어드레스를 저장한다. 이 어드레스는 물리적어드레스(Physical address)이다. 필드 PBA는 프로세서버스차단회로(33)에 공급된다.
제15도는 프로세서버스 차단데이터0 레지스터 PBD0을 나타낸다.
프로세서버스 차단데이터 필드 PBD:
이 필드는 프로세서버스차단/트레이스트리거 기능의 차단데이터를 저장한다. 이 필드 PBD는 프로세서버스차단회로(33)에 공급된다.
제16도는 프로세서버스 마스크0 레지스터 PBM0을 나타낸다.
프로세서버스 차단데이터 마스크필드 PBM:
이 필드는 프로세서버스차단/트레이스트리거 기능에 따라 레지스터 PBD0에 저장된 데이터의 비교를 디스에이블(마스크)하는 비트를 나타낸다.
0 : 레지스터 PBD0의 대응비트의 비교를 인에이블
1 : 레지스터 PBD0의 대응비트의 비교를 디스에이블
이 필드 PBM은 프로세서버스차단회로(33)에 공급된다.
제17도는 프로세서버스제어0 레지스터 PBC0을 나타낸다.
차단 인에이블비트 BE(0으로 리셋):
이 비트는 프로세서버스차단의 유효성을 특정한다.
0 : 프로세서버스차단을 디스에이블
1 : 프로세서버스차단을 인에이블
만일 어드레스와 데이터가 세트된 값과 일치할 경우 프로세서코어(20)에 디버그인터럽트 요구를 한다. 비트 BE는 프로세서버스차단회로(33)에 공급된다.
트레이스트리거 인에이블비트 TE(0으로 리셋):
이 비트는 프로세서버스 트레이스트리거의 유효성을 특정한다.
0 : 프로세서버스 트레이스트리거를 디스에이블
1 : 프로세서버스 트레이스트리거를 인에이블
만일 어드레스와 데이터가 세트된 값들과 일치할 경우, 신호 PCST[2:0]은 트레이스트리거 출력상태 TST(010) 또는 TSQ(001)를 나타낸다. 비트 TE는 프로세서버스차단회로(33)에 공급된다.
언캐시영역으로부터 명령인출 비트(Instruction fetch from uncache are bit) IFUC:
이 비트는 언캐시 영역으로부터 인출된 명령에 대해 어드레스와 데이터가 세트된 값과 일치하는지를 특정한다.
0 : 비교를 디스에이블
1 : 비교를 인에이블
이 비트 IFUC는 프로세서버스차단회로(33)에 공급된다.
언캐시 영역으로부터의 데이터로드 비트(Data load from uncache area bit) DLUC:
이 비트는 언캐시영역으로부터 로드된 데이터에 따라 어드레스와 데이터의 비교가 행해지는지를 특정한다.
0 : 비교를 디스에이블
1 : 비교를 인에이블
이 비트 DLUC는 프로세서버스차단회로(33)에 공급된다.
언캐시 영역에 대한 데이터기억비트(Data store to uncache area bit) DSUC:
이 비트는 언캐시영역에 데이터가 저장될 때 어드레스 및 데이터의 비교가 수행되는지를 특정한다.
0 : 비교를 디스에이블
1 : 비교를 인에이블
이 비트 DSUC는 프로세서버스차단회로(33)에 공급된다.
캐시영역에 데이터 기억비트(Data store to cache area bit) DSCA:
이 비트는 캐시영역내에 데이터가 저장될 때 어드레스 및 데이터의 비교가 수행되는지를 특정한다.
0 : 비교를 디스에이블
1 : 비교를 인에이블
이 비트 DSCA는 프로세서버스차단회로(33)에 공급된다.
제18도는 프로세서버스 차단상태 레지스터 PBS를 나타낸다.
차단채널번호 필드 BCN:
이 필드는 프로세서버스차단의 채널번호를 나타낸다.
0000 : 0 채널(예약됨)
0001 : 1채널
.
.
.
1111 : 15채널(예약됨)
차단상태 0 니트 BS0(0으로 리셋):
이 비트는 프로세서버스 차단 또는 프로세서어스 트레이스트리거가 발생했는지를 나타내는 상태비트이다.
0 : 채널 0의 프로세서버스차단 또는 프로세서버스 트레이스트리거가 없음
1 : 레지스터 PBEO내의 비트 BE 또는 TE가 1인 채널 0의 프로세서 버스차단 또는 프로세서버스 트레이스트리거
이 비트 BS0은 0을 라이트함으로서 소거된다.
만일 비트 BE가 1일 경우 프로세서코어(20)에 대한 디버그 인터럽트 요구도 소거된다. 비트 BS0은 프로세서버스차단회로(33)로부터의 BS0 세트신호가 어서트될 때 세트된다.
제19도는 명령/데이터어드레스차단회로(31)를 나타난다. 이 회로는 명령어드레스비교기(311), 데이터어드레스비교기(312) 및 AND회로들(313, 314, 315 및 316)을 갖는다.
만일 레지스터 IBC0의 차단 인에이블비트 BE 또는 트리거 인에이블비트 TE가 세트되고 또한 프로세서코어(20)로부터의 명령어드레스 인에이블 신호가 어서트되면, 비교기(311)는 프로세서코어(20)로부터의 입력명령 어드레스와 레지스터 IBA0에 저장된 어드레스를 비교한다. 이들이 서로 일치하면 비교기(311)는 레지스터 IBS의 비트 BS0을 세트하도록 신호를 제공한다. 만일 이 때 레지스터 IBC0의 비트 BE가 세트되면 AND회로(313)의 출력은 명령어드레스 차단요구를 프로세서코어(20)에 제공하도록 어서트된다. 만일 레지스터 IBC0의 비트 TE가 세트되면 AND회로(314)의 출력은 명령어드레스 트레이스트리거 요구를 프로그램카운터 트레이서(32)에 제공하도록 어서트된다.
만일 레지스터 DBC0의 비트 BE 또는 TE가 세트되고, 또한 프로세서코어(20)로부터의 데이터어드레스 인에이블 신호가 어서트되면 비교기(212)는 프로세서코어(20)로부터의 입력데이터 어드레스를 레지스터 DBA0내에 저장된 어드레스와 비교한다. 만일 이들이 서로 일치할 경우, 비교기(312)는 레지스터 DBS의 비트 BS0을 세트하도록 신호를 제공한다. 만일 이 때 레지스터 DBC0의 비트 BE가 세트되면, AND회로(315)의 출력이 어서트되어 데이터어드레스 차단요구를 프로세서코어(20)에 제공한다. 만일 레지스터 DBC0의 비트 TE가 세트되면, AND회로(316)의 출력이 어서트되어 데이터어드레스 트레이스트리거 요구를 프로그램카운터트레이서(32)에 제공한다.
제20도는 프로세서버스차단회로(33)의 상세도를 나타낸다.
이 차단회로(33)는 프로세서버스내의 버스동작을 모니터하여 레지스터내에 세트된 어드레스와 데이터에 대한 버스동작이 발생할 경우 프로세서코어(20)를 디버그인터럽트요구에 제공한다.
이 차단회로(33)는 프로세서버스어드레스비교기(331), 마스크를 갖는 데이터비교기(332) 및 AND회로(333,334,335)를 갖는다.
레지스터 PBC0의 차단 인에이블비트BE 또는 트리거 인에이블비트 TE가 세트될 경우, 비교기(331)는 레지스터 PBA0내에 세트된 어드레스와 프로세서버스내의 어드레스를 비교한다. 레지스터 PBC0의 비트들 DSCA, DSUC, DLUC 및 IFUC는 언캐시 영역/캐시 영역, 데이터 저장/데이터로드 및 명령인출에 대한 비교의 유효성을 나타낸다. 비교기(331)는 신호 ID(명령 인출 또는 데이터 억세스인지를 나타냄), 리드신호 RD*, 라이트신호 WR* 및 신호 CACHE*에 따라 표 2에 나타낸 바와 같이 동작한다.
[표 2]
리드신호 RD*가 로우인 리드버스 사이클에서 레지스터비교기(332)는 레지스터 PBM0내의 대응하는 비트들이 각각 0인 비트들에 대해서만 레지스터 PBD0내에 저장된 데이터와 프로세서버스로부터의 입력데이터 DIN[31:0]를 비교한다. 라이트신호 WR*가 로우인 라이트버스 사이클에서 비교기(332)는 레지스터 PBM0내의 대응하는 비트들이 각각 0인 비트들에 대해서만 레지스터 PBD0내에 저장된 데이터와 프로세서버스로부터의 출력 데이터 DOUT[31:0]를 비교한다.
만일 비교기(331,332)의 각 출력들이 하이인 경우, 즉 어드레스 및 데이터가 세트된 어드레스 및 데이터와 일치할 경우, AND회로(333)의 출력이 어서트되어 레지스터회로(35)에 레지스터 PBS의 비트 BS0을 세트할 것을 요구한다. 이 때 레지스터 PBC0의 비트 BE가 세트되면, AND회로(334)의 출력이 어서트되어 디버그인터럽트 요구를 프로세서코어(20)에 제공한다. 만일 레지스터 PBC0의 비트 TE가 세트되면 AND회로(335)의 출력이 어서트되어 프로세서버스 트레이스트리거 요구를 프로그램카운터트레이서(32)에 제공한다.
제21도는 직렬모니터버스회로(34)의 상세도를 나타낸다. 이 회로(34)는 직렬모니터버스컨트롤러(341), 직렬출력회로(342) 및 직렬입력회로(343)를 갖는다.
직렬모니터버스컨트롤러(341)는 프로세서버스(80)로부터 데이터 출력신호 DOUT[31:0], 어드레스신호 A[31:20], 리드신호 RD*, 라이트신호 WR*, 코프로세서 리드신호 CPRD*, 코프로세서 라이트신호 CPWR* 및 디버그모드신호 DM을 수신한다. 컨트롤러(341)는 또한 클록발생기(37)로 부터 클록신호 CLK2, 레지스터회로(35)로부터 레지스터 DCR의 비트 MP, 외부인터페이스회로(36)로부터 신호 SDI를 수신한다.
컨트롤러(341)는 리드확인신호 RDACK*, 라이트확인신호 WRACK*, 코프로세서 리드확인신호 CPRDACK* 및 코프로세서라이트확인신호 CPWRACK*를 프로세서버스(80)에 제공한다. 컨트롤러(341)는 직렬출력회로(342)에 직렬모니터버스 리드/라이트신호, 직렬모니터버스 바이트 인에이블신호, 직렬모니터버스데이터신호를 제공하며, 회로(342)의 출력쉬프트레지스터(344)에 데이터로드신호와 출력쉬프트신호를 제공한다. 컨트롤러(341)는 입력쉬프트레지스터(345)용 입력쉬프트신호와 출력버퍼(346)용 출력인에이블신호를 직렬입력회로(343)에 제공한다. 직렬모니터버스리드/라이트신호는 리드버스 동작시에 하이이고, 라이트버스 동작시에 로우이다.
컨트롤러(341)로부터 출력쉬프트 레지스터(344)로의 데이터로드신호가 어서트될 때 시작비트(로우에 고정), 어드레스비트 A[1]∼A[19], 직렬모니터버스 리드/라이트신호, 직렬모니터버스 바이트인에이블신호 및 직렬모니터버스 데이터신호가 최하위비트(LSB)부터 출력쉬프트레지스터(344)에 로드된다. 레지스터(344)에 대한 출력 쉬프트레지스터(344)가 어서트되면 레지스터(344)내의 값이 최상위비트(MSB)로부터 최하위비트(LSB)쪽으로 1비트씩 쉬프트되고, MSB는 하이로 세트된다. 출력쉬프트 레지스터(344)의 LSB의 값은 출력신호 SDAO에 의해 반송된다.
컨트롤러(341)로부터 입력쉬프트레지스터(345)로 입력된 쉬프트신호가 어서트되면 레지스터(345)의 값이 LSB로쿠터 MSB쪽으로 1비트씩 쉬프트되며 입력신호 SDI의 값이 LSB에 세트된다.
제21도의 직렬모니터버스회로(34)의 동작을 설명한다.
프로세서코어(20)가 디버그모드하에서 OxFF20_0000∼OxFF2F_FFFF의 영역을 억세스할 때 또는 코프로세서 리드/라이트동작(CTC0, CFC0)이 디버그모드에서 실행될 때, 디버거(60)내의 메모리는 직렬모니터버스회로(34)를 통해 억세스된다. 직렬모니터버스를 사용하는 라이트 동작시에 회로(34)는 출력신호 SDAO로서 어드레스신호, 버스제어신호 및 데이터신호를 1비트씩 직렬로 제공한다. 리드 동작시에 회로(34)는 출력신호 SDAO로서 어드레스신호와 버스제어신호를 제공하며, 또한 입력신호 SDI에 의해 전송되는 레지스터를 1비트씩 직렬로 수신한다.
직렬모니터버스회로(34)는 프로세서코어(20)의 동작클록신호 CLK의 주파수를 반분하여 얻은 클록신호 CLK2에 따라 동작한다.
(3) 리드/라이트 버스동작에 의한 억세스
리드버스 동작시에 프로세서코어(20)는 억세스할 어드레스 A[31:0]를 제공하여 신호RD*를 어서트한다. 리드확인신호 RDACK*가 어서트되면 데이터 DIN[31:0]이 리드되고 버스동작이 종료한다.
라이트버스 동작시에 프로세서코어(20)는 억세스할 어드레스 A[31:0]와 라이트할 데이터 DOUT[31:0]을 송출하고 신호 WR*을 어서트한다. 라이트확인신호 WRACK*가 어서트되면 버스동작이 종료한다.
만일 프로세서코어(20)가 디버그모드하에서 후술하는 모니터 영역에 대한 버스동작을 실행하면 디버거(60)는 직렬모니터버스회로(34)를 통해 억세스된다.
모니터 영역은 0xFF20_0000 및 0xFF2F_FFFF간의 1메가바이트에 대해 연장되어 있다.
(A[31:20])=1111_1111_0010(0:로우, 1:하이)
라이트버스동작은 예를 들어 저장명령(SW)을 사용하여 데이터를 메모리에 기록한다. 다음은 저장명령의 일예이다.
SW r8 0x0004 (r9)
이 예에서 메모리어드레스는 범용레지스터 r9에 16비트 옵셋값 0x0004를 가산하여 얻는다. 모니터영역을 억세스하기 위해서, 범용레지스터의 값은 사전에 0xFF20_0000∼0xFF2F_0000로 세트되어야 한다.
직렬모니터버스회로(34)는 출력신호 SDAO로서 하위비트로부터의 어드레스신호 A[19:2]와 리드동작시의 하이레벨신호 또는 라이트동작시의 로우레벨신호를 제공한다. 그 후 바이트 인에이블신호 BE[3:0]*가 하위비트들로부터 제공된다. 리드동작시에 32비트 데이터가 입력신호 SDI로서 수신되어 데이터 DIN[31:0]로서 프로세서버스(80)로 제공된다. 라이트동작시에 프로세서버스(80)로부터의 데이터 DOUT[31:0]는 출력신호 SDAO에 의해 반송된다.
프로세서코어(20)로부터의 18비트 어드레스신호 A[19:2]가 1메가바이트 메모리공간을 억세스하기 위해 사용된다.
프로세서코어(20)의 바이트 인에이블신호 BE[3:0]는 직렬모니터 버스에 공급되어 1바이트, 1/2워드, 또는 3바이트를 억세스한다. 그러나 직렬버스는 1바이트 억세스, 1/2워드 억세스 또는 3바이트 억세스에 대해서도 32비트 데이터D[31:0]을 반송한다. 1바이트, 1/2워드 또는 3바이트 데이터를 라이트할 때 데이터 D[31:0]의 요구되는 바이트 위치들에 대응하는 신호 BE[3:0]의 비트 위치들이 세트된다. 리드동작시에는, 신호 BE[3:0]의 인액티브(inactive) 비트 위치에 대응하는 데이터의 바이트 위치들이 프로세서코어(20)에 의해 무시된다.
만일 디버그모드에서 모니터영역이 레지스터 DCR의 비트 MP를 1로 하여 보호될 경우, FF20_0000로부터 FF2F_FFFF까지의 영역에 대한 라이트 동작이 무시된다. 이 경우에 직렬모니터 버스회로(34)는 프로세서코어(20)로 신호 WRACK*만을 리턴시켜 버스동작을 종료한다.
디버그모드에서 FF20_0000로부터 FF2F_FFFF까지의 영역을 리드할 경우, 비트 MP의 값에 관계없이 직렬모니터버스로부터 교정된 데이터가 리드된다.
정상모드에서는, FF20_0000로부터 FF2F_FFFF까지의 영역에 대한 라이트동작이 무시되어 리드동작의 결과는 정의되지 않는다. 이 때 직렬 모니터버스회로(34)는 프로세서코어(20)로 신호 WRACK* 또는 RDACK*를 리턴하고 버스동작을 종료한다.
(b) 코프로세서버스 동작에 의한 억세스(CTC0/CFC0)
명령 CFC0이 실행될 때 프로세서코어(20)는 코프로세서의 리드버스 동작을 실행하고, 명령 CTC0이 실행될 때 프로세서코어(20)는 코프로세서의 라이트버스 동작을 실행한다. 코프로세서버스(80) 동작시에 명령들 CFC0과 CTC0은 다음과 같이 프로세서버스의 어드레스A[31:0]에 대한 것으로 제공된다.
A[31:0] COPO CT rt rd 0
A[31:0] COPO CF rt rd 0
CFC0(0: 로우레벨, 1: 하이레벨)
rt : 범용레지스터
rd : 코프로세서의 제어레지스터(직렬모니터 버스에 대한 유의값 없음)
코프로세서 리드동작시, 프로세서코어(20)는 신호 CPRD*를 어서트하고 코프로세서 리드확인신호 CPRDACK*가 어서트되면 데이터 DIN[31:0]을 리드하고 버스동작을 종료한다.
코프로세서 라이트동작시, 프로세서코어(20)는 신호 CPWR*을 어서트하고 데이터버스신호 DOUT[31:0]로서 프로세서코어(20)내의 범용레지스터의 값을 제공한다. 코프로세서라이트 확인신호 CPWRACK*가 어서트되면 프로세서코어(20)는 버스동작을 종료한다.
프로세서코어(20)는 명령 CTC0과 CFC0로서 코프로세서버스동작을 수행하여 직렬모니터버스를 통해 디버거(60)를 억세스한다.
직렬모니터버스회로(34)는 출력신호 SDAO로서 클록주기당 1비트의 속도로 버스사이클신호를 제공한다. 프로세서코어(20)의 어드레스신호 A[19:2]는 하위비트들로부터 제공된다. 그 후 하이레벨신호가 코프로세서 리드동작시에 제공되고 코프로세서 라이트동작시에는 로우레벨 신호가 제공된다. 직렬모니터버스내의 바이트 인에이블신호는 프로세서버스의 신호 BE[3:0]과 관계없이 4클록기간동안 로우레벨 신호이다.
명령 CFC0에 응답하여 32비트 데이터가 입력신호 SDI로서 수신되어 데이터신호 DIN[31:0]으로서 프로세서버스에 공급된다. 명령 CFC0에 응답하여 프로세서버스로부터 데이터출력신호 DOUT[31:0]이 출력신호 SDAO로서 공급된다.
디버그모드시에 직렬모니터버스의 라이트동작은 모니터 영역의 보호와 무관하게 즉, 레지스터 DCR의 비트 MP의 값과 무관하게 명령 CTC0에 따라 수행된다. 또한 직렬 모니터 버스의 리드동작은 명령 CFC0에 따라 수행된다.
정상모드시에 명령 CTC0에 의한 라이트동작은 무시되고 명령 CFC0에 의한 리드동작은 정의되지 않는다. 디버그모듈은 신호들 CPRDACK* 와 CDWRACK*만을 프로세서코어(20)로 리턴하고 버스동작을 종료한다.
이하 직렬모니터버스 동작의 타이밍 차트를 설명한다.
(a) 직렬모니터버스의 리드동작
제22도는 직렬모니터버스의 리드동작을 나타내는 타이밍차트이다.
(1) 사이클 1에서 프로세서코어(20)는 0xFF20_0000 ∼ 0xFF2F_FFFF(A[31:20] = 1111_1111_0010)의 영역에 대한 리드동작을 개시한다. 프로세서코어(20)는 억세스할 어드레스 A[31:0]을 제공하고, 신호 RD*를 어서트한다. 리드할 바이트 위치에 대한 바이트 인에이블신호 BE[3:0]이 어서트된다.
(2) 사이클 2에서 직렬모니터 버스회로(34)는 리드동작의 시작을 확인하여 출력신호 SDAO로서 코어클록신호 CLK의 주파수를 분할하여 형성되는 클록신호 CLK2의 클록주기동안 로우레벨신호를 제공한다.
(3) 사이클 3∼25에서 회로(34)는 출력신호 SDAO로서 신호CLK2의 클록주기마다 프로세서코어(20)에 의해 제공되는 바이트 인에이블비트들 BE[0]*~BE[3]*, 하이레벨비트(리드동작을 나타냄) 및 어드레스비트 A[2] ∼A[19]을 제공한다.
(4) 사이클 n에서 디버거(60)는 신호 SDI로서 데이터를 제공하기 전에 1클록주기동안 로우레벨 신호를 제공한다. 로우레벨신호를 검출한 후, 회로(34)는 사이클 n+1∼n+32에서 클록주기당 1비트의 속도로 데이터 D[0]∼D[31]을 수신한다.
(5) 사이클 n+33에서 회로(34)는 프로세서코어(20)에 대한 확인신호 RDACK*를 어서트하여 데이터신호 DIN[31:0]로서 리드된 32비트 데이터 D[31:0]를 제공한다.
(6) 사이클 n+33에서 프로세서코어(20)는 데이터 신호 DIN[31:0]를 리드한다. 이것으로 리드동작을 종료시킨다.
(b) 직렬모니터버스의 라이트동작
제23도는 직렬모니터버스의 라이트동작을 나타내는 타이밍차트이다.
(1) 사이클 1에서 프로세서코어(20)는 0xFF20_0000 ∼ 0xFF2F_FFFF(A[31:20] = 1111_1111_0010)의 영역에 대한 라이트동작을 개시한다. 프로세서코어(20)는 억세스할 어드레스 A[31:0]을 제공하고, 신호 WR*를 어서트한다. 데이터가 기록될 바이트 위치에 대한 바이트 인에이블신호 BE[3:0]이 어서트된다.
(2) 사이클 2에서 직렬모니터버스회로(34)는 라이트동작의 시작을 확인하여 출력신호 SDAO로서 클록신호 CLK2의 클록주기동안 로우레벨신호를 제공한다.
(3) 사이클 3∼57에서 회로(34)는 출력신호 SDAO로서 프로세서코어(20)에 의해 제공된 라이트데이터 DOUT[0]∼DOUT[31],바이트 인에이블 비트 BE[0]*∼BE[3]*, 로우레벨비트(라이트동작을 나타냄) 및 어드레스비트 A[2]∼A[19]을 제공한다.
(4) 사이클 n에서 디버거(60)는 데이터 라이트를 종료하고, 입력 신호 SDI로서 1클록주기동안 로우레벨 신호를 제공한다.
(5) 사이클 n+1에서 회로(34)는 로우레벨신호를 검출하여 프로세서코어(20)에 대한 라이트확인신호WRACK*를 어서트한다.
(6) 사이클 n+1에서 프로세서코어(20)는 라이트동작을 완료한다.
(c) 명령 CFC0에 의한 리드버스동작
제24도는 명령CFC0에 따른 리드버스 동작을 나타내는 타이밍차트이다.
(1) 사이클 1에서 프로세서코어(20)는 명령 CFC0에 따라 코프로세서 리드버스동작을 시작하여 프로세서버스에 어드레스 A[31:21]=01000000010 을 제공하고, 신호 CPRD*를 어서트한다.
(2) 사이클 2에서 직렬모니터버스회로(34)는 리드동작의 시작을 확인하고 출력신호 SDAO로서 신호 CLK2의 1클록주기동안 로우레벨신호를 제공한다.
(3) 사이클 3∼20에서 회로(34)는 출력신호 SDAO로서 어드레스 A[31:21]의 어드레스비트 A[2]∼A[19]를 제공한다. 사이클 21에서, 하이레벨 신호가 1클록주기동안 제공되어 리드동작을 나타낸다. 사이클 22-25에서 로우레벨신호가 프로세서버스의 바이트 인에이블신호와 무관하게 4클록주기 동안 제공된다.
(4) 사이클 n에서 디버거(60)는 데이터를 제공하기 전에 입력신호 SDI로서 1클록주기동안 로우레벨신호를 제공한다. 회로(34)는 로우레벨신호를 검출하여 사이클 n+1∼n+32에서 데이터 D[0]∼D[31]을 각각 리드한다.
(5) 사이클 n+33에서 회로(34)는 프로세서코어(20)에 대한 코프로세서리드확인신호 CPRDACK*를 어서트하여 데이터버스신호 DIN[31:0]로서 리드된 32비트 데이터 D[31: 0]을 제공한다.
(6) 사이클 n+33에서 프로세서코어(20)는 신호DIN[31: 0]을 리드하고 코프로세서 리드버스 동작을 종료한다.
(d) 명령 CTC0에 따른 라이트버스동작
제25도는 명령 CTC0에 따른 라이트버스동작을 나타내는 타이밍차트이다.
(1) 사이클 1에서 프로세서코어(20)는 명령 CTC0에 따라 코프로세서 라이트버스동작을 시작하고, 프로세서버스의 어드레스 A[31:21]=0100_0000_110을 제공하고, 또한 신호 CPWR*을 어서트한다.
(2) 사이클 2에서 직렬모니터버스회로(34)는 라이트동작의 시작을 확인하고 또한 출력신호 SDAO로서 신호 CLK2의 1클록주기동안 로우레벨 신호를 제공한다.
(3) 사이클 3∼20에서 회로(34)는 출력신호 SDAO로서 어드레스 A[31:21]의 어드레스비트 A[2]∼A[19]를 제공한다. 사이클21에서 라이트 동작을 나타내는 로우레벨신호가 1클록주기동안 제공된다. 사이클 22∼25에서 출력신호 SDAO는 프로세서버스의 바이트 인에이블신호와 무관하게 4클록주기동안 로우가 된다. 사이클 26∼57에서 출력신호 SDAO는 데이터버스 출력비트 DOUT[O]∼DOUT[31]을 제공한다.
(4) 사이클 n에서 디버거(60)는 데이터의 라이트를 종료하고 입력신호 SDI로서 1클록주기동안 로우레벨신호를 제공한다.
(5) 사이클 n+1에서 회로(34)는 로우레벨신호를 검출하여 프로세서코어(20)에 대한 코프로세서 라이트확인신호 CPWRACK*를 어서트한다.
(6) 사이클 n+1에서 프로세서코어(20)는 코프로세서 라이트버스동작을 완료한다.
제26도는 직렬모니터버스컨트롤러(341)의 동작을 나타내는 플로우챠트도이다.
컨트롤러(341)는 프로세서버스(80)의 동작을 탐지한다.
(1) 단계 S120, S124 및 S125에서는 직렬모니터버스의 리드동작이 시작된다. 왜냐하면 어드레스 A[31:20]이 0xFF2를 나타내고 리드신호 RD*가 어서트(로우)되고, 신호 DM이 하이레벨로서 디버그모드를 나타내기 때문이다.
(2) 단계 S120, S124, S132 및 S133에서는 프로세서코어(20)의 신호 RDACK*가 어서트되어 버스동작이 종료한다. 왜냐하면 A[31:20]=0xFF2와 신호 RD*가 어서트(로우)되더라도 신호 DM이 정상모드를 나타내도록 로우레벨이기 때문이다.
(3) 단계 S120, S121, S126 및 S127에서는 직렬 모니터버스의 라이트 동작이 시작된다. 왜냐하면 A[31:20]= 0xFF2, 라이트신호 WR*이 어서트(로우)되고, 신호 DM이 디버그모드를 나타내도록 하이레벨이고, 레지스터 DCR의 비트 MP가 라이트 인에이블 상태를 나타내도록 0이기 때문이다.
(4) 단계 S120, S121, S126, S134 및 S135에서는 프로세서코어(20)의 신호WRACK*는 버스동작을 종료하도록 어서트된다. 왜냐하면 A[31:20]=0xFF2와 라이트신호 WR*이 어서트(로우)되더라도 신호 DM이 정상모드를 나타내도록 로우이거나 또는 레지스터 DCR의 비트 MP가 라이트금지상태를 나타내도록 1이기 때문이다.
(5) 단계 S120, S122, S128 및 S129에서는 직렬모니터 버스의 코프로세서 리드동작이 시작된다. 왜냐하면 A[31:21]=0100_0000_010이고, 명령 CFC0에 대한 코프로세서 리드버스 동작신호 CPRD*가 어서트(로우)되고, 또한 신호 DM이 디버그모드를 나타내도록 하이레벨이기 때문이다.
(6) 단계 S120, S121, S122, S128, S136 및 S137에서는 프로세서코어(20)의 신호 CPRDACK*는 버스동작을 종료하도록 어서트된다. 왜냐하면 A[31:21]=0100_0000_010이고, 또한 명령 CFC0에 대한 신호 CPRD*가 어서트(로우)되더라도 신호 DM이 정상모드를 나타내도록 로우이기 때문이다.
(7) 단계 S120, S121, S122, S123, S130 및 S131에서는 직렬 모니터 버스의 코프로세서 리드동작이 시작된다. 왜냐하면 A[31:21]=0100_0000_110이고, 명령 CTC0에 대한 코프로세서 라이트버스 동작신호 CPWR*이 어서트(로우)되고, 또한 신호 DM이 디버그모드를 나타내도록 하이레벨이기 때문이다.
(8) 단계 S120, S121, S123, S138 및 S139에서는 프로세서코어(20)의 신호 CPWRACK*가 버스동작을 종료하도록 어서트된다. 왜냐하면 A[31:21]=0100_0000_110이고, 또한 명령 CTC0에 대한 신호 CPWR*이 어서트(로우)되더라도 신호 BM이 정상모드를 나타내도록 로우이기 때문이다.
제27도는 직렬모니터버스회로(34)의 리드동작을 나타내는 플로우챠트이다.
리드동작시에 직렬모니터버스컨트롤러(341)는 사이클 1에서 하이레벨 직렬모니터버스리드/라이트신호, 직렬모니터버스 바이트 인에이블신호 BE[3:0] 및 하이레벨 직렬모니터버스 데이터신호를 출력쉬프트레지스터(344)에 제공하고 데이터로드신호를 어서트한다.
명령 CFC0에 따른 코프로세서 리드버스 동작시에는 직렬모니터버스 컨트롤러(341)가 하이 레벨 직렬모니터버스 리드/라이트신호, 로우레벨 바이트 인에이블신호 및 하이레벨 직렬모니터버스 데이터신호를 출력쉬프트레지스터(344)에 제공하고, 데이터로드신호를 어서트한다. 쉬프트레지스터(344)는 이 값들과 LSB의 로우레벨을 래치한다.
출력신호 SBAO는 로우로 세트된다. 컨트롤러(341)는 사이클 2에서 출력쉬프트 신호를 어서트한다.
사이클 3∼25에서 컨트롤러(341)는 출력쉬프트신호를 어서트한다.
사이클 1에서 레지스터(344)에 의해 래치된 비트들은 출력신호 SDAO로서 클록주기당 1비트속도로 공급된다.
사이클 26∼n에서 컨트롤러(341)는 로우로 어서트된 입력신호 SDI를 기다린다.
사이클 n+1∼n+32에서 컨트롤러(341)는 직렬입력회로(343)에 대한 입력쉬프트 신호를 어서트하고, 입력신호 SDI는 입력쉬프트레지스터(345)로 입력데이터 D[0]∼D[31]를 반송한다.
사이클 n+33에서 컨트롤러(341)는 리드동작시에 프로세서버스의 리드확인신호 RDACK*를 어서트한다. 코프로세서 리드버스 동작시에 컨트롤러(341)는 코프로세서 리드확인신호 CPRDACK*를 어서트한다. 직렬입력회로(343)에 대한 출력인에이블 신호가 어서트되고, 입력쉬프트레지스터(345)내의 데이터 D[31:0]이 데이터버스입력신호 DIN[31:0]에 의해 반송된다.
제28도는 직렬모니터버스회로(34)의 라이트동작을 나타내는 플로우챠트이다.
라이트동작시 직렬모니터버스컨트롤러(341)는 사이클1에서 출력쉬프트레지스터(344)에 로우레벨 직렬모니터버스 리드/라이트신호, 직렬모니터버스 바이트 인에이블신호 BE[3:0] 및 직렬모니터버스 데이터신호 DOUT[31:0]을 제공하고, 데이터로드신호를 어서트한다.
명령 CTC0에 따른 코프로세서 라이트버스 동작시에 컨트롤러(341)는 레지스터(344)에 로우레벨 직렬모니터버스 리드/라이트신호, 로우레벨 4-비트 직렬모니터버스 바이트 인에이블신호 및 직렬모니터버스 데이터신호 DOUT[31:0]를 제공하고 데이터로드신호를 어서트한다. 레지스터(344)는 사이클1에서 LSB의 로우레벨과 이 값들을 래치한다.
사이클2에서 출력신호 SDAO는 로우로 세트된다. 컨트롤러(341)는 출력쉬프트신호를 어서트한다.
사이클 3∼57에서 컨트롤러(341)는 출력쉬프트신호를 어서트한다.
사이클 1에서 레지스터(344)에 의해 래치된 값들은 클록주기당 1비트의 속도로 출력신호 SDAO에 의해 반송된다.
사이클 58∼n에서, 컨트롤러(341)는 로우로 어서트된 입력신호 SDI를 기다린다.
사이클 n+1에서 컨트롤러(341)는 라이트동작시에 프로세서버스(80)에 대한 라이트확인신호WRACK*를 어서트한다. 만일 코프로세서버스 동작일 경우, 컨트롤러(341)는 코프로세서라이트확인신호CPWRACK*를 어서트한다.
프로그램카운터 트레이서(32)를 설명한다.
간접점프, 직접점프 및 브랜치는 다음과 같이 정의된다.
간접점프(indirect jump):
레지스터 또는 메모리내에 저장된 값이 점프의 타겟어드레스로서 사용된다. 즉, 점프명령 자체는 점프의 타겟어드레스를 특정하지 않는다.
직접점프(direct jump):
점프명령의 타겟어드레스는 명령내에 포함된 코드와 프로그램카운터에 의해 특정된다.
브랜치(branch: 또는 조건브랜치):
이는 목적지가 프로그램카운터와 명령내에 포함된 코드들의 부분들의 합에 의해 특정되는 점프명령이다 브랜치가 실제 수행되는지의 여부는 조건에 따라 결정된다. 만일 브랜치가 실제 실행되면 그것은 “취득브랜치(branch taken)”라 하고, 만일 실행되지 않으면 “비취득브랜치(branch not taken)”라 한다.
제29도는 프로그램카운터 트레이서(32)의 상세도이다. 트레이서(32)는 프로세서코어(20)로부터 다음 신호들을 수신한다.
디버그모드신호 DM:
이 신호는 현재의 모드가 디버그모드인지 또는 정상모드인지를 나타낸다.
파이프라인 (pipeline) 실행신호:
이 신호는 명령의 실행을 나타낸다.
30비트 타겟프로그램카운터 [31:2] 신호:
이 신호는 브랜치명령 또는 점프명령의 타겟어드레스 또는 예외의 벡터어드레스를 나타내고, 또한 후술되는 간접점프신호, 직접점프신호, 브랜치취득신호, 예외원인신호가 어서트될때 인에이블된다.
간접점프신호:
이 신호는 간접점프가 실행되었음을 나타낸다.
직접점프신호:
이 신호는 직접점프신호가 실행되었음을 나타낸다.
브랜치취득신호:
이 신호는 브랜치명령이 실행되어 브랜치가 취득(taken)되었음을 나타낸다.
예외발생신호:
이 신호는 예외가 발생되었음을 나타낸다.
트레이서(32)는 프로세서코어(20)에 다음 신호들을 제공하여 프로그램카운터를 완전히 트레이스한다.
파이프라인스톨요구(stall request) 신호:
이 신호는 프로세서코어(20)의 파이프라인 처리를 스톨하여 타겟 프로그램카운터가 출력을 완전히 제공하게 한다. 만일 트레이서(32)가 간접점프의 타겟프로그램카운터 신호를 수신하는 동안 그 다음 간접점프가 발생하면, 트레이서(32)는 프로세서코어(20)의 파이프라인 처리를 스톨하도록 파이프라인 스톨요구 신호를 어서트한다. 타겟프로그램카운터신호가 일단 완료되면 파이프라인 스톨요구신호가 취소(negate)되고, 파이프라인 처리를 계속한다.
트레이서(32)는 명령/데이터어드레스 차단회로(31) 또는 프로세서버스차단회로(33)로부터 트리거 요구를 수신한다. 트레이서(32)는 레지스터 DCR의 비트 TM과 디버그 인에이블신호 DBGE*를 수신한다. 만일 신호 DBGE*가 로우로 어서트되면 디버거(60)가 유효함을 나타낸다.
트레이서(32)는 정상모드하에서 프로세서코어(20)에 의해 제공된 프로그램카운터 트레이스 정보를 디버거(60)에 공급되는 1비트 프로그램카운터 출력 TPC와 3비트상태신호 PCST[2:0]으로 변환한다.
이하 신호 PCST[2:0]과 TPC를 설명한다.
(a) PCST[2:0]
명령의 실행상태는 클록주기당 1비트속도로 신호 PCST[2:0]에 의해 반송된다(0: 로우, 1 : 하이).
111 : 파이프라인 스톨상태(STL)
이 상태는 트레치스트리거 요구가 없을 때 명령의 실행이 종료되지 않았음을 나타낸다.
110 : 브랜치/점프 취득상태(JMP)(프로그램카운터 출력과 함께)
이 상태는 취득브랜치 또는 점프명령이 실행되었음을 나타내며, 이들의 타겟어드레스는 신호 TPC에 의해 반송된다.
101 : 브랜치/점프취득상태(BRT)(프로그램카운터 출력없이)
이 상태는 취득브랜치 또는 직접점프명령이 실행되었음을 나타내며, 타겟어드레스는 신호 TPC에 의해 반송되지 않는다.
100 : 예외상태(EXP)(예외벡터코드 출력과 함께)
이 상태는 예외가 빌생했음을 나타내며, 예외벡터코드는 신호 TPC에 의해 반송된다.
011 : 순서실행상태(SEQ)(명령실행)
이 상태는 명령이 상태 JMP, BRT 또는 TSQ하에서 실행되지 않았음을 나타낸다. 이 상태는 또한 브랜치명령이 취득되지 않았을 때 성립된다.
010 : 파이프라인 스톨내의 트레이스트리거 출력상태(TST)
이 상태는 어드레스 트레이스트리거 또는 프로세서버스 트레이스트리거가 명령이 실행되고 있는 상태의 클록에서 생겼음을 나타낸다.
001 : 실행시 트레이스트리거 출력상태(TSQ)
이 상태는 명령의 실행이 종료된 클록에서 어드레스 트레이스트리거 또는 프로세서버스 트레이스트리거가 발생했음을 나타낸다.
000 : 디버그모드(DBM)
이 상태는 정상모드하에서 이루어질 수 없다.
신호 TPC는 브랜치 또는 점프명령의 타겟어드레스를 제공하기 위해 사용된다. 신호 PCST[2:0]이 상태 “110”(JMP)를 나타내는 클록에서 타겟어드레스는 클록주기당 1비트의 속도로 하위비트 A[2]로부터 제공된다.
신호 PCST[2:0]가 상태 “100”(EXP)를 나타내는 클록에서, 3비트 예외벡터 코드가 하위비트로부터 코드(0), 코드(1) 및 코드(2)의 순서로 클록주기당 1비트의 속도로 제공된다. 예외벡터어드레스 및 3비트 코드는 다음과 같다.
타겟어드레스는 신호 TPC에 의해 1비트씩 직렬로 반송되기 때문에, 그 다음 브랜치 명령, 점프 명령 또는 예외는 현재의 브랜치/점프 명령이 신호 TPC에 의해 반송되고 있는 동안에 발생할 수 있다. 신호 TPC에 의해 반송되는 타겟어드레스의 우선순위는 다음과 같다.
(a) 만일 타겟프로그램 카운터신호가 제공되는 동안 새로운 간접점프 명령이 발생될 경우 이 타겟프로그램 카운터신호는 종료되고 새로운 간접점프명령에 대한 타겟프로그램 카운터신호가 시작된다.
(b) 만일 타겟프로그램 카운터신호가 제공되는 동안 예외가 발생하면, 타겟프로그램 카운터신호는 중지되고 예외의 3비트 벡터번호가 제공되며, 그 후 중지된 신호가 계속된다.
(c) 만일 타겟프로그램 카운터신호가 제공되는 동안 새로운 직접 점프 또는 브랜치명령이 발생할 경우, 직접 점프 또는 브랜치명령의 타겟 어드레스는 제공되지 않는다. 타겟프로그램 카운터신호가 제공되지 않을 경우에만, 직접 점프 또는 브랜치명령에 대한 타겟프로그램 카운터신호가 제공된다.
프로그램카운터 트레이스 출력의 예들을 도면을 참조하여 이하에서 설명한다.
(예 1) 브랜치명령의 프로그램카운터 트래이스
제30도는 브랜치명령에 대한 프로그램카운터 트레이스 신호의 일예를 나타낸다.
제1취득브랜치명령 “beq”가 실행될 때, 출력신호 TPC는 타겟프로그램 카운터신호를 반송하지 않고 있다. 따라서 신호 PCST[2:0]는 상태 JMP를 나타내며, 신호 TPC는 명령 “beq”에 대한 타겟프로그램 카운터신호의 반송을 시작한다. 비취득 브랜치명령 “bne”에 응답하여 신호 PCST[2:0]은 코드 SEQ를 나타낸다. 제2취득브랜치명령 “bne”에 응답하여 신호 TPC는 제1브랜치명령 “beq”에 대한 타겟프로그램 카운터신호를 반송하기 때문에 신호 TPC에 의해 타겟프로그램 카운터신호가 반송된다. 이 때 신호 PCST[2:0]는 상태 BRT를 나타낸다.
(예 2) 간접점프명령의 프로그램카운터 트래이스
제31도는 간접점프명령에 대한 프로그램카운터 트래이스 신호의 일예도이다.
제1간접점프명령 “jrl”에 응답하여 신호 PCST[2:0]는 상태 JMP를 나타내며, 신호 TPC는 타겟프로그램 카운터신호를 반송하기 시작한다. 비취득브랜치명령 “bne”에 응답하여 신호 PCST[2:0]는 상태 SEQ를 나타낸다. 제2간접점프명령 “jr2”에 응답하여 신호 TPC는 제1간접점프명령 “jr1”에 대한 타겟프로그램 카운터신호를 반송하는 것을 정지하고, 제2명령 “jr2”에 대한 타겟프로그램 카운터신호를 반송하기 시작한다. 이 때 신호 PCST[2:0]는 상태 JMP를 나타낸다.
(예 3) 예외 및 간접점프명령의 프로그램카운터 트래이스
제32도는 예외 및 간접점프명령에 대한 프로그램카운터 트래이스의 일예를 나타낸다.
소프트웨어 차단명령 “break”에 응답하여 예외가 발생하고, 신호 PCST[2:0]는 상태 EXP를 나타낸다. 이 때 신호 TPC는 예외벡터코드를 반송하기 시작한다. 비취득브랜치명령 “bne”에서 신호PCST[2:0]는 상태 SEQ를 나타낸다. 간접점프명령 “jr2”에서 신호 TPC는 이 명령 “jr2”에 대한 타겟프로그램 카운터신호를 반송하고 신호 PCST[2:0]는 상태 JMP를 나타낸다.
신호 PCST[2:0]의 트레이스트리거상태 TSQ 또는 TST에 대해 이하에서 설명한다.
버스사이클에서 어드레스와 데이터가 일치할 경우, 명령/데이터 어드레스 차단 또는 프로세서버스 차단이 발생하여 신호 PCST[2:0]가 상태 TSQ 또는 TST를 나타내도록 한다.
명령어드레스 트레이스트리거요구, 데이터어드레스 트레이스트리거요구, 또는 프로세서버스 트레이스트리거요구가 행해지면 신호 PCST[2:0]는 상태 TSQ 또는 TST를 나타낸다. 만일 신호 PCST[2:0]가 상태 JMP, BRT 또는 EXP를 나타내면, 상태 TSQ 또는 TST는 지연된다. 만일 트레이스트리거요구가 없으면, 신호 PCST[2:0]는 상태 SEQ 또는 STL을 나타낼 클록주기에서 상태 TSQ 또는 TST를 나타낼 수 있다.
(3) 명령/데이터어드레스 트레이스트리거
명령/데이터어드레스 트레이스트리거가 발생하면 신호 PCST[2:0]는 상태 TSQ를 나타낸다. 만일 트레이스트리거가 취득브랜치명령, 점프명령 또는 신호 PCST[2:0]가 상태 SEQ를 나타내지 않게 하는 명령에 의해 발생할 트레이스트리거의 출력은 지연된다. 트레이스트리거 요구가 없을 경우, 신호 PCST[2:0]는 상태 SEQ 또는 STL을 나타내도록 되어 있던 클록에서 상태 TSQ 또는 TST를 나타낸다.
(예 1)명령/데이터어드레스 트레이스트리거의 예
제33도는 명령/데이터어드레스 트레이스트리거의 일예를 나타낸다.
명령 트레이스트리거 또는 데이터어드레스 트레이스트리거를 발생시키는 명령 “add”에 응답하여 신호 PCST[2:0]는 상태 TSQ를 나타낸다.
(예 2) 예외로 인한 명령/데이터어드레스 트레이스트리거의 예
제34도는 예외로 인한 명령/데이터어드레스 트레이스트리거의 일예를 나타낸다.
만일 소프트웨어 차단명령 “break”가 명령어드레스 트레이스트리거 또는 데이터어드레스 트레이스트리거를 발생시키면 신호 PCST[2:0]는 상태 EXP를 나타내고, 그 다음 클록에서는 파이프라인 스톨에 대한 트레이스트리거상태 TST를 나타낸다.
(예 3) 간접점프명령으로 인한 명령/데이터어드레스 트레이스트리거의 예
제35도는 간접점프명령으로 인한 명령/데이터어드레스 트레이스트리거의 일예를 나타낸다.
간접점프명령 “jr2”가 명령어드레스 트레이스트리거 또는 데이터어드레스 트레이스트리거를 발생시키면, 신호 PCST[2:0]는 상태 JMP를 나타내고, 그 다음 클록에서는 명령 실행조건에 대한 트레이스트리거 상태 TSQ를 나타낸다.
(b) 프로세서버스 트레이스트리거
프로세서버스 트레이스트리거요구가 이루어지면, 신호 PCST[2:0]는 상태 TSQ 또는 TST를 나타낸다. 만일 신호 PCST[2:0]가 상태 JMP, BRT 또는 EXP를 나타내고 있으면 트레이스트리거 상태 TSQ 또는 TST는 지연된다. 트레이스트리거 요구가 없으면 신호 PCST[2:0]가 상태 SEQ 또는 STL을 나타내도록 되어 있던 클록에서 신호 PCST[2:0]는 상태 TSQ 또는 TST를 나타낸다.
디버그모드상태 DBM의 발생을 이하에서 설명한다.
프로세서코어(20)가 디버그예외 또는 디버그리셋을 발생시키면 디버그모드신호 DM이 하이로 어서트되어 디버그모드로 들어간다. 그 다음 트레이서(32)는 디버그모드상태 DBM을 나타내는 신호 PCST[2:0]를 제공한다.
제36도는 디버그예외가 발생할 때의 신호 PCST[2:0]의 출력타이밍을 나타낸다.
타겟프로그램 카운터신호가 제공되지 않으면, 디버그예외를 발생시킨 명령이 종료된 직후에 디버그모드가 시작된다. 디버그예외의 발생직전에 프로그램카운터 트레이스정보가 제공된다.
제37도는 디버그예외 발생시 타겟프로그램 카운터 신호가 제공될 경우의 신호 PCST[2:0]의 타이밍을 나타낸다.
이 경우에 디버그모드는 타겟프로그램 카운터신호의 종료후 시작한다. 디버그예외의 발생직전 명령까지의 프로그램카운터 트레이스 정보가 제공된다. 타겟프로그램 카운터신호가 제공되는 동안 신호 PCST[2:0]는 상태 STL을 나타낸다.
제38도는 디버그모드로부터 리턴된 때의 신호 PCST[2:0]의 타이밍을 나타낸다.
디버그모드는 디버그예외 또는 디버그모드로부터 리턴명령 DERET의 브랜치지연슬롯(branch delay slot) 명령이 제공될 때까지 계속한다. 정상모드는 명령 DERET의 타겟인 명령으로부터 시작하여 프로그램카운터 트래이스를 인에이블한다.
제29도를 다시 참조하여 트레이스를 설명한다.
트레이스는 프로그램카운터 트레이스컨트롤러(321), 타겟프로그램 카운터 쉬프트레지스터(322), 예외벡터코더(323), 예외코드쉬프트레지스터(324) 및 선택기(325)를 갖는다.
컨트롤러(321)는 예외코드출력상태비트(326)와 타겟프로그램카운터 출력 카운터(329)를 갖는다.
트레이서(32)의 동작을 설명한다.
표 3은 레지스터 DCR의 비트 TM이 0일 경우 신호 PCST[2:0]의 출력을 나타낸다. 표 3에서 “1”은 액티브(active) 상태 “x”는 “don't care”상태를 나타낸다.
[표 3]
이 표에서 트리거 요구 신호는 명령어드레스 트레이스트리거 요구신호, 데이터 어드레스 트레이스트리거 요구신호 및 프로세서버스 트레이스 트리거 요구신호의 OR값이다.
5비트 카운터(327)이 0이 아닐 경우, 신호 TPC가 제공되고 있음을 나타낸다. 예외코드출력상태비트(326)가 1일 경우 예외벡터코드가 제공된다. 표 3에서 카운터(327)가 0이 아닌 경우 또는 예외코드출력상태비트(326)가 1인 경우, 내부상태 “TPC 또는 예외코드 출력”은 1이 된다. 카운터(327)는 다음과 같이 갱신된다.
(1) 신호 TPC가 타겟프로그램 카운터신호를 반송하지 않을 경우 또는 새로운 프로그램카운터 신호가 제공될 경우 카운터(327)는 0으로 소거된다.
(2) 신호 TPC가 예외벡터를 반송하고 있는 경우, 프로그램카운터 신호가 제공되고 있음을 나타내는 내부상태와 카운터(327)는 그대로 유지된다.
(3) 카운터(327)값이 30에 도달하면 카운터(327)는 0으로 된다. 이는 타겟프로그램카운터의 출력이 종료됨을 나타낸다.
(4) 상기 경우 (1), (2) 및 (3) 이외의 경우에 카운터(327)는 1씩 증가된다. 이 때 신호 TPC는 타겟프로그램 카운터신호를 반송하고 있다.
예외가 발생할 때, 예외코드출력상태비트(326)는 3클록주기동안 예외 코드가 제공되고 있음을 나타내는 내부상태를 어서트한다. 상태비트(326)가 어서트되면 예외코드 쉬프트 신호와 예외코드 출력 스위치 신호가 어서트된다. 신호 PCST[2:0]가 상태 EXP를 나타낼때 예외코드로드 신호가 어서트된다. 이 때 예외벡터코더(323)의 출력이 예외코드쉬프트레지스터(324)에 로드된다. 타겟프로그램 카운터로드신호가 어서트되고, 신호 PCST[2:0]은 상태 JMP를 나타낸다. 그 다음 타겟프로그램 카운터의 값이 타겟프로그램카운터쉬프트레지스터(322)에 로드된다. 타겟프로그램카운터쉬프트신호는 카운터(327)가 0이 아닐 때와 상태비트(326)가 어서트되지 않을 때 어서트된다.
레지스터 DCR의 비트 TM이 1일 경우, 프로그램카운터 트레이스는 완전히 실행된다. 만일 신호 DBGE*가 어서트되면 비트 TM이 세트되고, 간접점프에 대한 타겟프로그램카운터 신호가 제공되고 있는 동안 그 다음 간접 점프가 발생하고, 컨트롤러(321)는 파이프라인스톨요구신호를 어서트하여 프로세서코어(20)의 파이프라인 처리를 스톨한다. 현재의 타겟프로그램카운터가 완전히 제공되면 파이프라인스톨요구신호는 취소(negate)되어 파이프라인 처리를 계속한다.
표 4는 비트 TM이 1인 신호 PCST[2:0]의 출력을 나타낸다. 표 4에서 “1”은 액티브(active) 상태를 “x”는 “don't care”상태를 나타낸다.
[표 4]
타겟프로그램카운터 신호 또는 예외코드가 제공되고 있는 동안 간접 점프의 실행으로 인해 간접점프신호가 액티브로 될 경우, 프로세서코어(20)에 대한 파이프라인스톨요구신호가 유효화된다. 타겟프로그램카운터 신호 또는 예외코드가 제공되고 있음을 나타내는 내부상태는 타겟프로그램카운터신호의 시작 후 30 클록주기동안 액티브가 된다.
타겟프로그램카운터 쉬프트레지스터(322)는 컨트롤러(321)로부터의 타겟프로그램 카운터로드신호가 어서트될 때 타겟프로그램카운터출력값을 로드한다. 레지스터(322)는 컨트롤러(321)로부터의 타겟프로그램카운터 쉬프트신호가 어서트될 때 1비트씩 MSB로부터 LSB쪽으로 쉬프트한다.
예외벡터코더(323)는 다음과 같이 벡터 어드레스의 비트들A[29], A[8] 및 A[7]에 따라 예외 벡터 어드레스를 인코드한다.
코더(323)는 예외코드쉬프트레지스터(324)에 타겟프로그램카운터 출력의 어드레스 비트들A[29], A[8] 및 A[7]을 제공한다.
레지스터(324)는 컨트롤러(321)로부터의 예외코드로드신호가 어서트될 때 코더(323)로부터 예외벡터코드를 로드한다. 컨트롤러(321)로부터 예외코드쉬프트 신호가 어서트되면 예외코드쉬프트레지스터(324)의 값이 MSB로부터 LSB쪽으로 1비트씩 쉬프트된다.
선택기(325)는 컨트롤러(321)로부터의 예외코드 출력스위치 신호가 어서트될 때 레지스터(324)의 LSB를 신호 TPC에 제공한다. 예외코드출력 스위치신호가 무효되면 선택기(325)는 레지스터(322)의 LSB를 신호 TPC에 제공한다.
다음에는 트레이서(32)의 동작에 대해 타이밍차트를 참조하여 설명한다.
제39도는 타겟프로그램 카운터신호가 제공될 때의 트레이서(32)의 동작을 나타낸다.
카운터(327)가 0을 갖고 있을 때와 간접점프신호, 직접점프신호 또는 취득된 브랜치신호가 어서트될 때, 컨트롤러(321)는 타겟프로그램 카운터 로드신호를 어서트한다.
그 다음 클록에서 LSB 즉, 레지스터(322)에 로드된 타겟어드레스의 A(2)가 신호 TPC에 공급된다. 동시에 신호 PCST[2:0]는 상태 JMP를 나타내고, 컨트롤러(321)는 타겟프로그램 카운터 쉬프트신호를 어서트한다.
결과적으로 레지스터(322)는 MSB에서 LSB쪽으로 1비트씩 쉬프트되고, 그 다음 클록에서 신호 TPC에 비트 A[3]이 제공된다. 타겟프로그램카운터 쉬프트신호는 카운터(327)가 30을 카운트할 때까지 프로그램카운터 출력을 신호 TPC에 제공하도록 계속 어서트된다. 카운터(327)가 30을 카운트하면 카운터(327)는 0으로 소거되고, 타겟프로그램 카운터 쉬프트신호는 무효되어 신호 TPC에 대한 타겟프로그램 카운터출력을 종료한다.
제40도는 타겟프로그램 카운터신호가 제공되고 있는 동안 그 다음의 간접점프가 발생할 때의 트레이서(32)의 동작을 나타낸다.
제2간접점프가 발생할 메, 카운터(327)는 0으로 소거되고, 타겟프로그램 라운터 로드신호가 어서트된다. 그 다음 클록에서 LSB 즉 레지스터(322)에 로드된 타겟어드레스의 비트 A[2]가 신호 TPC에 제공된다. 이와 동시에 신호 PCST[2:0]는 상태 JMP를 나타내며, 또한 컨트롤러(321)는 타겟프로그램 카운터쉬프트신호를 어서트한다. 그 다음 클록으로부터 타겟어드레스가 매 사이클마다 신호 TPC에 제공된다.
제41도는 타겟프로그램 카운터신호가 제공되고 있는 동안 예외가 발생할 때의 동작 타이밍을 나타낸다.
타겟프로그램 카운터신호가 제공되고 있는 동안 만일 예외발생신호가 어서트되면 예외코드로드신호는 예외코드쉬프트레지스터(324)에 예외코드를 로드하도록 어서트된다. 그 다음 클록으로부터 예외코드출력상태비트(326), 예외코드쉬프트신호 및 예외코드출력스위치신호가 어서트된다.
예외코드는 3클록주기동안 제공된다. 이 주기동안 타겟프로그램카운터 쉬프트신호는 무효된다. 상태비트(326)와 예외코드스위치신호가 무효되면 타겟프로그램 카운터신호가 신호 TPC에 의해 다시 반송된다.
제42도는 외부인터페이스회로(36)의 상세도를 나타낸다.
외부인터페이스회로(36)는 DBM코드검출기(361), 선택기(362, 363), 마스크회로(364, 365, 366), 출력버퍼(367A, 367B, 367C), 풀업저항(pull up resistor) 입력버퍼(368A, 368B, 368C) 및 입력버퍼(369A, 369B)를 갖는다. DBM코드검출기(361)는 신호 PCST[2:0]가 디버그모드상태 DBM(000)를 나타낼 때 출력신호를 어서트한다.
선택기(362)는 DBM코드검출기(361)의 출력이 어서트될 때 즉, 디버그모드일 때 주파수분할된 클록신호 CLK2를 제공하고, 또한 DBM코드검출기(361)의 출력이 무효될 때, 즉 정상모드일 때 코어클록신호 CLK를 제공한다.
선택기(363)는 DBM코드검출기(361)의 출력이 어서트될 때 즉, 디버그모드일 때 직렬모니터버스회로(34)의 출력 SDAO를 제공하며, 또한 DBM코드검출기(361)의 출력이 무효일 때 즉, 정상모드일 때 트레이서(32)의 신호를 제공한다.
디버그모드시에 마스크회로(364)는 프로세서코어(20)에 대한 입력신호 DINT*가 항상 무효되도록 외부입력신호 DINT*/SDI를 마스크한다.
레지스터 DCR의 비트 MInt가 0일때, 마스크 회로(365)는 프로세서코어(20)에 신호 Int[5:0]를 세트하여 인터럽트를 마스크한다.
레지스터 DCR의 비트 MRst가 0일 때, 마스크회로(366)는 디버그예외 취급기의 실행동안(신호 DM이 하이) 유저리셋신호 RESET*를 마스크 한다.
출력버퍼(367A)는 선택기(362)의 출력을 신호 DCLK로서 외부에 제공한다. 출력버퍼(367B)는 선택기(363)의 출력을 신호 TPC/SDAO로서 외부에 제공한다. 출력버퍼(367C)는 트레이서(32)의 신호 PCST[2:0]를 외부신호 PCST[2:0]로서 외부에 제공한다.
풀업저항입력버퍼(368A)는 외부신호 DINT*/SDI를 수신한다. 이 버퍼는 풀업저항을 가지므로, 그 출력은 외부신호 DINT*/SDI가 차단될 때 항상 하이레벨이다. 풀업저항입력버퍼(368B)는 외부신호 DBGE*를 수신한다. 이 버퍼는 풀업저항을 갖기 때문에 그 출력은 외부신호 DBGE*가 차단될 경우 항상 하이레벨이다. 풀업저항입력버퍼(368C)는 외부신호 DRESET*를 수신한다. 이 버퍼는 풀업저항을 갖기 때문에 그 출력은 외부신호 DRESET*가 차단될 경우 항상 하이레벨이다.
이 외부신호들 DINT*/SDI, DBGE* 및 DRESET*는 디버거(60)가 차단될 때 차단된다. 그 다음 이 신호들은 하이레벨 내부신호를 형성하고 디버그모듈의 기능은 디스에이블된다.
입력버퍼(369A)는 외부인터럽트신호 INT[5:0]*을 수신한다. 입력버퍼(369B)는 외부유저리셋신호 RESET*를 수신한다.
제44도는 본 발명의 다른 실시예에 의한 마이크로 프로세서와 디버그시스템을 나타낸다.
이 실시예는 마이크로 프로세서(10)가 메모리(90)와 주변회로(100)를 포함하고 있는 것을 특징으로 한다. 이 실시예의 다른 구성은 제1실시예와 동일하다.
프로세서코어(20)는 내부프로세서버스(80)를 통해 메모리(90)로부터 프로그램을 리드하고, 리드한 프로그램을 실행하고, 메모리(90)로부터 또는 메모리(90)에 데이터를 리드 또는 라이트하고, 또한 주변회로(100)를 억세스한다. 디버그모드하에서 프로세서코어(20)는 디버그모듈(30)을 통해 디버거(60)의 모니터 프로그램을 실행한다.
만일 디버그모듈(30)과 디버거(60)의 인터페이스신호의 기능 및 타이밍이 서로 동일하면 제1실시예의 디버거(60)는 포함되어 있는 메모리(90)와 주변회로(100)의 차이와 무관하게 제2실시예에도 사용할 수 있다.
만일 제2실시예의 프로세서코어(20)의 기능이 제1실시예에서와 동일하면, 제1실시예와 동일한 모니터 프로그램이 제2실시예에도 사용될 수 있다.
상기 2 실시예들은 각각 명령/데이터 어드레스 차단채널과 프로세서버스 차단채널을 사용한다. 본 발명은 이러한 구성에 한정되지 않고 2 이상의 채널을 사용할 수도 있다. 제43도는 15 명령어드레스 차단채널을 포함하는 레지스터 IBS를 나타낸다.
상기 2 실시예들은 각각 1 비트폭(bit-width)을 갖는 직렬모니터버스를 사용한다. 본 발명은 이러한 구성에 한정되지 않는다. 비트폭은 마이크로프로세서 외부신호들이 직렬모니터버스용으로 사용되는 경우 2 이상일 수도 있다.
상기 2 실시예들은 각각 타겟프로그램카운터의 출력을 반송하기 위한 외부신호를 사용한다. 본 발명은 이러한 구성에 한정되지 않는다. 타겟프로그램카운터의 출력은 가능한 경우 복수의 외부신호들에 의해 반송될 수도 있다.
상기 2 실시예들에 의하면, 클록발생기(37)는 프로세서코어용 클록신호 CLK의 주파수를 반분한다. 본 발명은 이것으로 제한되지 않는다. 직렬모니터버스회로용 클록신호의 주파수는 클록신호 CLK와 동일하거나 또는 그 정수배 또는 2승일 수 있다.
상술한 바와 같이, 본 발명은 여러 가지 기능을 갖는 디버그 장치의 하드웨어를 공유할 수 있을 뿐만 아니라 디버그장치에 접속되는 신호들의 수를 감소시킬 수 있다. 종래 기술은 예를 들어 30 어드레스 신호, 4바이트 인에이블신호, 리드신호, 라이트신호, 리드확인신호, 라이트확인신호 및 32데이터신호, 즉 총 70 신호들을 사용하여 유저타겟시스템을 디버거에 접속한다. 한편, 본 발명은 유저타겟시스템을 디버거에 접속하기 위해 단 8신호만 필요하다. 이 때문에 프로브(probe)의 수를 줄여 비용을 줄일 수 있다.
본 발명에 의하면, 유저타겟시스템상의 마이크로프로세서는 메모리들과 I/O유닛들을 억세스하므로 디버그장치의 타이밍에 대한 조건이 쉬워진다. 디버그장치에 접속되지 않은 신호들은 디버거에 의해 영향을 받지 않는다. 본 발명은 마이크로프로세서의 동작속도가 지나치게 고속일 경우, 디버그장치와 마이크로프로세서간의 통신속도를 늦출 수 있다.
제2도의 종래 기술에 비교하면, 본 발명은 유저메모리들을 사용하지 않고, 디버그장치상의 메모리내에 모니터프로그램을 저장시킨다. 타겟시스템의 모니터를 시작하기 위해 본 발명은 유저인터럽트들을 제한시키지 않고 한정된 디버그예외와 디버그 리셋을 사용한다. 유저타겟시스템은 디버그용 직렬인터페이스를 가질 필요가 없다. 본 발명은 하드웨어차단점을 사용할 수 있다.
제3도의 종래 기술과 비교하면, 본 발명은 마이크로프로세서내에 시퀀서가 설치될 필요가 없으므로 디버그용 논리회로를 간략화할 수 있다.
본 발명은 레지스터들을 억세스하기 위해 모니터프로그램을 사용하기 때문에 모니터프로그램을 수정하기만 하면 추가 레지스터도 억세스할 수 있다.
요약하면, 본 발명은 유저타겟시스템의 마이크로프로세서에 디버그기능을 제공하므로, 디버거와 타겟시스템을 접속하는 신호들을 줄일 수 있다. 디버그작업동안 본 발명은 타겟시스템의 마이크로프로세서를 동작시켜 타겟시스템의 메모리와 I/O유닛을 쉽게 억세스할 수 있다.
본 발명에 의하면, 디버그장치와 디버그모듈내의 제어레지스터는 정상모드하에서 유저프로그램의 실행동안 억세스될 수 없으므로, 디버그장치의 메모리와 레지스터가 유저프로그램에 의해 절대 손상되지 않기 때문에 시스템의 신뢰성을 향상시킬 수 있다.
본 발명은 디버그모드 시작후에라도 디버그장치와 디버그모듈의 제어레지스터들의 억세스를 금지한다. 만일 디버그모드를 시작하는 디버그 예외가 발생할 때 디버그장치 또는 디버그모듈의 제어레지스터에 대한 유저프로그램의 라이트동작이 완료되지 않은 경우, 라이트동작은 레지스터 DCR의 비트 MP를 세팅함으로서 금지된다. 이에 의해 디버그장치의 메모리들과 레지스터들이 유저프로그램에 의해 실수로 파괴되는 것을 방지할 수 있으므로 디버그시스템의 신뢰성을 향상시킬 수 있다.
본 발명에 의하면, 디버그모드하에서 명령 CTC0에 의한 디버그장치에 대한 라이트동작은 비트 MP의 값과 무관하게 항상 허용된다. 모니터 영역의 어드레스는 메모리 라이트명령과 별도로 준비되기 때문에 범용레지스터를 반드시 사용할 필요는 없다.
따라서, 범용레지스터의 내용은 라이트동작에 의해 절대 파괴되지 않으며, 범용레지스터의 값은 디버그예외 발생직후 디버그장치의 메모리내에 보존(save)될 수 있다. 이러한 식으로 본 발명의 디버그장치는 유저의 범용 레지스터의 내용을 결코 파괴하지 않으므로 디버그시스템의 양호한 투명성을 실현할 수 있다.
본 발명은 디버그기능을 유저타겟시스템의 마이크로프로세서에 제공하므로, 프로그램카운터 트레이스출력을 전달하는 인터페이스 신호를 제거할 수 있다.
본 발명은 유저타겟시스템의 마이크로프로세서에 디버그기능을 제공하므로 최소한의 하드웨어로 트리거 기능을 실현한다.
본 발명의 개시에 의하여, 본 발명의 본질을 벗어나지 않는 범위내에서 여러 가지의 수정변경이 가능함을 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 이해할 수 있을 것이다.
Claims (25)
- 유저 타게트시스템을 오류 수정하는 유저 프로그램과 모니터 프로그램을 실행하는 프로세서코어와, 상기 프로세서코어에 적어도 내부디버그인터페이스와 프로세서버스 중의 하나를 통해 접속되며, 또한 상기 프로세서코어가 모니터 프로그램을 실행하도록 디버그장치와의 인터페이스로서 역할하는 인터페이스수단과, 유저프로그램으로부터 모니터 프로그램으로 상기 프로세서 코어를 스위치하도록 상기 프로세서코어에 인터럽트와 예외 중 하나를 요구하는 제어수단을 갖는 디버그모듈을 구비하고, 상기 디버그모듈은 프로세서버스를 통해 상기 프로세서코어에 접속되어 상기 프로세서코어가 디버그장치 내에 기억된 모니터 프로그램을 실행할 때 디버그장치와의 인터페이스로서 역할하는 직렬모니터버스회로와, 상기 디버그모듈의 기능을 제어하도록 상기 프로세서코어에 의해 억세스되는 정보를 기억하는 레지스터회로와, 직렬 모니터 버스회로 및 프로세서코어의 디버그장치와의 인터페이스로서 역할하는 외부 인터페이스회로와, 상기 디버그장치에 마이크로프로세서와 디버그장치 간에 전송되는 신호의 전송속도를 한정하는 클록신호를 제공하는 클록신호발생기를 갖는 것을 특징으로 하는 마이크로프로세서.
- 유저타게트시스템을 오류수정하기 위한 모니터프로그램을 갖는 디버그장치와, 유저프로그램과 모니터프로그램 중의 하나를 실행하는 프로세서코어와, 상기 프로세서코어에 적어도 내부디버그인터페이스와 프로세서버스 중의 하나를 통해 접속되며, 또한 상기 프로세서코어가 모니터프로그램을 실행하도록 디버그장치와의 인터페이스로서 역할하는 인터페이스수단과 유저프로그램으로부터 모니터프로그램으로 상기 프로세서코어를 스위치하도록 상기 프로세서코어에 인터럽트와 예외 중 하나를 요구하는 제어수단을 갖는 디버그모듈을 포함하는 마이크로프로세서와, 유저타게트시스템 내의 프로세서버스를 통해 상기 마이크로프로세서에 접속되며, 또한 상기 마이크로프로세서가 유저프로그램을 실행하는데 필요한 정보를 기억하는 메모리와, 유저타게트시스템 내의 프로세서버스를 통해 상기 마이크로프로세서에 접속되는 I/O유니트를 포함하고, 상기 마이크로프로세서의 디버그모듈은 프로세서버스를 통해 상기 프로세서코어에 접속되어 상기 프로세서코어가 디버그장치 내에 기억된 모니터프로그램을 실행할 때 디버그장치와의 인터페이스로서 역할하는 직렬 모니터버스회로와, 상기 디버그모듈의 기능을 제어하도록 상기 프로세서코어에 의해 억세스되는 정보를 기억하는 레지스터회로와, 직렬 모니터버스회로 및 프로세서코어의 디버그장치와의 인터페이스로서 역할하는 외부인터페이스회로와, 상기 디버그장치에 마이크로프로세서와 디버그장치간에 전송되는 신호의 전송속도를 한정하는 클록신호를 제공하는 클록신호발생기를 갖는 것을 특징으로 하는 디버그시스템.
- 제1항에 있어서, 상기 클록신호발생기는 주파수가 상기 프로세서코어를 구동시키는 클록신호의 주파수의 배수 또는 2승인 클록신호를 공급하는 것이 특징인 마이크로프로세서.
- 제1항에 있어서, 상기 디버그모듈은 부여된 신호들로서 디버그장치에 접속되는 것이 특징인 마이크로프로세서.
- 제1항에 있어서, 상기 디버그모듈은 일방향신호들로 디버그장치에 접속되는 것이 특징인 마이크로프로세서.
- 제1항에 있어서, 상기 프로세서코어가 특정 영역을 억세스할 때, 상기 디버그모듈이 소정간격으로 상기 프로세서코어로부터 디버그장치에 어드레스와 버스제어신호들을 순차 전송하며, 특정영역의 억세스가 기입억세스일 경우, 상기 디버그모듈이 소정간격으로 디버그장치에 데이타신호들을 순차전송하며, 특정영역의 억세스가 독출억세스일 경우, 상기 디버그모듈이 소정간격으로 디버그장치로부터 신호를 순차수신하고 멀티 비트 데이타 신호를 형성하여 상기 데이타신호를 상기 프로세서코어에 송출하는 것이 특징인 마이크로프로세서.
- 제6항에 있어서, 상기 소정간격들은 클록신호 발생기의 출력클록신호에 따라 한정되는 것이 특징인 마이크로프로세서.
- 제1항에 있어서, 상기 디버그모듈은 버스인터페이스신호들을 상기 프로세서코어로부터 상기 디버그장치에 제1전송라인을 통해 1비트씩 일련으로 전송하며 또한 디버그장치는 정보를 제2전송라인을 통해 상기 디버그모듈에 1비트씩 일련으로 전송하는 것이 특징인 마이크로프로세서.
- 제1항에 있어서, 상기 프로세서코어는 모니터프로그램을 시작하기 위해 예외 또는 리세트요구를 행할 때 이네이블할 모드신호를 가지며, 상기 디버그모듈은 모드신호가 이네이블될 때만 상기 프로세서코어가 상기 디버그모듈내의 디버그장치 또는 레지스터회로를 억세스하도록 허용하는 것이 특징인 마이크로프로세서.
- 제1항에 있어서, 상기 프로세서코어는 모니터프로그램을 시작하기 위한 예외 또는 리세트요구를 행할 때 이네이블할 모드신호를 가지며, 상기 디버그모듈은 이네이블시 모드신호가 이네이블되더라도 상기 프로세서코어가 상기 디버그모듈내의 디버그장치 또는 레지스터회로를 억세스하는 것을 금지하는 제어비트를 갖는 것이 특징인 마이크로프로세서.
- 제1항에 있어서, 상기 프로세서코어는 모니터프로그램을 시작하기 위한 예외 또는 리세트요구를 행할 시 이네이블되는 모드와, 데이타신호로서 범용레지스터의 값을 제공하여 제1기입신호를 이네이블하기 위한 제1기입명령과, 데이타신호로서 범용레지스터의 값을 제공하여 제2기입신호를 이네이블하기 위한 제2기입명령을 갖는 것이 특징인 마이크로프로세서.
- 제12항에 있어서, 상기 디버그모듈은 상기 프로세서코어가 상기 디버그모듈을 억세스하는 것을 금지하는 제어비트를 가지며, 상기 제어비트가 이네이블되는 경우 상기 제1기입신호에 의한 상기 디버그모듈로의 기입억세스가 금지되며, 상기 제2기입신호에 의한 상기 디버그모듈로의 기입억세스가 상기 제어비트와 무관하게 이네이블되는 것이 특징인 마이크로프로세서.
- 프로그램을 실행하는 프로세서코어와, 상기 프로세서코어에 내부디버그 인터페이스를 통해 접속되며 상기 프로세서코어에 의해 실행되는 명령의 어드레스를 나타내는 프로그램카운터신호를 나타내는 프로그램카운터신호를 제공하는 프로그램카운터트래이서를 포함하며, 상기 프로그램카운터신호를 전송하는 라인 수는 어드레스의 비트수보다 작은 것이 특징인 마이크로프로세서.
- 제13항에 있어서, 상기 프로세서코어는 간접점프명령을 실행할 시 간접점프신호를 검증하여 상기 프로그램카운터트래이서에 상기 간접점프명령의 타게트어드레스를 제공하며, 상기 검증된 간접점프신호를 수신할 시 상기 프로그램카운터트래이서는 타게트어드레스를 접수하여 그의 하위비트로부터 프로그램카운터 신호로서 타게트어드레스를 전송하며, 또한 타게트어드레스의 전송이 시작됐음을 나타내는 프로그램카운터 상태신호를 제공하는 것이 특징인 마이크로프로세서.
- 제13항에 있어서, 상기 프로세서코어는 예외 발생 시 예외신호를 검증하여 상기 프로그램카운터트래이서에 예외의 타게트어드레스를 제공하며, 상기 검증된 예외신호를 수신할 시 상기 프로그램카운터트래이서는 타게트어드레스를 접수하여 타게트어드레스를 타게트어드레스보다 적은 비트수의 정보로 인코드하여, 코드화된 정보를 프로그램카운터 신호로서 전송하며, 또한 타게트어드레스의 전송이 시작됐음을 나타내는 프로그램카운터 상태신호를 제공하는 것이 특징인 마이크로프로세서.
- 제14항에 있어서, 상기 프로세서코어는 상기 프로그램카운터트래이서가 제1간접점프명령의 타게트어드레스를 전송하는 동안 제2간접점프명령을 실행할때, 상기 프로세서코어는 제2간접점프명령을 실행할 시 간접점프신호를 검증하여 상기 프로그램카운터트래이서에 상기 제2간접점프명령의 타게트어드레스를 제공하며, 상기 검증된 간접점프신호를 수신할 시, 상기 프로그램카운터트래이서는 제2간접점프명령의 타게트어드레스를 접수하고, 상기 제1간접점프명령의 타게트어드레스의 전송을 정지하고, 프로그램카운터신호로서 상기 제2간접점프명령의 타게트어드레스를 전송하고 또한 타게트어드레스의 전송이 시작됐음을 나타내는 프로그램카운터 상태신호를 제공하는 것이 특징인 마이크로프로세서.
- 제14항에 있어서, 상기 프로그램카운터 트레이서가 간접점프명령의 타게트어드레스를 전송하는 동안 예외가 발생하는 동안, 상기 프로세서코어는 예외가 발생됐음을 나타내는 예외신호를 검증하여, 상기 프로그램카운터 트래이서에 예외의 타게트어드레스를 제공하며, 상기 검증된 예외신호를 수신할 시에 상기 프로그램카운터트래이서는 타게트어드레스를 접수하여 상기 간접점프명령의 타게트어드레스의 전송을 지속하고, 상기 예외의 타게트어드레스를 상기 타게트어드레스보다 비트수가 작은 정보로 인코드하고, 상기 코드화된 정보를 프로그램카운터 신호로서 전송하고, 예외의 타게트어드레스전송이 시작됐음을 나타내는 프로그램카운터 상태신호를 제공하고, 상기 코드화된 정보의 전송이 완료된 후 상기 간접점프명령의 타게트어드레스의 전송을 계속하는 것이 특징인 마이크로프로세서.
- 제13항에 있어서, 상기 프로세서코어는 간접점프명령 또는 취득조건 브랜치명령을 실행할 시 직접점프신호를 검증하고 상기 프로그램카운터 트래이서에 직접점프명령 또는 브랜치명령의 타게트어드레스를 제공하며, 상기 프로그램카운터 트래이서가 검증된 직접점프신호를 수신할 시에 간접점프명 령의 타게트어드레스를 전송하고 있지 않을 경우, 상기 프로그램카운터 트래이서는 상기 프로세서코어로부터 타게트어드레스를 접수하여 프로그램카운터신호로서 타게트어드레스를 그의 하위비트로부터 전송하고, 상기 타게트어드레스의 전송이 시작됐음을 나타내는 프로그램카운터 상태신호를 제공하며, 상기 프로그램카운터트래이서가 상기 검증된 직접점프신호를 수신할 시 간접점프명령의 타게트어드레스를 전송하고 있는 경우, 상기 프로그램카운터 트래이서 만이 직접점프명령 또는 취득된 조건브랜치명령이 실행됐음을 나타내는 프로그램카운터 상태신호를 제공하는 것이 특징인 마이크로프로세서.
- 제13항에 있어서, 상기 프로세서코어는 명령실행시 파이프라인신호를 검증하며, 상기 파이프라인신호가 상기 프로그램카운터트래이서에 의해 수신 및 검증될 때, 상기 프로그램카운터트래이서는 상기 명령이 상기 프로세서코어에 의해 실행됐음을 나타내는 프로그램카운터 상태신호를 제공하며, 상기 파이프라인신호가 상기 프로그램카운터트래이서에 의해 수신 및 검증될 때, 상기 프로그램카운터트래이서는 상기 명령이 상기 프로세서코어에 의해 실행되지 않았음을 나타내는 프로그램카운터 상태신호를 제공하는 것이 특징인 마이크로프로세서.
- 제13항에 있어서, 상기 프로세서코어는 상기 프로그램카운터트래이서가 제1간접점프명령의 타게트어드레스를 전송하고 있는 동안 제2간접점프명령을 실행하는 경우, 상기 프로세서코어는 제2간접점프명령을 실행할 시에 간접점프신호를 검증하여 상기 제2간접점프명령의 타게트어드레스를 상기 프로그램카운터트래이서에 제공하며, 또한 프로세서코어 정지신호가 검증될 경우, 상기 제2간접점프명령의 실행을 지속하며, 상기 프로그램카운터트래이서는 제2간접점프명령용 간접점프신호가 검증될 때 프로세서코어정지신호를 검증하고, 상기 제1점프명령의 타게트어드레스전송을 완료하고, 상기 프로세서코어로부터 제2간접점프명령의 타게트어드레스를 수신하고, 상기 프로그램카운터신호로서 제2간접점프명령의 타게트어드레스를 전송하고, 타게트어드레스의 전송이 시작됐음을 나타내는 프로그램카운터 상태신호를 제공하는 것이 특징인 마이크로프로세서.
- 제13항에 있어서, 상기 프로세서코어는 상기 프로그램트래이서가 제1간접점프명령의 타게트어드레스를 전송하는 동안 제2간접점프명령을 실행하는 경우, 상기 프로세서코어는 제2간접점프명령을 실행할 시 간접점프신호를 검증하고, 상기 프로그램카운터트래이서에 제2간접점프명령의 타게트어드레스를 제공하며, 만일 프로세서코어 정지신호가 검증될 경우, 제2간접점프명령의 실행을 지속하며, 상기 프로그램카운터트래이서는 제1간접점프명령의 타게트어드레스의 전송이 완료되야하는지를 나타내는 트래이스모드신호를 대기하고, 상기 트래이스모드신호는 상기 전송을 완료하도록 나타낼 때, 상기 프로그램카운터트래이서는 제2간접점프명령용의 상기 검증된 간접점프신호에 응답하여 프로세서코어 정지신호를 검증하고, 제1간접점프명령의 타게트어드레스의 전송을 완료하고, 상기 프로세서코어로부터 제2간접점프명령의 타게트어드레스를 접수하여 상기 제2간접점프명령의 타게트어드레스를 프로그램카운터신호로서 전송하고, 또한 상기 타게트어드레스의 전송이 시작됐음을 나타내는 프로그램카운터 상태신호를 제공하며, 트래이스모드신호가 상기 전송을 완료하지 않을 것을 나타낼 때, 상기 프로그램카운터트래이서는 제2간접점프명령용의 검증된 간접점프신호에 응답하여 상기 프로세서코어로부터 제2간접점프명령의 타게트어드레스를 접수하여, 제1간접점프명령의 타게트어드레스의 전송을 정지하고, 제2간접점프명령의 타게트어드레스를 프로그램카운터신호로서 전송하고 또한 타게트어드레스의 전송이 시작됐음을 나타내는 프로그램카운터상태신호를 제공하는 것이 특징인 마이크로프로세서.
- 제13항에 있어서, 유저타게트시스템을 오류수정하기 위해 상기 프로세서코어를 유저프로그램으로부터 모니터프로그램으로 스위치하도록 인터럽트 또는 예외가 외부적으로 요구될 경우, 상기 프로세서코어는 유저 프로그램을 지속하고, 모니터프로그램으로 점프하고 또한 모니터프로그램의 명령들을 인출하며, 상기 프로세서코어가 모니터프로그램으로 점프할 시에 상기 프로그램카운터트래이서가 점프명령 또는 예외코드의 타게트어드레스를 전송할 경우, 상기 프로세서코어는 상기 프로그램카운터트래이서가 상기 전송을 완료할 때까지 모니터프로그램의 명령들의 인출을 지연하는 것이 특징인 마이크로프로세서.
- 프로그램을 실행하는 프로세서코어와, 억세스된 어드레스가 세트된 어드레스와 일치할 때 또는 억세스된 어드레스 및 데이타가 세트된 어드레스 및 데이타와 일치할 때 차단요구를 행하거나 또는 상기 프로세서코어에 대한 트리거 요구신호를 검증하는 차단회로와, 상기 차단회로가 트리거 요구신호를 검증한 후 상기 트리거 요구신호가 검증됐음을 나타내는 외부 상태신호를 제공하는 프로그램카운터트래이서를 포함하는 것이 특징인 마이크로프로세서.
- 제23항에 있어서, 상기 프로그램 카운터트래이서는 상기 프로세서코어의 내부상태를 인코드하고 인코드된 내부상태를 나타내는 외부상태신호를 제공하며, 상기 프로세서코어가 제1내부상태에 있고 트리거요구신호가 검증될 때 상기 프로그램카운터트래이서가 검증된 트리거요구신호와 무관하게 트리거요구가 없다는 내부상태를 나타내는 외부상태신호를 제공하며, 상기 프로세서코어가 제2내부상태에 있고 트리거요구신호가 검증될 때 상기 프로그램카운터트래이서는 트리거요구가 이루어졌음을 나타내는 외부상태신호를 제공하는 것이 특징인 마이크로프로세서.
- 제24항에 있어서, 상기 제1내부상태는 점프명령실행 또는 예외 생성에 상응하며, 제2내부상태는 명령들의 순차 실행 또는 파이프라인 스톨의 발생에 해당하는 것이 특징인 마이크로프로세서.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP32899394 | 1994-12-28 | ||
JP94-328993 | 1994-12-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR960024921A KR960024921A (ko) | 1996-07-20 |
KR100255026B1 true KR100255026B1 (ko) | 2000-05-01 |
Family
ID=18216413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019950061484A KR100255026B1 (ko) | 1994-12-28 | 1995-12-28 | 마이크로프로세서 및 디버그 시스템 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5978937A (ko) |
EP (1) | EP0720093B1 (ko) |
KR (1) | KR100255026B1 (ko) |
CN (3) | CN1279449C (ko) |
DE (1) | DE69523884T2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010030956A (ko) * | 1998-08-06 | 2001-04-16 | 인피니언 테크놀로지스 아게 | 프로그램 제어 장치 및 상기 장치를 디버깅하기 위한 방법 |
Families Citing this family (170)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2752592B2 (ja) * | 1994-12-28 | 1998-05-18 | 日本ヒューレット・パッカード株式会社 | マイクロプロセッサ、マイクロプロセッサ−デバッグツール間信号伝送方法及びトレース方法 |
US5724505A (en) * | 1996-05-15 | 1998-03-03 | Lucent Technologies Inc. | Apparatus and method for real-time program monitoring via a serial interface |
EP0840223B1 (en) * | 1996-10-31 | 2002-05-15 | STMicroelectronics Limited | Microcomputer capable of accessing an external memory |
EP0840222B1 (en) * | 1996-10-31 | 2002-09-11 | STMicroelectronics Limited | Microcomputer with debugging system |
US5983017A (en) * | 1996-11-12 | 1999-11-09 | Lsi Logic Corporation | Virtual monitor debugging method and apparatus |
US6154856A (en) * | 1997-04-08 | 2000-11-28 | Advanced Micro Devices, Inc. | Debug interface including state machines for timing synchronization and communication |
US6189140B1 (en) * | 1997-04-08 | 2001-02-13 | Advanced Micro Devices, Inc. | Debug interface including logic generating handshake signals between a processor, an input/output port, and a trace logic |
US6314530B1 (en) | 1997-04-08 | 2001-11-06 | Advanced Micro Devices, Inc. | Processor having a trace access instruction to access on-chip trace memory |
JP3542463B2 (ja) * | 1997-07-29 | 2004-07-14 | Necエレクトロニクス株式会社 | 集積回路装置、その動作制御方法 |
KR100576006B1 (ko) * | 1997-08-30 | 2006-08-01 | 삼성전자주식회사 | 실시간오퍼레이팅시스템의효율적인온라인디버깅처리및그를위한프로세스스케쥴링방법 |
US6356960B1 (en) | 1997-10-29 | 2002-03-12 | Sgs-Thomson Microelectronics Limited | Microprocessor having an on-chip CPU fetching a debugging routine from a memory in an external debugging device in response to a control signal received through a debugging port |
US6311325B1 (en) * | 1998-10-22 | 2001-10-30 | International Business Machines Corporation | Method and apparatus for profiling processes in a data processing system background of the invention |
US6175914B1 (en) | 1997-12-17 | 2001-01-16 | Advanced Micro Devices, Inc. | Processor including a combined parallel debug and trace port and a serial port |
US6230119B1 (en) * | 1998-02-06 | 2001-05-08 | Patrick Michael Mitchell | Integrated circuit with embedded emulator and emulation system for use with such an integrated circuit |
US6145100A (en) * | 1998-03-04 | 2000-11-07 | Advanced Micro Devices, Inc. | Debug interface including timing synchronization logic |
GB9805479D0 (en) * | 1998-03-13 | 1998-05-13 | Sgs Thomson Microelectronics | Microcomputer |
GB9805486D0 (en) | 1998-03-13 | 1998-05-13 | Sgs Thomson Microelectronics | Adapter |
US6687865B1 (en) | 1998-03-25 | 2004-02-03 | On-Chip Technologies, Inc. | On-chip service processor for test and debug of integrated circuits |
JP3671667B2 (ja) * | 1998-03-31 | 2005-07-13 | セイコーエプソン株式会社 | マイクロコンピュータ、電子機器及びデバッグシステム |
US6438715B1 (en) * | 1998-05-04 | 2002-08-20 | Stmicroelectronics N.V. | Trace operations in an integrated circuit for a disk drive |
US6145123A (en) * | 1998-07-01 | 2000-11-07 | Advanced Micro Devices, Inc. | Trace on/off with breakpoint register |
CN1071038C (zh) * | 1998-08-04 | 2001-09-12 | 英业达股份有限公司 | 用于调试串行通讯的诊断装置 |
US6738778B1 (en) * | 1998-12-11 | 2004-05-18 | International Business Machines Corporation | Method and apparatus for monitoring the execution of a program |
JP3736980B2 (ja) | 1998-12-28 | 2006-01-18 | 富士通株式会社 | マイクロコントローラの評価装置および評価方法 |
US6378124B1 (en) | 1999-02-22 | 2002-04-23 | International Business Machines Corporation | Debugger thread synchronization control points |
US6587967B1 (en) * | 1999-02-22 | 2003-07-01 | International Business Machines Corporation | Debugger thread monitor |
US6446221B1 (en) * | 1999-05-19 | 2002-09-03 | Arm Limited | Debug mechanism for data processing systems |
JP4335999B2 (ja) * | 1999-05-20 | 2009-09-30 | 株式会社ルネサステクノロジ | プロセッサ内蔵半導体集積回路装置 |
JP4260984B2 (ja) * | 1999-06-04 | 2009-04-30 | 株式会社東芝 | 情報処理装置および情報処理方法 |
US6668339B1 (en) * | 1999-07-28 | 2003-12-23 | Mitsubishi Denki Kabushiki Kaisha | Microprocessor having a debug interruption function |
JP2001147821A (ja) | 1999-09-10 | 2001-05-29 | Toshiba Corp | プロセッサ |
US6298394B1 (en) * | 1999-10-01 | 2001-10-02 | Stmicroelectronics, Ltd. | System and method for capturing information on an interconnect in an integrated circuit |
US6859891B2 (en) * | 1999-10-01 | 2005-02-22 | Stmicroelectronics Limited | Apparatus and method for shadowing processor information |
US7793261B1 (en) * | 1999-10-01 | 2010-09-07 | Stmicroelectronics Limited | Interface for transferring debug information |
US6601189B1 (en) | 1999-10-01 | 2003-07-29 | Stmicroelectronics Limited | System and method for communicating with an integrated circuit |
GB2362729B (en) * | 1999-12-23 | 2004-02-11 | St Microelectronics Sa | Memory access debug facility |
JP2001202270A (ja) * | 2000-01-21 | 2001-07-27 | Mitsubishi Electric Corp | 内部バストレース機能付プロセッサ |
US6769076B1 (en) * | 2000-02-07 | 2004-07-27 | Freescale Semiconductor, Inc. | Real-time processor debug system |
US6842811B2 (en) * | 2000-02-24 | 2005-01-11 | Pts Corporation | Methods and apparatus for scalable array processor interrupt detection and response |
DE60139219D1 (de) * | 2000-03-02 | 2009-08-27 | Texas Instruments Inc | Dynamisch konfigurierbare Debug-Schnittstelle mit gleichzeitiger Verwendung von Fehlerbeseitigung von mehreren Prozessorkernen |
US7113902B2 (en) * | 2000-03-02 | 2006-09-26 | Texas Instruments Incorporated | Data processing condition detector with table lookup |
US6732311B1 (en) * | 2000-05-04 | 2004-05-04 | Agere Systems Inc. | On-chip debugger |
WO2001093040A1 (fr) * | 2000-05-30 | 2001-12-06 | Matsushita Electric Industrial Co., Ltd. | Systeme et procede d'analyse de compteur de programme, et dispositif a semi-conducteur |
JP4409056B2 (ja) * | 2000-06-30 | 2010-02-03 | 富士通株式会社 | Lsi,lsiを搭載した電子装置、デバッグ方法、lsiのデバッグ装置 |
US6728906B1 (en) * | 2000-08-24 | 2004-04-27 | Triscend Corporation | Trace buffer for a configurable system-on-chip |
US8103496B1 (en) | 2000-10-26 | 2012-01-24 | Cypress Semicondutor Corporation | Breakpoint control in an in-circuit emulation system |
US7188063B1 (en) * | 2000-10-26 | 2007-03-06 | Cypress Semiconductor Corporation | Capturing test/emulation and enabling real-time debugging using an FPGA for in-circuit emulation |
US7765095B1 (en) | 2000-10-26 | 2010-07-27 | Cypress Semiconductor Corporation | Conditional branching in an in-circuit emulation system |
US6724220B1 (en) | 2000-10-26 | 2004-04-20 | Cyress Semiconductor Corporation | Programmable microcontroller architecture (mixed analog/digital) |
US8176296B2 (en) | 2000-10-26 | 2012-05-08 | Cypress Semiconductor Corporation | Programmable microcontroller architecture |
US8160864B1 (en) | 2000-10-26 | 2012-04-17 | Cypress Semiconductor Corporation | In-circuit emulator and pod synchronized boot |
US8149048B1 (en) | 2000-10-26 | 2012-04-03 | Cypress Semiconductor Corporation | Apparatus and method for programmable power management in a programmable analog circuit block |
US6842879B1 (en) | 2000-11-21 | 2005-01-11 | Unisys Corporation | Methods and apparatus for facilitating the design of an adapter card of a computer system |
US6484273B1 (en) * | 2000-11-29 | 2002-11-19 | Lsi Logic Corporation | Integrated EJTAG external bus interface |
US6986026B2 (en) * | 2000-12-15 | 2006-01-10 | Intel Corporation | Single-step processing and selecting debugging modes |
US6857083B2 (en) * | 2000-12-18 | 2005-02-15 | International Business Machines Corporation | Method and system for triggering a debugging unit |
JP3913470B2 (ja) * | 2000-12-28 | 2007-05-09 | 株式会社東芝 | システムlsi |
US7287147B1 (en) | 2000-12-29 | 2007-10-23 | Mips Technologies, Inc. | Configurable co-processor interface |
US7237090B1 (en) | 2000-12-29 | 2007-06-26 | Mips Technologies, Inc. | Configurable out-of-order data transfer in a coprocessor interface |
US7178133B1 (en) * | 2001-04-30 | 2007-02-13 | Mips Technologies, Inc. | Trace control based on a characteristic of a processor's operating state |
US7124072B1 (en) | 2001-04-30 | 2006-10-17 | Mips Technologies, Inc. | Program counter and data tracing from a multi-issue processor |
KR100422586B1 (ko) * | 2001-04-30 | 2004-03-12 | 주식회사 하이닉스반도체 | 유에스비 마이크로 컨트롤러 유닛 디버깅 방법 |
US7181728B1 (en) | 2001-04-30 | 2007-02-20 | Mips Technologies, Inc. | User controlled trace records |
US7069544B1 (en) * | 2001-04-30 | 2006-06-27 | Mips Technologies, Inc. | Dynamic selection of a compression algorithm for trace data |
US7134116B1 (en) | 2001-04-30 | 2006-11-07 | Mips Technologies, Inc. | External trace synchronization via periodic sampling |
US7185234B1 (en) | 2001-04-30 | 2007-02-27 | Mips Technologies, Inc. | Trace control from hardware and software |
US7065675B1 (en) | 2001-05-08 | 2006-06-20 | Mips Technologies, Inc. | System and method for speeding up EJTAG block data transfers |
US7043668B1 (en) | 2001-06-29 | 2006-05-09 | Mips Technologies, Inc. | Optimized external trace formats |
US7231551B1 (en) | 2001-06-29 | 2007-06-12 | Mips Technologies, Inc. | Distributed tap controller |
JP2003177938A (ja) * | 2001-12-07 | 2003-06-27 | Fujitsu Ltd | 電子装置及びそのデバッグ認証方法 |
US6889344B2 (en) * | 2001-08-09 | 2005-05-03 | International Business Machines Corporation | System and method for exposing hidden events on system buses |
US6768358B2 (en) * | 2001-08-29 | 2004-07-27 | Analog Devices, Inc. | Phase locked loop fast power up methods and apparatus |
US20030056071A1 (en) * | 2001-09-18 | 2003-03-20 | Triece Joseph W. | Adaptable boot loader |
DE10148157B4 (de) * | 2001-09-28 | 2006-05-18 | Infineon Technologies Ag | Programmgesteuerte Einheit |
GB2380826A (en) * | 2001-10-12 | 2003-04-16 | Siroyan Ltd | Debugging of processors |
US20030074650A1 (en) * | 2001-10-17 | 2003-04-17 | Tankut Akgul | Debugger operating system for embedded systems |
US7406674B1 (en) | 2001-10-24 | 2008-07-29 | Cypress Semiconductor Corporation | Method and apparatus for generating microcontroller configuration information |
US8078970B1 (en) | 2001-11-09 | 2011-12-13 | Cypress Semiconductor Corporation | Graphical user interface with user-selectable list-box |
US8042093B1 (en) | 2001-11-15 | 2011-10-18 | Cypress Semiconductor Corporation | System providing automatic source code generation for personalization and parameterization of user modules |
US7844437B1 (en) | 2001-11-19 | 2010-11-30 | Cypress Semiconductor Corporation | System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit |
US7774190B1 (en) | 2001-11-19 | 2010-08-10 | Cypress Semiconductor Corporation | Sleep and stall in an in-circuit emulation system |
US7770113B1 (en) | 2001-11-19 | 2010-08-03 | Cypress Semiconductor Corporation | System and method for dynamically generating a configuration datasheet |
US8069405B1 (en) | 2001-11-19 | 2011-11-29 | Cypress Semiconductor Corporation | User interface for efficiently browsing an electronic document using data-driven tabs |
US6971004B1 (en) | 2001-11-19 | 2005-11-29 | Cypress Semiconductor Corp. | System and method of dynamically reconfiguring a programmable integrated circuit |
US7117352B1 (en) * | 2002-02-13 | 2006-10-03 | Lsi Logic Corporation | Debug port disable mechanism |
JP2003263337A (ja) * | 2002-03-08 | 2003-09-19 | Seiko Epson Corp | デバック機能内蔵型マイクロコンピュータ |
JP2003263339A (ja) * | 2002-03-08 | 2003-09-19 | Seiko Epson Corp | デバック機能内蔵型マイクロコンピュータ |
US7266848B2 (en) * | 2002-03-18 | 2007-09-04 | Freescale Semiconductor, Inc. | Integrated circuit security and method therefor |
US8103497B1 (en) | 2002-03-28 | 2012-01-24 | Cypress Semiconductor Corporation | External interface for event architecture |
EP1349071A1 (en) * | 2002-03-29 | 2003-10-01 | STMicroelectronics N.V. | Integrated circuit with direct debugging architecture |
US7308608B1 (en) | 2002-05-01 | 2007-12-11 | Cypress Semiconductor Corporation | Reconfigurable testing system and method |
US20030233601A1 (en) * | 2002-06-17 | 2003-12-18 | Vaid Kushagra V. | Non-intrusive signal observation techniques usable for real-time internal signal capture for an electronic module or integrated circuit |
US6687129B1 (en) | 2002-08-29 | 2004-02-03 | Hewlett-Packard Development Company, L.P. | Circuit board and frame assembly |
JP2004102331A (ja) * | 2002-09-04 | 2004-04-02 | Renesas Technology Corp | 半導体装置 |
US7761845B1 (en) | 2002-09-09 | 2010-07-20 | Cypress Semiconductor Corporation | Method for parameterizing a user module |
US8374841B2 (en) * | 2002-11-22 | 2013-02-12 | Texas Instruments Incorporated | Precise detection of triggers and trigger ordering for asynchronous events |
CN100440140C (zh) * | 2003-02-11 | 2008-12-03 | Vi实验室有限公司 | 用于调节计算机软件的执行的系统和方法 |
US7216276B1 (en) | 2003-02-27 | 2007-05-08 | Marvell International Ltd. | Apparatus and method for testing and debugging an integrated circuit |
US7496818B1 (en) | 2003-02-27 | 2009-02-24 | Marvell International Ltd. | Apparatus and method for testing and debugging an integrated circuit |
US7444571B1 (en) * | 2003-02-27 | 2008-10-28 | Marvell International Ltd. | Apparatus and method for testing and debugging an integrated circuit |
WO2004097545A2 (en) * | 2003-05-01 | 2004-11-11 | Maz Laboratory | A method of executing a computer program |
US7159101B1 (en) | 2003-05-28 | 2007-01-02 | Mips Technologies, Inc. | System and method to trace high performance multi-issue processors |
US20050060690A1 (en) * | 2003-09-15 | 2005-03-17 | Kuo-Jung Tung | Microprocessor system with software emulation processed by auxiliary hardware |
US7194663B2 (en) * | 2003-11-18 | 2007-03-20 | Honeywell International, Inc. | Protective bus interface and method |
US7065593B2 (en) * | 2003-12-17 | 2006-06-20 | Tellabs Petaluma, Inc. | Centralized, double bandwidth, directional, shared bus communication system architecture |
WO2005091144A2 (fr) * | 2004-02-23 | 2005-09-29 | Stmicroelectronics S.A. | Surveillance de l’execution d’un programme par un processeur d’un circuit electronique |
US7295049B1 (en) | 2004-03-25 | 2007-11-13 | Cypress Semiconductor Corporation | Method and circuit for rapid alignment of signals |
US8286125B2 (en) | 2004-08-13 | 2012-10-09 | Cypress Semiconductor Corporation | Model for a hardware device-independent method of defining embedded firmware for programmable systems |
US8069436B2 (en) | 2004-08-13 | 2011-11-29 | Cypress Semiconductor Corporation | Providing hardware independence to automate code generation of processing device firmware |
CN100371907C (zh) * | 2004-11-19 | 2008-02-27 | 凌阳科技股份有限公司 | 用于处理器的追踪调试方法及系统 |
CN100359486C (zh) * | 2004-11-24 | 2008-01-02 | 中兴通讯股份有限公司 | 一种调试操作系统内核态程序的方法及装置 |
US7332976B1 (en) | 2005-02-04 | 2008-02-19 | Cypress Semiconductor Corporation | Poly-phase frequency synthesis oscillator |
JP2006268727A (ja) * | 2005-03-25 | 2006-10-05 | Seiko Epson Corp | 集積回路装置、デバッグシステム、マイクロコンピュータ及び電子機器 |
US7400183B1 (en) | 2005-05-05 | 2008-07-15 | Cypress Semiconductor Corporation | Voltage controlled oscillator delay cell and method |
US8089461B2 (en) | 2005-06-23 | 2012-01-03 | Cypress Semiconductor Corporation | Touch wake for electronic devices |
US7437616B2 (en) * | 2005-12-15 | 2008-10-14 | Atmel Corporation | Dual CPU on-chip-debug low-gate-count architecture with real-time-data tracing |
US8085067B1 (en) | 2005-12-21 | 2011-12-27 | Cypress Semiconductor Corporation | Differential-to-single ended signal converter circuit and method |
KR101242602B1 (ko) * | 2006-02-08 | 2013-03-19 | 삼성전자주식회사 | 테스트 회로를 내장한 시스템 온 칩 |
US8067948B2 (en) | 2006-03-27 | 2011-11-29 | Cypress Semiconductor Corporation | Input/output multiplexer bus |
JP2007328403A (ja) * | 2006-06-06 | 2007-12-20 | Matsushita Electric Ind Co Ltd | バス監視回路および情報処理検査システム |
JP4795147B2 (ja) * | 2006-07-11 | 2011-10-19 | 富士通株式会社 | 伝送装置 |
WO2008032477A1 (fr) * | 2006-09-15 | 2008-03-20 | Mitsubishi Electric Corporation | Système de déboguage |
US20080179386A1 (en) * | 2006-10-26 | 2008-07-31 | Daniel Oberan | Atm dispensable non-cash media sheet with separable folding card and process of dispensing from automated teller |
TWI331278B (en) * | 2007-03-14 | 2010-10-01 | Ind Tech Res Inst | Debug method |
US8040266B2 (en) | 2007-04-17 | 2011-10-18 | Cypress Semiconductor Corporation | Programmable sigma-delta analog-to-digital converter |
US7737724B2 (en) | 2007-04-17 | 2010-06-15 | Cypress Semiconductor Corporation | Universal digital block interconnection and channel routing |
US8516025B2 (en) | 2007-04-17 | 2013-08-20 | Cypress Semiconductor Corporation | Clock driven dynamic datapath chaining |
US9564902B2 (en) | 2007-04-17 | 2017-02-07 | Cypress Semiconductor Corporation | Dynamically configurable and re-configurable data path |
US8092083B2 (en) | 2007-04-17 | 2012-01-10 | Cypress Semiconductor Corporation | Temperature sensor with digital bandgap |
US8026739B2 (en) | 2007-04-17 | 2011-09-27 | Cypress Semiconductor Corporation | System level interconnect with programmable switching |
US8130025B2 (en) | 2007-04-17 | 2012-03-06 | Cypress Semiconductor Corporation | Numerical band gap |
US8065653B1 (en) | 2007-04-25 | 2011-11-22 | Cypress Semiconductor Corporation | Configuration of programmable IC design elements |
US8266575B1 (en) | 2007-04-25 | 2012-09-11 | Cypress Semiconductor Corporation | Systems and methods for dynamically reconfiguring a programmable system on a chip |
US9720805B1 (en) | 2007-04-25 | 2017-08-01 | Cypress Semiconductor Corporation | System and method for controlling a target device |
US8049569B1 (en) | 2007-09-05 | 2011-11-01 | Cypress Semiconductor Corporation | Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes |
CN101458725B (zh) * | 2007-12-14 | 2012-01-25 | 上海海尔集成电路有限公司 | 微控制器芯片及其调试方法 |
TWI426381B (zh) * | 2008-11-28 | 2014-02-11 | Hon Hai Prec Ind Co Ltd | 嵌入式系統之測試裝置及方法 |
US8074118B2 (en) * | 2009-01-28 | 2011-12-06 | Dspace Digital Signal Processing And Control Engineering Gmbh | Method for influencing a control unit and manipulation unit |
US8171341B2 (en) * | 2009-01-28 | 2012-05-01 | Dspace Digital Signal Processing And Control Engineering Gmbh | Method for controlling an operating mechanism and a manipulation unit |
US8166344B2 (en) * | 2009-01-28 | 2012-04-24 | Dspace Digital Signal Processing And Control Engineering Gmbh | Method for controlling an operating mechanism and a manipulation unit |
US8375250B2 (en) * | 2009-03-04 | 2013-02-12 | Infineon Technologies Ag | System and method for testing a module |
US9448964B2 (en) | 2009-05-04 | 2016-09-20 | Cypress Semiconductor Corporation | Autonomous control in a programmable system |
US20120072777A1 (en) * | 2009-05-27 | 2012-03-22 | Mitsubishi Electric Corporation | Debugging device, debugging method, and computer program for sequence program |
CN101739338B (zh) * | 2009-12-21 | 2012-05-23 | 龙芯中科技术有限公司 | 一种处理器地址数据跟踪的装置及方法 |
CN103279326A (zh) * | 2009-12-23 | 2013-09-04 | 上海高性能集成电路设计中心 | 一种用于软件调试的微处理器数据流地址匹配自陷装置 |
CN102360329B (zh) * | 2011-09-29 | 2014-11-05 | 西北工业大学 | 总线监控与调试控制装置及进行总线监控与总线调试的方法 |
CN102662835B (zh) * | 2012-03-23 | 2015-10-28 | 凌阳科技股份有限公司 | 一种针对嵌入式系统的程序调试方法及嵌入式系统 |
KR20150008441A (ko) * | 2012-05-07 | 2015-01-22 | 마이크로칩 테크놀로지 인코포레이티드 | 리셋 조건 트레이스 기능들을 갖춘 프로세서 디바이스 |
CN103514077B (zh) * | 2012-06-21 | 2017-08-25 | 深圳市祈飞科技有限公司 | 计算机系统瘫痪报警装置及报警方法 |
US9489287B2 (en) * | 2013-08-23 | 2016-11-08 | Atmel Corporation | Breaking code execution based on time consumption |
JP6309919B2 (ja) * | 2015-06-23 | 2018-04-11 | ファナック株式会社 | データ取得機能を有する数値制御装置 |
US9419621B1 (en) | 2015-09-18 | 2016-08-16 | Freescale Semiconductor, Inc. | System on chip and method of operating a system on chip |
WO2017072664A1 (en) * | 2015-10-27 | 2017-05-04 | Marvell World Trade Ltd. | System and method for establishing a trusted diagnosis/debugging agent over a closed commodity device |
US10120740B2 (en) * | 2016-03-22 | 2018-11-06 | Micron Technology, Inc. | Apparatus and methods for debugging on a memory device |
CN106126360B (zh) * | 2016-06-28 | 2020-08-25 | 海信视像科技股份有限公司 | 地址空洞屏蔽方法及装置 |
CN106250260B (zh) * | 2016-08-03 | 2019-07-23 | 北京小米移动软件有限公司 | 处理器溢出监控和调试方法及装置 |
CN106970877A (zh) * | 2017-03-15 | 2017-07-21 | 杭州中天微系统有限公司 | 控制调试请求的装置及数据处理器 |
CN107301102B (zh) * | 2017-06-22 | 2020-05-26 | 湖南国科微电子股份有限公司 | 一种处理器调试方法及系统 |
CN109284223B (zh) * | 2017-07-21 | 2023-10-20 | 超威半导体(上海)有限公司 | 可配置的调试方法和系统 |
CN110476153A (zh) * | 2018-03-09 | 2019-11-19 | 深圳市汇顶科技股份有限公司 | 访问指令sram的方法和电子设备 |
US11105850B2 (en) * | 2018-05-24 | 2021-08-31 | Seagate Technology Llc | Secure debug system for electronic devices |
JP6981920B2 (ja) * | 2018-05-25 | 2021-12-17 | ルネサスエレクトロニクス株式会社 | 半導体装置、およびデバッグ方法 |
JP6961553B2 (ja) | 2018-08-30 | 2021-11-05 | 株式会社東芝 | 情報処理装置、システム及び方法 |
CN111737103A (zh) * | 2019-03-25 | 2020-10-02 | 阿里巴巴集团控股有限公司 | 一种包括调试单元的处理器和调试系统 |
JP7378254B2 (ja) * | 2019-09-19 | 2023-11-13 | キヤノン株式会社 | マルチプロセッサデバイス |
CN113672554B (zh) * | 2021-07-06 | 2023-12-29 | 平头哥(杭州)半导体有限公司 | 处理器核、处理器、片上系统和调试系统 |
CN114024878A (zh) * | 2021-11-18 | 2022-02-08 | 芯翼信息科技(上海)有限公司 | 数据传输方法、装置、介质和设备 |
CN114510432B (zh) * | 2022-04-20 | 2022-07-12 | 苏州浪潮智能科技有限公司 | 一种寄存器调试平台和调试方法 |
CN116340188B (zh) * | 2023-05-26 | 2023-08-04 | 深流微智能科技(深圳)有限公司 | Gpu芯片渲染任务的调试方法及系统 |
CN116383091B (zh) * | 2023-05-29 | 2023-08-29 | 珠海妙存科技有限公司 | eMMC验证平台的启动方法、启动装置及存储介质 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63155336A (ja) * | 1986-12-19 | 1988-06-28 | Hitachi Ltd | デ−タ処理装置 |
DE3740762A1 (de) * | 1987-01-22 | 1988-08-04 | Nat Semiconductor Corp | Datenverarbeitungssystem mit einer externen schnittstelle |
US5084814A (en) * | 1987-10-30 | 1992-01-28 | Motorola, Inc. | Data processor with development support features |
CN1019336B (zh) * | 1988-12-02 | 1992-12-02 | 霍尼威尔布尔公司 | 微处理器定向中断 |
EP0453268B1 (en) * | 1990-04-20 | 1997-10-22 | Hitachi, Ltd. | A microprocessor for inserting a bus cycle to output an internal information for an emulation |
US5581695A (en) * | 1990-05-09 | 1996-12-03 | Applied Microsystems Corporation | Source-level run-time software code debugging instrument |
US5493723A (en) * | 1990-11-06 | 1996-02-20 | National Semiconductor Corporation | Processor with in-system emulation circuitry which uses the same group of terminals to output program counter bits |
JPH06290076A (ja) * | 1993-04-05 | 1994-10-18 | Nec Ic Microcomput Syst Ltd | デバッグ装置 |
JPH0744419A (ja) * | 1993-08-03 | 1995-02-14 | Nec Ic Microcomput Syst Ltd | マイコン開発支援装置 |
US5539901A (en) * | 1993-09-30 | 1996-07-23 | Intel Corporation | Method and apparatus for system management mode support for in-circuit emulators |
US5630052A (en) * | 1993-09-30 | 1997-05-13 | Intel Corporation | System development and debug tools for power management functions in a computer system |
US5533192A (en) * | 1994-04-21 | 1996-07-02 | Apple Computer, Inc. | Computer program debugging system and method |
US5615331A (en) * | 1994-06-23 | 1997-03-25 | Phoenix Technologies Ltd. | System and method for debugging a computing system |
US5630102A (en) * | 1994-12-19 | 1997-05-13 | Intel Corporation | In-circuit-emulation event management system |
JP2752592B2 (ja) * | 1994-12-28 | 1998-05-18 | 日本ヒューレット・パッカード株式会社 | マイクロプロセッサ、マイクロプロセッサ−デバッグツール間信号伝送方法及びトレース方法 |
US5544311A (en) * | 1995-09-11 | 1996-08-06 | Rockwell International Corporation | On-chip debug port |
-
1995
- 1995-12-28 CN CNB2004100386728A patent/CN1279449C/zh not_active Expired - Lifetime
- 1995-12-28 CN CN95120196A patent/CN1122226C/zh not_active Expired - Lifetime
- 1995-12-28 US US08/580,158 patent/US5978937A/en not_active Expired - Lifetime
- 1995-12-28 DE DE69523884T patent/DE69523884T2/de not_active Expired - Lifetime
- 1995-12-28 EP EP95120662A patent/EP0720093B1/en not_active Expired - Lifetime
- 1995-12-28 KR KR1019950061484A patent/KR100255026B1/ko not_active IP Right Cessation
- 1995-12-28 CN CNB011440112A patent/CN1316368C/zh not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010030956A (ko) * | 1998-08-06 | 2001-04-16 | 인피니언 테크놀로지스 아게 | 프로그램 제어 장치 및 상기 장치를 디버깅하기 위한 방법 |
Also Published As
Publication number | Publication date |
---|---|
EP0720093A1 (en) | 1996-07-03 |
US5978937A (en) | 1999-11-02 |
CN1362677A (zh) | 2002-08-07 |
DE69523884T2 (de) | 2002-06-27 |
CN1279449C (zh) | 2006-10-11 |
DE69523884D1 (de) | 2001-12-20 |
CN1133455A (zh) | 1996-10-16 |
CN1316368C (zh) | 2007-05-16 |
EP0720093B1 (en) | 2001-11-14 |
KR960024921A (ko) | 1996-07-20 |
CN1540518A (zh) | 2004-10-27 |
CN1122226C (zh) | 2003-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100255026B1 (ko) | 마이크로프로세서 및 디버그 시스템 | |
JP3846939B2 (ja) | データプロセッサ | |
JP4190114B2 (ja) | マイクロコンピュータ | |
EP0762279B1 (en) | Data processor with built-in emulation circuit | |
EP0762276B1 (en) | Data processor with built-in emulation circuit | |
EP0762277B1 (en) | Data processor with built-in emulation circuit | |
JP2752592B2 (ja) | マイクロプロセッサ、マイクロプロセッサ−デバッグツール間信号伝送方法及びトレース方法 | |
US4429368A (en) | Microprogram-testing apparatus | |
KR100314693B1 (ko) | 마이크로프로세서 | |
US6915416B2 (en) | Apparatus and method for microcontroller debugging | |
EP0528585B1 (en) | Data processing system with internal instruction cache | |
US8407457B2 (en) | System and method for monitoring debug events | |
EP0655684A1 (en) | Branch decision encoding scheme | |
WO1998021653A1 (en) | Virtual monitor debugging method and apparatus | |
WO1998021653A9 (en) | Virtual monitor debugging method and apparatus | |
US4562536A (en) | Directory test error mode control apparatus | |
JPH10222392A (ja) | 集積回路装置の診断手順 | |
US5475852A (en) | Microprocessor implementing single-step or sequential microcode execution while in test mode | |
WO2009051912A1 (en) | Debug instruction for use in a data processing system | |
US6158023A (en) | Debug apparatus | |
US10970191B2 (en) | Semiconductor device and debug method | |
JPH09218801A (ja) | データプロセッサ | |
JP2974601B2 (ja) | マイクロプロセッサ及びデバッグシステム | |
US5826058A (en) | Method and apparatus for providing an external indication of internal cycles in a data processing system | |
US20030204707A1 (en) | Real-time tracing microprocessor unit and operating method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
J201 | Request for trial against refusal decision | ||
B701 | Decision to grant | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130118 Year of fee payment: 14 |
|
FPAY | Annual fee payment |
Payment date: 20140120 Year of fee payment: 15 |
|
FPAY | Annual fee payment |
Payment date: 20150120 Year of fee payment: 16 |
|
EXPY | Expiration of term |