KR970006024B1 - 디버깅장치 및 방법 - Google Patents

디버깅장치 및 방법 Download PDF

Info

Publication number
KR970006024B1
KR970006024B1 KR1019920014140A KR920014140A KR970006024B1 KR 970006024 B1 KR970006024 B1 KR 970006024B1 KR 1019920014140 A KR1019920014140 A KR 1019920014140A KR 920014140 A KR920014140 A KR 920014140A KR 970006024 B1 KR970006024 B1 KR 970006024B1
Authority
KR
South Korea
Prior art keywords
firmware
rom
debugger
data
code
Prior art date
Application number
KR1019920014140A
Other languages
English (en)
Other versions
KR940004430A (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 KR1019920014140A priority Critical patent/KR970006024B1/ko
Publication of KR940004430A publication Critical patent/KR940004430A/ko
Application granted granted Critical
Publication of KR970006024B1 publication Critical patent/KR970006024B1/ko

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

Landscapes

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

Abstract

내용없음.

Description

디버깅장치 및 방법
제1도는 종래의 디버깅 장치의 예.
제2도는 종래의 디버깅 장치의 다른 예.
제3도는 본 발명에 따른 디버깅 장치의 실시예.
제4도는 제어블럭 구성도.
제5도는 본 발명에 따른 디버깅 방법의 흐름도.
* 도면의 주요부분에 대한 부호의 설명
10 : 호스트 시스템 20 : 인터페이스부
30 : 적재기(Loader) 40 : ROM에뮬레이터
50 : 대상 시스템보드 60 : ROM소켓
70 : 원격 디버거 80 : ROM모니터
90 : 디버거 100 : 마이크로제어기
110 : 디코더 제어 논리부 120 : 메모리(SRAM)
130 : 디버거 제어부
본 발명은 디버깅 장치 및 방법에 관한 것으로, 특히 시스템 롬(ROM)에서 동작하는 펌웨어를 디버깅하기 위한 디버깅 장치 및 방법에 관한 것이다.
일반적으로 펌웨어(Firmware)란 전원을 온(On)시 시스템을 초기화하고 시스템을 테스트하며, 부트(Boot)장치로부터 운영체제(Operating System)를 메모리에 적재하는 부팅등을 수행하는 시스템 프로그램으로서 시스템의 롬(Read Only Memory, 이하 ROM이라 함)에서 동작한다. 펌웨어는 프로그램이기 때문에 소프트웨어 특성을 가지면서 롬에 고정되어 있기 때문에 하드웨어 특성을 가지고 있다. 이러한 특성때문에 소프트웨어 또는 하드웨어로 실행하는 기능의 일부를 펌웨어로 실현하는 경우가 많다.
롬(ROM)에서 수행되는 펌웨어는 메모리에서 수행되는 소프트웨어보다 속도가 늦다. 펌웨어 목적은 빠른 속도가 아니라 소프트웨어가 하드웨어로부터 독립성을 갖게 하기 위한 것이다. 즉 새로운 시스템 개발시 하드웨어가 변경되면 소프트웨어는 바꾸지 않고 펌웨어를 바꾸어주면 된다. 또한 펌웨어는 롬(ROM)안에 있으므로 전원 OFF시에도 남아 있어 다시 전원을 ON하였을때 동작하여 소프트웨어를 적재(Load)하는 역할을 한다. 즉, 펌웨어는 하드웨어와 소프트웨어를 중간에서 인터페이스하는 역할을 한다.
그리고 컴퓨터를 설계하는 경우와 같이 시행착오를 거쳐서 완벽한 시스템을 만드는 과정에서는 펌웨어를 수정(debugging)하여 설계를 용이하게 한다.
제1도는 종래의 디버깅 장치의 일실시예이다. 제1도에 있어서, ROM에뮬레이터(40)는 ROM과 동일한 하드웨어 특성을 갖는 RAM과 인터페이스회로로 구성한다. ROM에뮬레이터(40)는 대상 시스템보드(Target System Board, 50)의 메모리소켓(60)에 접속되어 RAM(랜덤 억세스 메모리, Random Access Memory)를 ROM으로 에뮬레이트하여 주는 장치이다.
즉, 호스트 시스템(10)에서의 사용자가 원하는 대상 시스템의 명령과 데이타로 프로그램된 코드(또는 펌웨어 코드)를 대상 시스템보드(50)로 적재하여 대상 시스템을 실행시켜 준다. ROM에뮬레이터(40)를 사용하려면 펌웨어 코드를 ROM에뮬레이터(40)로 다운로드(Down Load)하는 적재기(Loader, 30)와 인터페이스부(20)가 필요하다. 인터페이스부(20)는 RS232C와 같은 시리얼 인터페이스나 패러럴 인터페이스를 사용한다.
제2도는 종래의 디버깅 장치의 다른 실시예이다. 제2도에 있어서, 디버깅 장치는 원격 디버거(Remote Debugger, 70)와 ROM모니터(80)로 구성한다. 원격 디버거(70)와 ROM모니터(80)는 호스트 시스템(10)과 대상 시스템보드(50) 사이에서 통신하기 위해 인터페이스부(20)가 필요하다. 인터페이스부(20)는 RS232C와 같은 시리얼 인터페이스나 랜(근거리 통신망, Local Area Network) 카드등을 사용한다.
원격 디버거(70)는 호스트 시스템(10)에서 실행하면서 사용자와 인터페이스하여 디버깅될 펌웨어를 대상 시스템보드(50)의 RAM에 다운로드하고, 또한 사용자로부터 명령어를 받아 ROM모니터(80)에 전달한다. ROM모니터(80)는 명령어를 받아 실행한 후 실행결과를 다시 원격 디버거(70)에 전달한다. 이후 원격 디버거(70)는 대상 시스템보드(50)에서의 실행결과를 사용자에게 디스플레이한다.
그러나 제1도에 있어서 ROM에뮬레이터(40)는 펌웨어 코드 변경시 롬의 버닝(Burning)시간과 메모리소켓(60)에 롬을 설치(Install)하는 시간을 절약할 수 있으나 실제로 디버깅기능은 없다.
제2도에 있어서의 원격 디버거(70)는 펌웨어 코드를 디버깅할 수 있으나 다음과 같은 문제점이 있었다.
첫째, 원격 디버거(70)는 대상 시스템보드(50)의 인터페이스부(20)가 이상없이 동작하여야 한다. 그러나 대상 시스템의 개발초기에는 시스템이 불안정한 상태이기 때문에 원격 디버거(70)를 사용할 수 없다는 것을 의미한다.
둘째, ROM모니터(80)의 개발이다. ROM모니터(80)는 호스트 시스템(10)의 원격 디버거(70)로부터 명령어를 해석, 수행, 결과를 알려주는 것 이외에 인터페이스부(20)를 동작시키는 프로그램을 포함해야 하므로 개발하기가 어렵다.
셋째, 원격 디버거(70)는 디버깅을 원하는 펌웨어 코드가 실제로 롬에서 실행될 코드지만 여기에는 시스템의 램(RAM)에서 실행되므로 펌웨어 코드를 실제와 같은 환경에서 디버깅할 수 없다.
따라서 본 발명의 목적은 상술한 문제점들을 해결하기 위해 대상 시스템의 롬에서 동작하는 펌웨어를 디버깅할 수 있는 디버깅 장치 및 방법을 제공함에 있다.
상술한 목적을 달성하기 위하여 본 발명은 디버깅 장치에 있어서, 호스트 시스템(10)에서 실행하여 대상 시스템보드(50)의 펌웨어 코드를 디버깅하기 위한 펌웨어 디버거(Firmware Debugger, 90)와; 상기 대상 시스템보드(50)에서 펌웨어 코드의 수행을 제어하고, 결과를 상기 펌웨어 디버거(90)에 알려주기 위한 ROM모니터(80)와; 상기 펌웨어 디버거(90)로부터 명령어와 디버깅될 펌웨어 코드를 입력으로 받아들이고 상기 대상 시스템보드(50)에서 실행결과의 데이타전송을 제어하기 위한 마이크로 제어기(100), 상기 마이크로제어기(100)에 입력된 펌웨어 코드를 적재하고 상기 펌웨어 디버거(90)로부터의 명령어를 기록하는 메모리(120), 및 상기 ROM모니터(80)가 독출하는 데이타영역에 따라 0과 1로 디코딩하여 마이크로제어기(100)로 출력하기 위한 디코더 제어논리부(110)를 구비하여 상기 대상 시스템보드(50)의 롬영역을 담당하고, 상기 펌웨어 디버거(90)와 상기 ROM모니터(80)간의 명령어와 데이타를 통신하기 위한 디버거 제어부(130)를 포함함을 특징으로 한다.
상술한 목적을 달성하기 위하여 디버깅 방법에 있어서, 펌웨어 코드를 대상 시스템보드에 적재하여 실행하는 과정과; 상기 펌웨어 코드를 실행하는 과정에 의해서 실행 데이타를 독출하여 실행 데이타를 0, 1로 시리얼화하는 과정과; 상기 독출된 실행 데이타를 펌웨어 디버거에 전송하고 디버깅하는 과정을 포함함을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명에 대하여 상세히 설명하기로 한다.
제3도는 본 발명에 따른 디버깅 장치의 실시예이다.
먼저, 제3도에 도시된 장치의 구성관계를 설명하면 다음과 같다.
펌웨어 디버거(90)는 호스트 시스템(10)에 상주한다. 펌웨어 디버거(90)는 사용자로부터 명령어를 받아 대상 시스템보드(50)의 ROM모니터(80)와 디버깅되어질 펌웨어 코드를 디버거 제어부(130)에 다운로드한다. 또한 사용자의 명령어를 ROM모니터(80)로 보내어 ROM모니터(80)로부터 펌웨어 코드 실행결과를 사용자에게 디스플레이한다.
표 1은 펌웨어 디버거(90)에서 지원되는 주요 사용자 명령어들이다.
그리고 호스트 시스템(10)과 디버거 제어부(130)를 통신하기 위한 인터페이스(20)를 구성한다.
디버거 제어부(130)는 원칩인 마이크로 제어기(100)와 ROM모니터(80)의 ROM영역을 디코딩하기 위한 디코더 제어논리부(110)와 SRAM(Static RAM)으로 이뤄진 메모리(120)로 구성한다.
ROM모니터(80)는 대상 시스템보드(50)에 상주한다.
다음, 제3도의 장치의 동작을 설명하기로 한다.
제3도에 있어서, 펌웨어 디버거(90)가 사용자 명령어를 받아 ROM모니터(80)와 디버깅되어질 펌웨어 코드를 인터페이스부(20)를 통해 디버거 제어부(130)의 마이크로 제어기(100)에 입력된다. 마이크로 제어기(100)는 펌웨어 코드를 대상 시스템보드(50)의 ROM영역을 담당하는 메모리(120)로 적재한다.
다음 대상 시스템보드(50)의 전원을 온(ON)시키면 ROM모니터(80)가 실행하면서 호스트 시스템(10)에서 실행하고 있는 펌웨어 디버거(90)와 통신한다. 이때 사용자가 펌웨어 디버거(90)에게 명령어를 주면 펌웨어 디버거(90)는 사용자가 입력한 명령어를 ROM모니터(80)로 넘겨준다. ROM모니터(80)는 넘겨 받은 명령어로 펌웨어 코드를 대상 시스템보드(50)에 실행시킨다. 또한 실행한 결과를 펌웨어 디버거(90)에게 알려주고, 펌웨어 디버거(90)는 그 결과를 사용자에게 디스플레이한다.
다음, 펌웨어 디버거(90)와 ROM모니터(80)의 동작관계를 더 구체적으로 설명하기로 한다.
펌웨어 디버거(90)와 ROM모니터(80)간의 통신은 대상 시스템보드(50)의 ROM영역에 들어 있는 연속적인 4워드(Word)에 의존한다. 연속적인 4워드는 제어블럭(Control Block)이라 불리워진다. 제어블럭은 펌웨어 디버거(90)와 ROM모니터(80)가 통신할 수 있게 하는 메일박스(Mail Box)와 같은 곳이다.
제4도는 제어블럭의 구성도이다. 제어블럭은 펌웨어 디버거(90)가 ROM모니터(80)에게 사용자 명령어(Command)와 시스템이나 주변장치가 현재 동작하는 상태를 나타내는 상태(Status)를 주기 위하여 2워드가 할당되고, ROM모니터(80)가 펌웨어 디버거(90)에게 명령어를 실행한 후 결과를 알려주는데 사용하기 위하여 데이타 0과 데이타 1의 2워드가 할당된다.
제어블럭은 대상 시스템보드(50)에서 보면 ROM영역이지만 실제로는 디버거 제어부(130)의 SRAM으로 이루어진 메모리(120)영역이 대상 시스템보드(50)의 ROM영역을 담당하므로 마이크로 제어기(100)에 의해 명령어가 기록(Write)될 수 있다. 그러므로 펌웨어 디버거(90)가 인터페이스부(20)를 통해 마이크로 제어기(100)로 명령어를 전송하면 마이크로 제어기(100)는 명령어를 메모리(120)의 제어블럭영역에 기록한다. 따라서 ROM모니터(80)는 대상 시스템보드(50)의 ROM영역이라 할 수 있는 메모리(120)의 제어블럭을 독출함으로서 펌웨어 디버거(90)으로부터 명령어를 인식할 수 있다.
다음, ROM모니터(80)는 명령어를 실행한 후 실행한 결과를 펌웨어 디버거(90)에게 알려줘야 한다. 제어블럭은 대상 시스템보드(50)의 ROM영역이므로 대상 시스템보드(50)에서 실행결과를 ROM영역에 기록할 수 없다. 대부분의 시스템에서 ROM영역에 기록은 버스에러가 발생한다. 그래서 ROM모니터(80)는 ROM영역인 제어블럭에 기록할 수는 없으나 독출은 할 수 있으므로 ROM모니터(80)는 결과 데이타를 시리얼(Serial)로 1비트씩 분석하여 데이타가 0이면 결과 데이타를 시리얼(source)로 1비트씩 분석하여 데이타가 0이면 제어블럭의 데이타 0영역을 독출하고 데이타가 1이면 제어블럭의 데이타 1영역을 독출한다.
예를 들어 1바이트 데이타 10010011을 ROM모니터(80)가 펌웨어 디버거(90)로 알려주기를 원한다면 차례로 데이타 1영역, 데이타 0영역, 데이타 0영역, 데이타 1영역, 데이타 0영역, 데이타 0영역, 데이타 1영역, 데이타 1영역을 시리얼로 독출한다. 데이타영역을 독출하면 디버거 제어부(130)의 디코더 제어논리부(110)는 제어블럭의 어떤 영역이 독출되었는지 차례로 마이크로 제어기(100)로 0과 1를 출력한다. 마이크로 제어기(100)는 0과 1의 시리얼 데이타를 인터페이스부(20)를 통해 펌웨어 디버거(90)에게 알린다. 결국 ROM모니터(80)는 제어블럭에 기록하지 않고 독출하여 명령어들의 실행결과를 펌웨어 디버거(90)에게 알릴 수 있다. 펌웨어 디버거(90)는 실행결과에 따라 원래의 펌웨어 코드를 디버깅한다.
제5도는 본 발명에 따른 디버깅 방법의 흐름도이다.
제5도의 흐름을 제3도 및 제4도를 결부시켜 설명하기로 한다.
사용자가 코딩한 펌웨어 코드를 대상 시스템보드(50)에 적재한다(제10단계). 다음 대상 시스템보드(50)상에서 펌웨어 코드를 실행시켜 사용자가 원하는 정상실행이 되면 종료하고 정상실행이 안되면 디버깅 동작을 한다(제20,30단계).
먼저, ROM모니터(80)를 통해 제어블럭으로부터 실행데이타를 독출한다(제40,50단계). 만약 실행데이타가 0이면 ROM모니터(80)는 제어블럭의 데이타 0영역을 독출하고, 실행데이타가 1이면 ROM모니터(80)는 제어블럭의 데이타 1영역을 독출한다(제60,70,80단계).
다음, ROM모니터(80)가 제어블럭으로부터 독출한 영역에 따라 0,1값으로 시리얼화하여 펌웨어 디버거(90)에 전송한다(제90,100단계). 펌웨어 디버거(90)는 전송된 데이타에 따라 소스(source)코드를 디버깅한다(제110).
상술한 바와같이 펌웨어 디버거와 ROM모니터간의 명령어와 데이타통신을 원활하게 제어함으로서 펌웨어 코드 변경시 새로운 ROM에 대한 버닝시간과 설치시간을 절약할 수 있고, 대상 시스템보드의 개발초기에도 인터페이스에 대한 프로그램을 개발할 필요가 없으므로 펌웨어 코드에 대한 디버깅을 용이하게 할 수 있는 효과가 있다.

Claims (1)

  1. 펌웨어 디버거와 ROM모니터를 구비한 시스템의 디버깅 방법에 있어서; 펌웨어 코드를 대상 시스템보드에 적재하여 실행하는 과정과; 상기 펌웨어 코드를 실행하는 과정에 의해서 실행데이타를 독출하여 실행데이타를 0, 1로 시리얼화하는 과정과; 상기 독출된 실행 데이타를 펌웨어 디버거에 전송하고 코드를 디버깅하는 과정을 포함함을 특징으로 하는 디버깅 방법.
KR1019920014140A 1992-08-06 1992-08-06 디버깅장치 및 방법 KR970006024B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019920014140A KR970006024B1 (ko) 1992-08-06 1992-08-06 디버깅장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019920014140A KR970006024B1 (ko) 1992-08-06 1992-08-06 디버깅장치 및 방법

Publications (2)

Publication Number Publication Date
KR940004430A KR940004430A (ko) 1994-03-15
KR970006024B1 true KR970006024B1 (ko) 1997-04-23

Family

ID=19337596

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019920014140A KR970006024B1 (ko) 1992-08-06 1992-08-06 디버깅장치 및 방법

Country Status (1)

Country Link
KR (1) KR970006024B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100601164B1 (ko) * 1999-01-15 2006-07-13 삼성전자주식회사 플래시 롬을 이용한 에뮬레이터 및 펌웨어 업그레이드 방법

Also Published As

Publication number Publication date
KR940004430A (ko) 1994-03-15

Similar Documents

Publication Publication Date Title
US6094730A (en) Hardware-assisted firmware tracing method and apparatus
EP1170668A2 (en) Central processing unit for easily testing and debugging programs
EP1003099A2 (en) A method of updating firmware without affecting initialization information
KR100280637B1 (ko) 고정된플래시롬의데이터갱신이가능한컴퓨터시스템및그제어방법
US5634079A (en) System for providing for a parallel port with standard signals and a flash recovery mode with second predetermined signals redefining parallel port with alternate functions
JPH0764770A (ja) 遠隔的に書込み可能なepromを有するマイクロコントローラ装置及び書込み方法
US5361348A (en) Debug circuit of a signal processor
CN109426511B (zh) 软核更新方法和***
KR100762576B1 (ko) 임베디드 시스템의 플래시 메모리 덤프 방법 및 그 시스템
KR970006024B1 (ko) 디버깅장치 및 방법
US5168562A (en) Method and apparatus for determining the allowable data path width of a device in a computer system to avoid interference with other devices
JPS63216125A (ja) 装置タイプのエミユレ−ト可能なプリンタ装置
JPH03204749A (ja) プログラマブルコネクタ装置
CN114281390A (zh) 一种基于Zynq 7000的在线升级***及方法
KR100505700B1 (ko) 엠시유를 이용하여 다양한 목표 시스템을 검증하는 재탑재에뮬레이션 장치, 이를 구비한 마이크로 컴퓨터 개발시스템, 및 그 방법
KR100303307B1 (ko) 실시간 오퍼레이팅 시스템에서 디버깅동작을 위한 다운로드장치 및 방법
US6560698B1 (en) Register change summary resource
KR20020032256A (ko) 통합 임베디드 시스템 및 이의 구현 방법
CN113311931B (zh) 一种方便iap的双复位向量8位mcu架构及其方法
EP0378242A2 (en) Integrated circuit with a debug environment
KR100376055B1 (ko) 입출력 프로세서 커널의 다운로드 방법
US5680646A (en) Input/output control system
CN115016850A (zh) 一种基于国产处理器平台的uefi固件启动模式切换方法
JPH11175345A (ja) プログラマブルコントローラ
JPH0565894B2 (ko)

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J2X1 Appeal (before the patent court)

Free format text: APPEAL AGAINST DECISION TO DECLINE REFUSAL

G160 Decision to publish patent application
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20050727

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee