KR100682667B1 - 컴퓨터 윈도우 기반의 디지털 텔레비젼 수신기 시뮬레이션시스템 - Google Patents

컴퓨터 윈도우 기반의 디지털 텔레비젼 수신기 시뮬레이션시스템 Download PDF

Info

Publication number
KR100682667B1
KR100682667B1 KR1020050083447A KR20050083447A KR100682667B1 KR 100682667 B1 KR100682667 B1 KR 100682667B1 KR 1020050083447 A KR1020050083447 A KR 1020050083447A KR 20050083447 A KR20050083447 A KR 20050083447A KR 100682667 B1 KR100682667 B1 KR 100682667B1
Authority
KR
South Korea
Prior art keywords
dtv
simulation
function
hardware
access
Prior art date
Application number
KR1020050083447A
Other languages
English (en)
Inventor
배국호
김주원
Original Assignee
엘지전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘지전자 주식회사 filed Critical 엘지전자 주식회사
Priority to KR1020050083447A priority Critical patent/KR100682667B1/ko
Priority to CNA2006100919789A priority patent/CN1967502A/zh
Application granted granted Critical
Publication of KR100682667B1 publication Critical patent/KR100682667B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/015High-definition television systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 PC 윈도우를 기반으로 하여 고선명 디지털 텔레비젼 수신기(HDTV)의 소프트웨어 동작을 시뮬레이션(Simulation) 할 수 있도록 한 PC 윈도우 기반 HDTV 시뮬레이션 시스템에 관한 것이다.
본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템은, PC 윈도우 기반의 DTV 소프트웨어 시뮬레이션을 위하여; DTV의 OS로 사용되는 pSOS 시뮬레이터, DTV 소스코드, OSD 시뮬레이터 및 통신 인터페이스를 포함하는 윈도우 기반 PC와; DTV 소스코드, 하드웨어 인터페이스 및 통신 인터페이스를 포함하는 DTV; 가 통신 인터페이스를 기반으로 연결되고 PC에서 윈도우 기반으로 DTV 소프트웨어의 시뮬레이션을 수행함을 특징으로 한다.
DTV, 윈도우, PC, 시뮬레이션, 소프트웨어

Description

컴퓨터 윈도우 기반의 디지털 텔레비젼 수신기 시뮬레이션 시스템{DTV SIMULATION SYSTEM BASED ON PC WINDOW}
도1은 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템 구조를 나타낸 도면
도2는 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템 구성을 나타낸 블럭도
도3은 본 발명에 따른 시뮬레이션에서 DTV에 탑재된 arm 프로세서를 이용하여 하드웨어를 억세스 하기 위한 통신 계층도를 나타낸 도면
도4 및 도5는 본 발명에서 메모리 맵 I/O의 억세스 함수들의 리-디렉션 방법을 나타낸 도면
도6은 본 발명에 따른 시뮬레이션에서 IIC 버스에 연결된 하드웨어를 억세스 하는 방법을 나타낸 도면
도7은 본 발명에서 직렬 통신 데이터 포맷의 예를 나타낸 도면
도8은 본 발명에서 PC와 DTV 사이의 데이터 전송 방법의 예를 나타낸 도면
도9는 본 발명에서 런-길이 부호화 포맷의 예를 나타낸 도면
도10은 본 발명에서 시뮬레이션을 위한 DTV의 "keyboard task"의 상태 전이를 설명하기 위한 도면
도11은 본 발명에서 DTV의 "keyboard task"가 명령 데이터 패킷을 받아 처리하는 과정을 설명하기 위한 도면
도12는 본 발명에서 인터럽트 시뮬레이션을 위한 엑스터널 인터럽트 핸들러 함수의 예를 보인 도면
도13은 본 발명에서 인터럽트 시뮬레이션을 위한 초기화 및 종료 과정을 나타낸 도면
도14는 본 발명에서 인터럽트 시뮬레이션 트랜잭션(Transaction) 과정을 나타낸 도면
도15는 본 발명에 따른 OSD 시뮬레이션에서 코드 수정의 예를 나타낸 도면
본 발명은 PC 윈도우를 기반으로 하여 고선명 디지털 텔레비젼 수신기(HDTV)의 소프트웨어 동작을 시뮬레이션(Simulation) 할 수 있도록 한 PC 윈도우 기반 HDTV 시뮬레이션 시스템에 관한 것이다.
소프트웨어 개발 환경에서 생산성 향상을 위해서는 개발된 소프트웨어를 세트에 탑재하기 전에 그 소프트웨어의 동작 안정성에 대한 신뢰가 확보되어야 한다.
HDTV에 탑재되는 소프트웨어의 경우에도 개발한 소프트웨어의 동작을 확인하기 위해서는 최종 오브젝트 코드(Object Code)를 플래쉬 롬(Flash ROM)에 다운로드하여 TV 세트 상에서 시험하였다.
그렇지만 이와 같은 방법으로 소프트웨어 동작을 검증하는 것은 소프트웨어 다운로드에 적지않은 시간이 소요되므로 비효율적인 것은 물론, 실제 동작에 있어서도 통신 인터페이스, 예를 들면 RS-232C 인터페이스를 사용한 간단한 디버깅 기능만을 제공하였기 때문에, 문제점의 발견과 수정, 조치, 종합적인 판단과 계획의 수립 등에 많은 불편과 비효율성이 발생하였다.
이에, HDTV 소스(source) C 프로그램이 윈도우 플랫 폼(windows platform)의 Visual C++ IDE 환경에서 구동 될 수 있도록 pSOS 를 시뮬레이터로 구현 하고, 시뮬레이터를 기반으로 HDTV 소스 프로그램의 테스트와 디버깅을 할 수 있도록 IIC 버스 제어를 위한 인터페이스(interface) 하드웨어가 제공된 바 있다.
pSOS 시뮬레이터의 가장 큰 목적은 윈도우에 기반한 PC 시스템에서 DTV 프로그램을 작성하고 같은 시스템에서 DTV 프로그램을 실행시키면서 시스템의 다양한 측면을 모니터링 할 수 있게 함으로써 디버깅을 효과적으로 수행 할 수 있게 하는 것이다.
시뮬레이터가 PC에서 DTV 하드웨어와 무관하게 독립적으로 수행되는 것 보다는 리모트 디버거(Remote Debugger)를 사용하는 것처럼 시뮬레이션에서 DTV의 모든 하드웨어 IO 레지스터의 값을 실제적으로 읽어 볼 수 있게 하여 하드웨어 IO 레지스터에 어떠한 값이 현재 들어 있는지 확인 할 수 있고, DTV의 동작을 제어하기 위하여 DTV 하드웨어 IO 레지스터에 값을 직접 입력하여 DTV가 실제 어떻게 동작하는지를 확인할 수 있다면 디버깅이 훨씬 효과적으로 이루어 질 수 있다.
리모트 디버거(Remote Debugger)는 소프트웨어를 타겟(Target) 시스템에서 타겟 OS를 사용한 상태에서 실행시키면서 문제점을 찾을 수 있게 하기 때문에 디버깅 과정에 많은 도움이 될 수 있다. 리모트 디버거(Remote Debugger)를 사용하기 위해서는 타겟 코드(Target Code)가 타겟 시스템의 RAM에 로드(Load)되어야 한다. 타겟 코드가 플래쉬 메모리(Flash Memory)에 놓여질 경우 브레이크 포인트(Break Point)를 설정하기 위하여 한 개의 플래쉬 메모리 전체가 소거(Erase), 기록(Write)되는 과정을 거쳐야 하기 때문에 플래쉬 메모리를 사용한 시스템에 리모트 디버거를 사용하는 데는 실제적으로 많은 어려움이 있다.
또한 리모트 디버거를 사용하는 경우에 ROM 에뮬레이터가 없다면 프로그램 수정 후 타겟 코드를 매번 다시 다운로드하는 과정에서 시간이 많이 소요된다. 실제적으로 리모트 디버거는 병렬 포트를 사용한 ROM ICE를 포함한 하드웨어 개발 키트와 같이 사용되고 있다.
초기 DTV 소프트웨어 개발이 완료된 후에는 기 개발된 DTV 세트에서 소프트웨어의 수정과 보완 작업이 이루어지고 있다. 이러한 개발환경에서 타겟 코드를 타겟 시스템에 다운로드한 후 브레이크 포인트 설정하는데 문제가 있으므로 리모트 디버거의 사용에 어려움이 있다.
본 발명의 목적은 PC 윈도우 환경의 사용자 인터페이스(UI) 및 라인 디버거(Debugger) 개발 환경을 제공함으로써, 개발된 소프트웨어의 동작 검증에 효율성을 높이고, 소프트웨어 개발, 시험, 수정, 판단 및 계획의 효율성을 제고시킬 수 있도록 한 PC 윈도우 기반 HDTV 소프트웨어 시뮬레이션 시스템을 제공하는데 있다.
본 발명의 또 다른 목적은 윈도우에 기반한 PC 시스템에서 DTV 프로그램을 작성하고 같은 시스템에서 DTV 프로그램을 실행시키면서 시스템의 다양한 측면을 모니터링할 수 있게 함으로써, 디버깅을 효과적으로 수행할 수 있도록 하는데 있다.
본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템은, PC 윈도우 기반의 DTV 소프트웨어 시뮬레이션을 위하여; DTV의 OS로 사용되는 pSOS 시뮬레이터, DTV 소스코드, OSD 시뮬레이터 및 통신 인터페이스를 포함하는 윈도우 기반 PC와; DTV 소스코드, 하드웨어 인터페이스 및 통신 인터페이스를 포함하는 DTV; 가 통신 인터페이스를 기반으로 연결되고 PC에서 윈도우 기반으로 DTV 소프트웨어의 시뮬레이션을 수행함을 특징으로 한다.
또한 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템은, 상기 시뮬레이션에서 DTV 속에 있는 프로세서를 이용하여 하드웨어를 억세스 하기 위하여; PC와 DTV에는 I/O 억세스, 에뮬레이션 함수, 직렬 인터페이스 함수에 대한 피어 레이어(peer layer)를 포함하는 것과 함께, PC와 DTV 간의 물리적 통신 레이어를 구성함으로써, 시뮬레이션 상의 DTV 하드웨어 억세스 함수가 DTV에서 그대로 실행됨을 특징으로 한다.
또한 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템은, 상기 DTV 소프트웨어 시뮬레이션을 위하여 메모리 맵 I/O 함수, IIC 버스 억세스 함수, 인터럽트 처리를 위한 에뮬레이션 함수 및, 단일 하드웨어 제어가 아닌 I/O 억세스를 포 함하는 함수들을 하나의 시퀀스로 제어하기 위한 함수 호출 에뮬레이션 함수들을 포함하여 시뮬레이션 제어가 수행되는 것을 특징으로 한다.
또한 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템은, 상기 DTV 소스 코드가 컴파일 됨에 있어 Visual C++ 로 컴파일 할 경우에는 GPIO 억세스 함수들은 에뮬레이션 함수로 대체되고, isiarm 컴파일로 컴파일 시에는 GPIO 억세스 함수들은 메모리 맵 I/O 주소를 사용하여 직접적으로 억세스하는 문장으로 대체되는 것을 특징으로 한다.
또한 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템은, IIC 버스에 연결된 하드웨어들은 메모리 맵 I/O 억세스 함수를 통하여 제어됨을 특징으로 한다.
또한 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템에서, 상기 PC와 DTV 간의 직렬 통신을 위한 통신 데이터 포맷은, 전송 데이터의 시작과 끝을 나타내는 컨트롤 캐릭터, 데이터 패킷의 타입으로서 에뮬레이션 함수의 종류를 나타내는 명령 코드, 각 에뮬레이션 함수들이 사용하는 파라미터, 파라미터의 갯수, 체크섬 정보를 포함하는 것을 특징으로 한다.
또한 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템은, 상기 PC와 DTV 사이의 데이터 전송시 사용되는 스페셜 캐릭터로서; 데이터 패킷의 시작과 끝을 나타내는 컨트롤 캐릭터, 반복되는 데이터의 시작을 나타내는 캐릭터, PC윈도우 시스템 자체에서 정의되는 용도로 사용되는 캐릭터들을 포함하는 것을 특징으로 한다.
또한 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템은, 상기 반복되는 데이터 압축을 위하여 런-길이 코딩을 수행하는 것을 특징으로 한다.
또한 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템에서는, 상기 시뮬레이션이 PC에서 시작되면 시뮬레이션 초기화 과정에서 DTV와 연결을 시도하고, 상기 연결이 이루어지면 DTV의 "keyboard task"를 디버그 명령 입력 모드에서 시뮬레이션 모드로 그 스테이트(state)를 전이시킴으로써, DTV의 "keyboard task"가 시뮬레이션을 위한 리모트 에이전트(remote agent)을 수행함을 특징으로 한다.
또한 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템은, 상기 DTV의 'keyboard task"가 명령 데이터 패킷을 받고, 명령문을 해독하여 수행하고, 그 결과를 PC로 되돌려 주는 것을 특징으로 한다.
또한 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템은, 상기 PC에서 시뮬레이션 초기화 과정에서 인터럽트 핸들러를 실행할 "INTO" 타스크를 생성시키고, 이로부터 DTV의 인터럽트 시뮬레이션 인에이블이 유도되고, PC에서 시뮬레이터 프로그램 종료시 Exit() 함수를 실행하여 DTV의 인터럽트 시뮬레이션 디스에이블이 유도됨으로써 DTV에서 인터럽트 처리가 정상적으로 처리될 수 있도록 제어함을 특징으로 한다.
또한 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템은, OSD 시뮬레이션을 위하여; OSD 표시를 위한 함수들은 'drawing primitive' 함수에서 'redirec'되어 PC 윈도우에 표시되도록 함으로써 비디오 프로세서에 의한 OSD 시뮬레이션이 이루어지도록 제어하는 것을 특징으로 한다.
또한 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템은, DTV에 탑재되는 소프트웨어의 시뮬레이션을 위하여; PC는 윈도우를 기반으로 하고, DTV의 시뮬레이터를 포함하며, 소스코드 변환을 위한 컴파일러를 포함하고, DTV 하드웨어 억세스를 위한 수단 및 통신 인터페이스 수단을 포함하며; DTV는 PC의 제어를 받고 그 제어에 대한 응답을 PC로 전송하기 위한 통신 인터페이스 수단과, 프로세서 및 메모리 자원을 포함하여; PC에서 윈도우 기반으로 DTV 소프트웨어의 시뮬레이션을 수행함을 특징으로 한다.
또한 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템에서, 상기 통신 인터페이스 수단은 IIC 버스를 토대로 하는 제 1의 통신 인터페이스와, RS232C를 토대로 하는 제 2의 통신 인터페이스로 이루어지는 것을 특징으로 한다.
또한 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템에서, 상기 시뮬레이터는 DTV의 OS로 사용되고 있는 pSOS 시뮬레이터와, OSD 시뮬레이터를 포함하는 것을 특징으로 한다..
이하, 첨부된 도면을 참조하여 상기한 바와 같이 이루어지는 본 발명의 PC 윈도우 기반 HDTV 시뮬레이션 시스템의 실시예를 설명한다.
본 발명에서는 소프트웨어 개발환경에서 디버깅 단계에 도움을 줄 수 있는 시뮬레이션 환경을 구축하고 실제 소프트웨어 개발에 적용하여 시뮬레이터를 평가하고자 하였다.
본 발명에서는 리모트 디버거와 비슷한 개념의 리모트 에이전트(Remote Agent)를 타겟 시스템에 심어두되, 모든 소프트웨어의 동작은 PC 상의 시뮬레이터 에 의하여 실행되게 하고, DTV에 연결된 IO 디바이스의 제어 부분만 DTV에 심어둔 에이전트를 통하여 이루어지게 하는 방법을 구현하였다.
또한 이 시뮬레이터를 새로운 UI 시스템을 적용한 소프트웨어 개발 과정에 적용하여 문제점 분석과 해결방안을 찾고자 하였다.
도 1은 PC에서 DTV 소프트웨어를 시뮬레이션하고, 또한 PC상의 시뮬레이션에 DTV 하드웨어 제어를 포함하기 위한 시스템 구조를 보여주고 있다. PC(110)는 DTV 소스코드(111), pSOS 시뮬레이터(112), OSD 시뮬레이터(13), 직렬 인터페이스(114)를 포함하며, DTV(120)는 DTV 소스코드(121), 하드웨어 인터페이스(122), 직렬 인터페이스(123)를 포함한다.
여기서 시뮬레이터는 Visual C++ IDE 환경에서 동작되는 것을 기본으로 가정하였다. PC에서 DTV 소프트웨어를 실행시키기 위해서는 DTV의 OS(Operating System)로 사용되고 있는 pSOS 시뮬레이터가 있어야 하고, Isiarm 컴파일러용으로 작성된 DTV의 C 소스 코드가 Visual C++ 컴파일러에 의해서 컴파일 될 수 있어야 한다.
Isiarm 용 소스 코드가 Visual C++ 컴파일러에 의해 컴파일 될 수 있기 위해서는 DTV 소스 코드는 포팅(포트ing) 가능할 수 있도록 작성되어야 한다. 하드웨어 제어가 필요 없는 경우에는 PC와 TV의 연결이 필요 없으나, 시뮬레이션에 하드웨어 제어를 포함하기 위해서는 PC와 TV와의 연결이 필요하다.
현재 TV에서 제공되는 외부 통신 방법은 직려 포트(직렬 포트)와 IIC 포트가 있다. IIC 포트를 통한 하드웨어 제어는 IIC에 연결된 하드웨어 장치에 국한된다. 더욱이 TV 외부에 연결된 IIC 포트는 TV에 있는 3개의 IIC 채널 가운데 한 개이기 때문에 다른 IIC 채널에 대한 접근은 이루어 질 수 없다.
DTV 하드웨어 모든 부분에 대한 제어를 시뮬레이션에 포함하기 위해서는 DTV 내부에 있는 Arm 프로세서를 이용하는 것이 가장 좋은 방법으로 판단된다. 그림 1에 나타나는 바와 같이 DTV속에 들어 있는 Arm 프로세서를 이용하기 위해서는 Arm 프로세서에서 구동되는 에이전트 소프트웨어가 있어야 한다.
시뮬레이션을 위해서 사용되어야 하는 에이전트 소프트웨어는 PC와 통신을 수행할 수 있고, PC에서 요청하는 하드웨어 제어 명령을 수행하는 기능만 있으면 충분하다.
DTV 소프트웨어 속에는 기본적으로 하드웨어를 억세스(억세스)하는 함수들이 이미 포함되어 있기 때문에, 추가적으로 필요한 소프트웨어는 직렬 통신을 통해서 PC로부터 명령을 받아들이고, 명령을 해독하여 해당되는 하드웨어 억세스 명령을 수행하고, 그 결과를 PC로 보내는 기능만이 필요하다.
현재 DTV 소프트웨어는 디버깅을 위하여, PC에서 동작하는 통신 터미널 윈도우를 통하여 DTV 하드웨어에 대한 억세스를 할 수 있는 기능들이 포함되어 있다. PC의 통신 터미널 윈도우에서 매뉴얼 텍스트(Manual Text) 입력을 통해서 이러한 기능들을 사용할 수 있다. 시뮬레이션에서 하드웨어를 제어하는 방법은 이러한 기능들을 사용하는 방법과 비슷하나 하드웨어 억세스가 더 낮은 단계에서 이루어지고, 매뉴얼 텍스트 입력이 아닌 프로그램에 의하여 이루어진다는 점이 다르다.
도2는 본 발명에 따른 PC 윈도우 기반 DTV 시뮬레이션 시스템 구성을 나타낸 블럭도로서, 시뮬레이터(211)를 포함하며 윈도우 기반의 PC(210)와; CPU(221), HD칩(222)을 포함하는 DTV(220); 그리고 인터페이스 보드(230)가 PPI 및 RS-232C 기반의 통신수단을 통해서 서로 연결되어 있음을 보여준다.
도3은 시뮬레이션에서 DTV 속에 들어 있는 Arm 프로세서를 이용하여 하드웨어를 억세스하기 위한 통신 계층도를 보여주고 있다.
DTV 소프트웨어가 하드웨어를 억세스 할 때는 DTV 속에서는 실제적으로 하드웨어를 곧바로 억세스 하게 되나, 시뮬레이션에서는 소프트웨어가 PC에서 실행되고 있기 때문에 도3에 나타나 있는 통신 방법을 통하여 DTV 하드웨어에 대한 억세스가 이루어진다.
도3에 나타나 있는 바와 같이 PC와 DTV에는 I/O 억세스(310)(320), 에뮬레이션 함수(311)(321), 그리고 직렬 인터페이스 함수(312)(322)에 대한 피어 레이어(Peer Layer)가 존재한다. 물리적 통신 레이어는 RS232 통신을 사용한다. 도3에 나타나 있는 통신 계층도에 따라 시뮬레이션 상의 DTV 하드웨어 억세스 함수가 DTV에서 그대로 실행될 수 있어 DTV 하드웨어(323) 제어가 실제로 이루어지게 된다. DTV에서 구동되는 에뮬레이션 함수와 직렬 인터페이스 함수에 대한 프로그램은 "/SYSTEM/emulation.h" 와 "/SYSTEM/emulation.c" 파일 속에 들어있다.
다음은 에뮬레이션 인터페이스 함수에 대하여 알아본다.
DTV 소프트웨어 시뮬레이션에 하드웨어 에뮬레이션을 포함하는 이유는 시뮬레이션을 통하여 DTV를 직접 제어함으로써 DTV 소프트웨어를 실제적으로 검증하고 또한 시뮬레이션을 통한 디버깅 과정에서 실제로 하드웨어를 억세스하여 읽어 들인 값을 사용하고 DTV 하드웨어 제어에 대한 반응을 확인하고자 하는 것이다.
Arm 프로세서에서 동작하는 DTV 소프트웨어가 하드웨어를 제어하는 방법은 Arm 프로세서에 연결된 메모리 맵 입출력 레지스터(Memory Mapped I/O Register)의 리드/라이트 동작(Read/Write Operation)에 의하여 이루어진다. 모든 하드웨어 제어는 메모리 맵 I/O 리드 동작과 라이트 동작을 수행하는 단 두 개의 에뮬레이션 함수로 이루어 질 수 있으나, 다른 여러 가지 필요에 의해 표 1에 나타나 있는 바와 같이 10개의 에뮬레이션 함수를 준비하였다.
Figure 112005050146162-pat00001
메모리 맵 I/O 억세스 함수는 억세스 하고자 하는 데이터 크기에 따라 1 byte, 2 byte 그리고 4 byte 함수들로 구분하였고, IIC 버스 억세스 함수, 인터럽트(인터럽트) 처리를 위한 에뮬레이션 함수, 그리고 단일 하드웨어 제어가 아닌 I/O 억세스를 많이 포함하는 함수들을 하나의 시퀀스로 제어하기 위한 함수 호출(Function Call) 에뮬레이션 함수들을 포함하였다. 이들 함수가 도3에 표시된 I/O 억세스 레이어에서 실제 어떻게 구현되었는지 예를 들어 설명하고자 한다.
도4에서는 메모리 맵 I/O의 1 byte 억세스와 2 bytes 억세스를 위한 함수들의 리-디렉션(Redirection) 방법을 보여준다. Visual C++로 컴파일 할 때는 "PSOS_SIM" 매크로가 정의되어 있기 때문에 GPIO 억세스 함수들은 에뮬레이션 함수로 대체되고, isiarm 컴파일로 컴파일 시에는 "PSOS_SIM" 매크로가 정의되어 있지 않기 때문에 GPIO 억세스 함수들은 메모리 맵 I/O 주소를 사용하여 직접적으로 억세스하는 문장으로 대체된다.
예를 들면 도4에서 시뮬레이션에서는 GpioRd8(addr) 매크로는 Emul_GpioRd8((UINT32*)addr) 함수로 대체되고, Emul_GpioRd8() 함수에서 직렬 통신을 통하여 DTV에 1 byte I/O read 명령어가 전달되고, DTV에서는 (*(volatile unsigned*)(addr)) 문장의 'direct memory mapped I/O operation'을 통하여 얻어진 리드 값을 다시 직렬 통신을 통하여 전달하여 Emul_GpioRd8((UINT32*)addr) 함수의 리턴(Return) 값으로 되돌려진다. 이러한 과정을 통하여 하드웨어를 제어하는 함수는 DTV에서와 같은 동작(operation)을 수행한다.
도5는 메모리 맵 I/O의 4 bytes 억세스를 위한 함수들의 리-디렉션(Redirection)하는 방법을 보여준다. Visual C++로 컴파일 될 때는 "PSOS_SIM" 매크로가 정의되어 있기 때문에 32 bit 레지스터 억세스 명령문은 에뮬레이션 함수로 대체되고, isiarm 컴파일러로 컴파일 시에는 레지스터 억세스 함수들은 메모리 맵 I/O 주소로서 직접적으로 억세스 하는 문장으로 대체된다.
만약 모든 메모리 맵 I/O에 대한 억세스가 매크로를 사용하여 코딩되었다고 가정한다면, 메모리 맵 I/O에 대한 에뮬레이션을 위해서는 도4와 도5에 나타난 것과 같이 단순히 헤더(Hheader) 파일에 대한 약간의 수정만으로 시뮬레이션을 수행할 수 있다.
도6은 시뮬레이션에서 IIC 버스에 연결된 하드웨어 억세스를 위한 방법을 보여주고 있다. IIC 버스에 연결된 하드웨어들도 실제적으로는 IIC 콘트롤러 레지스터(Controller Register)를 억세스하여 제어되기 때문에 IIC 제어 에뮬레이션 함수를 별도로 만들 필요 없이 메모리 맵 I/O 억세스 함수를 통하여 이루어 질 수 도 있다.
IIC 제어 과정은 스테이터스 레지스터(Status Register)들을 여러 번 리드하고 레지스터들을 여번 라이트 하는 과정이 필요하기 때문에 만약 I/O 레지스터를 직접 억세스 하는 방식을 택하면 PC와 DTV 사이의 통신양이 많아지기 때문에 시뮬레이션이 느려질 수 있다.
또한 DTV가 시뮬레이션 모드(Mode)에 있을 때 DTV에서 동작하는 다른 타스크(Task)가 IIC 버스를 억세스를 할 가능성이 있다. 두 개의 타스크(Task)가 IIC 버스를 동시에 억세스하는 것은 배제되어야 하기 때문에 IIC 버스 억세스를 위해서는 세마포어(Semaphore)가 필요하다.
현재 IIC 억세스 함수 호출 계층에서 세마포어(Semaphore)를 포함하는 IIC 억세스 함수는 위의 예에 나타난 I2cCh1Read() 함수이다. 따라서 IIC 억세스 함수는 이 레벨에서 리-디렉트(Redirect) 되게 하였다. 메모리 맵 I/O 억세스 경우와 마찬가지로 I2cCh1Read() 함수는 Emul_I2cCh1Read()로 대체되어 지고, Emul_I2cCh1Read() 함수는 직렬 통신을 통하여 DTV에 명령을 전달하여 I2cCh1Read() 함수를 실행하게 한다. DTV에서 I2cCh1Read() 함수에 의하여 리드된 값은 다시 직렬 통신을 통하여 PC에 전달되어 Emul_I2cCh1Read()함수의 리턴 값으로 주어진다.
Emul_인터럽트(unsigned char operationCode) 함수는 인터럽트 동작(인터럽트 Operation) 제어를 위하여 사용되며 Emul_인터럽트() 함수의 파라미터(Parameter) 값에 따라 다른 동작(Operation)을 나타낸다.
DTV 프로그램 중에 Adec_LoadProgram() 함수나 Adec_UpProgram() 함수는 하드웨어 IO 억세스를 많이 하여야 한다. 이러한 함수를 시뮬레이터에서 실행하게 되면 시뮬레이션에 많은 시간이 소요된다. 더욱이 이러한 함수들이 초기화 과정에 포함되어 있다면 시뮬레이터의 기동 시간이 많이 걸린다는 문제점이 있다. 이러한 함수들의 코딩에 문제점이 없다고 가정한다면, 이러한 함수를 시뮬레이터에서 실행시키지 않고, 함수 전체를 DTV에서 실행하게 함으로써 시뮬레이션 진행 시간을 많이 단축시킬 수 있다. Emul_FuncCall() 함수는 이러한 용도로 사용할 수 있게끔 준비된 함수이다. Emul_FuncCall() 함수의 parameter 값에 따라 실행할 함수들을 연관시켜 리모트 프로시져 호출(Remote Procedure Call)처럼 사용할 수 있도록 하였다.
다음은 직렬 통신 데이터 포맷에 대하여 설명한다.
직렬 통신을 사용하여 PC와 DTV 간의 통신을 위해서는 통신 프로토콜이 결정되어야 한다. 도7은 각각 PC에서 DTV로, DTV에서 PC로 보내는 데이터 패킷 포맷을 보여주고 있다. 전송되는 데이터들은 데이터 시작과 끝을 나타내는 컨트롤 캐릭터(컨트롤 캐릭터)들로 싸여 있다.
이렇게 둘러싸인 데이터 패킷의 제일 앞에 있는 정보는 데이터 패킷의 타입(Type), 즉 에뮬레이션 함수의 종류를 나타내는 명령 코드(명령 Code)이다. 이어서 각 에뮬레이션 함수들이 사용하는 파라미터들이 포함된다. 파라미터의 개수, 파라미터의 데이터 타입들은 PC와 DTV의 피어 레이어(Peer Layer)에서 약속되어 있는 것으로 가정하여, 데이터 패킷의 길이를 나타내는 정보는 포함하지 않는다.
파라미터들에 이어서 체크섬 바이트(Checksum byte)가 포함된다. 체크섬 바이트(Checksum byte)는 명령 코드 바이트(명령 Code Byte), 파라미터 바이트(Parameter Byte)들, 그리고 체크섬 바이트 자체를 포함하여 합한 값이 0xFF 이 되도록 하였다. 데이터 전송 시간을 단축하기 위하여 데이터를 16진 ASCII 데이터(Hexadecimal Coded ASCII DATA)로 변환하지 않고 이진 데이터로 전송한다.
Figure 112005050146162-pat00002
표 2는 PC와 DTV 사이에 데이터 전송 시 사용되는 스페셜 캐릭터들을 보여주고 있다.
데이터 패킷의 시작과 끝을 나타내는 컨트롤 캐릭터(컨트롤 캐릭터), 반복되는 데이터 시작을 나타내는 캐릭터, 그리고 PC 윈도우 시스템 자체에서 특별 용도로 사용되는 캐릭터들이 포함되어 있다.
대부분의 컨트롤 캐릭터들은 ASCII 영문자 범위를 벗어나는 0xA0~ 0xAA 사이의 값으로 정의되었다. CNTRL_RESET 컨트롤 캐릭터는 DTV가 시뮬레이션 모드를 벗어나도록 하는데 사용되기 때문에, 통신 터미널 윈도우에서 매뉴얼 텍스트 입력으로 DTV가 시뮬레이션 모드에서 벗어날 수 있도록 영문자 'Q' 로 정의하였다.
표 2에 정의된 컨트롤 캐릭터들은 항상 각기 고유의 의미를 나타내는 컨트롤 캐릭터로 사용된다. 그러나 CNTRL_H0A, CNTRL_H11, 그리고 CNTRL_H13 코드는 실제적으로 데이터 전송에 관련된 컨트롤 캐릭터들은 아니다. 이들 캐릭터들을 DTV에서 PC로 전송하였을 경우 정상적으로 받아들여 지지 않기 때문에 컨트롤 캐릭터 세트에 포함 시켰다.
컨트롤 캐릭터들을 개별적으로 항상 고유의 의미를 나타내는 컨트롤 캐릭터로 사용할 때의 문제점은 명령 코드, 파라미터, 그리고 체크섬 바이트들 속에 컨트롤 캐릭터 코드 셋에 들어 있는 값과 같은 이진 값이 포함될 경우이다. 이런 경우에 이것의 이진 값을 그대로 보낸다면 이 이진 값이 컨트롤 캐릭터로 간주된다. 따라서 이러한 이진 코드는 그대로 볼 수 없다.
도8은 이러한 경우에 데이터 전송방법을 보여준다. 우선 CNTRL_INSERT 컨트롤 캐릭터를 보내고 이어서 원래의 이진 값에 옵셋(offset) 값(0x20)을 더한 값을 보낸다. 표2에 나타난 스페셜 캐릭터 코드값에 0x20을 합하였을 경우에는 스페셜 캐릭터 코드 셋에 포함되어 있는 어떠한 스페셜 캐릭터와 같은 값이 되지 않기 때문에, 컨트롤 캐릭터로 간주되지 않는다. 수신 측에서는 CNTRL_INSERT 컨트롤 캐릭터를 수신하면 그 다음에 들어오는 이진 값에서는 offset 값(0x20)을 뺀 값을 수신 데이터로 간주한다.
본 발명에서는 반복되는 데이터를 압축하기 위하여 런-길이-부호화(run length coding) 방법을 사용하였다.
도9는 런-길이 부호화 포맷을 나타낸다. 듀플리케이션(Duplication)을 나타내는 컨트롤 캐릭터, 반복 회수를 나타내는 리피트 카운터(repeat count) 값, 그리고 반복되는 캐릭터 값 자체를 나타내는 3바이트 캐릭터 시퀀스(3 byte 캐릭터 sequence)로 이루어져 있다. 그러나 반복회수를 나타내는 리피트 카운터 값이 스페셜 캐릭터 셋에 들어 있는 코드 값과 같을 경우, 또는 캐릭터 자체가 스페셜 캐릭터 셋에 들어 있는 코드 값과 같은 경우가 있다. 따라서 듀플리케이션을 나타내는 컨트롤 캐릭터는 다음의 표3과 같이 4가지 종류로 나누어야 한다.
Figure 112005050146162-pat00003
리피트 카운트 값이나 캐릭터 값이 스페셜 캐릭터 셋 코드 값들과 같을 경우에는 해당되는 듀플리케이션 컨트롤 캐릭터에 이어서 리피트 카운트 값이나 또는 캐릭터 코드 값에 offset 값(0x20)을 더해서 보내고 수신 시에는 offset 값을 빼어서 처리한다.
표4는 에뮬레이션 함수의 수행과정에서 필요한 직렬 통신 트랜잭션(트랜잭션)에 필요한 통신량을 보여주고 있다. 대체적으로 1 개의 에뮬레이션을 위한 트랜잭션(트랜잭션)에는 약 12 bytes 통신이 필요하고, 직렬 통신 보 레이트(baud rate)가 115200 이라고 가정한다면 대체적으로 12 x 10 / 115200 = 1 msec 정도의 시간이 소요된다.
Figure 112005050146162-pat00004
다음은 직렬 통신 프로토콜에 대해서 살펴본다.
시뮬레이션이 PC에서 시작되면 시뮬레이션 초기화 과정에서 DTV와 연결을 시도하고, 연결이 이루어지면 DTV의 "keyboard task"를 디버그 명령 입력 모드(debug 명령 input mode)에서 시뮬레이션 모드(simulation mode)로 "keyboard task"의 스테이트(state)를 전이시킨다.
DTV의 "keyboard task"가 시뮬레이션을 위한 리모트 에이전트(remote agent)의 역할을 한다.
도10은 시뮬레이션을 위한 DTV의 "keyboard task"의 상태 전이를 보여준다. "keyboard task"는 DTV 초기화 과정에서 디버그 명령 입력 모드(debug 명령 input mode)에 있어 PC의 터미널 윈도우를 통하여 여러 가지 종류의 입력을 받아들이고 명령에 따른 동작(action)을 수행한다. 이 과정에서 "keyboard task"는 디버그 명령 입력을 받아들이는 하위 단계의 스테이트로 전이될 수 있다.
따라서 PC에서 시뮬레이션을 시작하는 시점에서 DTV의 "keyboard task"가 어떠한 스테이트에 있는지 정확히 알 수가 없다. 디버그 명령 입력 모드에서는 "FF<ret>" 스트링(스트링)을 입력 받으면 바로 상위 스테이트로 전이 되므로, 초기화 과정에서 "FF<ret>" 캐릭터 스트링(캐릭터 스트링)을 여러 번 보냄으로써 "keyboard task"를 디버그 명령 입력 모드의 어떠한 스테이트에 있더라도 최 상위 스테이트로 가게 만든다.
그러나 만약 DTV의 "keyboard task"가 시뮬레이션 모드에 머물러 있었다면 "FF<ret>" 캐릭터 스트링을 보낸다고 해서 디버그 명령 입력 모드로 빠져 나오게 할 수 없으므로, "Q<ret>" 스트링을 보내어 확실하게 keyboard task를 디버그 명령 입력 모드의 최 상위 스테이트에 가도록 만든다.
이 상태에서 "s<ret>" 스트링을 보내어 DTV의 "keyboard task"가 시뮬레이션 모드로 들어가도록 만든다. DTV의 "keyboard task"가 시뮬레이션 모드로 진입할 때 PC에서 보내는 명령을 가능한 빨리 실행하여 그에 대한 결과를 PC로 되돌려 보낼 수 있도록 "keyboard task"의 우선권(priority)를 250으로 높인다. 그리고 DTV의"micom task"을 중지(suspend)시켜 외부 리모콘 입력 정보를 항상 PC의 시뮬레이터에서 동작하는 "micom task"가 가져갈 수 있게 만들고, "refresh task"와 "periodic task"를 중지(suspend)시켜 실제적으로 DTV에서 "keyboard task"를 제외한 다른 타스크(Task)들이 활성화(activate) 될 수 없도록 만든다.
시뮬레이션 초기화 과정에서 직렬포트가 오픈되지 않으면 적절한 메시지를 출력해 준다. 예를 들면 "RS232 Port Open Errot"라는 메시지 박스를 디스플레이 하여 준다. 이러한 경우는 직렬.cpp 파일 제일 앞부분에 있는
#define COM포트_ID 1
문장에서 COM포트_ID 값이 잘못 설정되었거나 혹은 통신 터미널 윈도우 프로그램에서 COM 포트를 오픈하여 사용하고 있을 경우이다. DTV와 PC 사이에 RS232 케이블이 연결되어 있지 않거나 또는 DTV의 전원이 오프 되어 있을 때는 "TV is not responding" 과 같은 예의 메시지 박스를 디스플레이 하여 DTV와의 통신이 이루어 질 수 없음을 알린다. 이러한 경우 시뮬레이션은 하드웨어에 대한 제어를 하지 않고 PC에서만 시뮬레이션을 수행한다.
시뮬레이션 프로그램을 정상적으로 종료시키면 시뮬레이션 프로그램이 종료되기 전에 Q<ret>" 스트링을 DTV로 보내어 "keyboard task"가 시뮬레이션 모드에서 벗어나 DTV의 정상적인 모드로 되돌아가게 만든다. "keyboard task"가 시뮬레이션 모드에서 나올 때 중지(suspend)시킨 타스크(Task)들을 회복(resume)시키고 "keyboard task"의 우선권(priority)은 원래 값으로 환원시킨다.
시뮬레이션이 정상적인 종료(exit) 과정을 수행하지 않은 상태로 끝나면 PC에서 시뮬레이션은 종료되었지만 DTV는 그대로 시뮬레이션 모드에 머물러 있어 DTV가 정상적으로 동작되지 않는다. DTV가 시뮬레이션 모드 상태로 있을 때 PC에서 시뮬레이션을 다시 시작 할 때는 위에서 설명한 바와 같이 별 문제 없이 다시 시뮬레이션 모드로 진입할 수 있다. 그러나 DTV가 시뮬레이션 모드 상태로 있을 때 PC에서 시뮬레이션을 비정상적으로 종료하면 DTV가 정상적인 모드로 돌아갈 수 없다. 물론 DTV의 전원을 오프시키고 다시 시작하면 DTV는 정상 모드로 들어가나, DTV의 전원을 오프시키지 않으면서 정상적인 모드로 가는 방법은 PC의 통신 터미널 윈도우에서 "Q<ret>" 텍스트를 수동으로 입력하면 된다.
도11은 DTV의 "keyboard task"가 명령 데이터 패킷을 받고, 명령문을 해독하여 수행하고, 그 결과를 PC로 되돌려 보내는 과정을 보여주고 있다.
인터럽트 요청을 제외한 모든 트랜잭션은 항상 PC의 시뮬레이터가 시작한다. DTV에서는 하드웨어 인터럽트를 받아들이기 위하여 인터럽트는 인에이블 되어 있는 상태가 되어야 한다. DTV가 인터럽트 인에이블 상태에서 직렬 포트로 데이터를 받아들일 수 있게 하기 위해서는 PC에서 <ret> 캐릭터로 끝나는 스트링을 전송하여야 한다. <ret>을 포함한 가장 짧은 스트링은 <ret> 캐릭터 만을 포함하는 스트링 이다.
DTV의 "keyboard task"가 <ret> 캐릭터를 수신하면 CNTRL_ACK 컨트롤 캐릭터를 PC로 보낸다. PC는 CNTRL_ACK 컨트롤 캐릭터를 수신하면 DTV가 데이터를 받을 준비가 되어 있는 것으로 간주하여 명령 데이터 패킷을 보낸다. DTV는 CNTRL_ACK 컨트롤 캐릭터를 PC로 보낸 후 수신하는 캐릭터에 대한 에코우 캐릭터를 보내지 않기 위하여 인터럽트를 디스에이블시킨 후 명령 데이터 패킷을 수신한다.
명령 데이터 패킷 수신을 완료하면 인터럽트를 인에이블 시키고 받아들인 명령에 대한 동작(action)을 수행하고 그 결과를 PC로 보낸다. DTV에서 PC로 결과 데이터 패킷을 보낼 때 데이터 패킷 사이에 다른 캐릭터가 끼이지 못하게 인터럽트를 디스에이블시키고 데이터를 전송한다. 결과 데이터를 전송한 후 DTV는 인터럽트를 다시 인에이블 시킨다.
다음은 인터럽트 시뮬레이션에 대해서 살펴본다.
시뮬레이션이 제대로 동작되기 위해서는 DTV에서 발생하는 인터럽트 처리를 시뮬레이션에 포함 시킬 수 있어야 한다. DTV의 정상 동작 상태에서는 DTV에서 발생되는 모든 인터럽트가 DTV에서 실행되는 인터럽트 핸들러에 의하여 처리되나, 시뮬레이션 과정에서는 DTV에서 발생되는 인터럽트에 대한 핸들러가 시뮬레이터에 의해서 실행되도록 한다. 현재는 Arm 프로세서에 발생되는 인터럽트중 엑스터널(external) 인터럽트만을 시뮬레이터에서 처리하도록 하였다.
도12는 인터럽트 시뮬레이션을 위한 엑스터널(external) 인터럽트 핸들러 함수의 수정부분을 보여준다. DTV에서 엑스터널(external) 인터럽트가 발생하면 HD2IO_인터럽트핸들러() 함수가 실행된다. 이 때 interruptSimEnable flag 변수가 TRUE 이면 IntReq() 함수가 호출되어 PC에 인터럽트 발생을 알리고, DTV에서는 실제적인 인터럽트 처리는 하지 않고 인터럽트 핸들러를 빠져나온다.
Figure 112005050146162-pat00005
인터럽트를 시뮬레이터에서 제어하기 위하여 Emul_Interrupt() 함수를 사용한다. 표 5는 Emul_Interrupt() 함수의 파라미터 값에 따른 동작 정의를 보여주고 있다. 파라미터 값이 '0' 일 경우는 DTV의 interruptSimEnable flag 변수를 FALSE로 만들고 '1' 일 경우는 interruptSimEnable flag 변수를 TRUE로 만든다. 파라미터 값이 '2' 일 경우는 스테이터스(Status) 값을 DTV에서 PC로 읽어온다.
도13은 인터럽트 시뮬레이션을 위한 시뮬레이터에서 초기화와 종료 과정을 보여주고 있다. PC에서는 시뮬레이션 초기화 과정에서 인터럽트 핸들러를 실행할 "INT0" 타스크를 생성시킨다. INT0 타스크는 생성되면서 Emul_Interrupt(1) 함수를 실행하게 하여 DTV의 interruptSimEnable 변수를 TRUE로 만들어 DTV에서 인터럽트 처리를 시뮬레이터가 할 수 있도록 준비한다. PC에서 시뮬레이터 프로그램 종료시 Exit() 함수를 실행하여 DTV의 interruptSimEnable 변수를 FALSE로 만들어 DTV에서 인터럽트 처리가 정상적으로 DTV에서 처리될 수 있도록 한다.
도14는 인터럽트가 DTV에서 발생하였을 경우 시뮬레이션에서 인터럽트를 어떻게 처리하는가를 보여준다. DTV에서 인터럽트가 발생하면 DTV의 인터럽트 서비스 루틴 함수가 실행되게 된다. 인터럽트 서비스 루틴 함수에서는 interruptSimEnable 변수값에 따라서 인터럽트 핸들러가 DTV에서 실행될지 아니면 PC에서 실행될지가 결정된다. 만약 interruptSimEnable 변수값이 TRUE이면 스테이터스(status) 값을 읽어서 저장해 두고 즉시 PC로 CNTRL_INT_REQ control character를 전송한다. PC에서는 commThread task가 CNTRL_INT_REQ control character를 수신하면 즉시 "INT0 task"로 메시지를 전송한다. "INT0 task"는 메시지를 기다리는 상태로 있다가 메시지를 받으면 DTV에 저장되어 있는 스테이터스(status) 값을 읽어오고 읽어온 스테이터스(status) 값에 따라서 해당되는 인터럽트 핸들러를 실행한다.
다음은 Xm OSD 시뮬레이터에 대해서 살펴본다.
시뮬레이션 과정에서 생성되는 OSD를 DTV 스크린에 표시하기 위해서는 비디오 프로세서로 많은 데이터의 전송을 필요로 한다. 그러나 OSD를 표시하기 위한 모든 데이터를 에뮬레이션 함수를 통하여 DTV로 전달하는 것은 시간적인 제약 때문에 어려움이 있다. 따라서 OSD 표시를 위한 함수들은 "drawing primitive" 함수에서 리-디렉트(redirect) 되어 PC 윈도우에 표시 되도록 하였다.
Figure 112005050146162-pat00006
표 6은 비디오 프로세서의 OSD 표시를 위하여 제공되는 인터페이스 함수 중 사용되고 있는 함수들 만에 대하여 만들어진 시뮬레이션 함수를 보여주고 있다. 비디오 프로세서에 OSD 그래픽 정보를 제공하는 3개의 함수와 1 개의 디스플레이 함수가 구현되어 있다.
도 15는 본 발명에 따른 OSD 시뮬레이션에서 HD2OSD_OSD2_DrawImage() 함수가 HD_BmpCopySelfMasking() 함수로의 리-디렉트(redirect)되기 위한 코드 수정을 한 예를 보여준다. 시뮬레이션이 수행될 때 HD2OSD_OSD2_DrawImage() 함수의 원래의 코드가 수행되지 않고 HD_BmpCopySelfMasking() 함수가 실행되어 진다. 그러나 만약에 OSD 관련된 코드들도 시뮬레이션에 포함시키어 디버깅하고자 한다면 단순히 리턴(return); 문장을 코멘트(comment) 처리하면 PC 윈도우에 OSD를 표시 하게함과 동시에 DTV 화면에도 OSD를 표시하게 할 수 있다.
본 발명은 PC 윈도우를 기반으로 하여 DTV의 소프트웨어 시뮬레이션을 수행할 수 있는 기반을 제공한다. 따라서, 소프트웨어 개발 환경에서 보다 더 편리하고 효율적인 동작 검증과 자료의 수집, 분석, 수정 등을 이룰 수 있게 되며, 특히 소프트웨어 검증에 필요한 시간 단축과 효율성 제고를 통해서 디버깅을 보다 더 효과적을 수행할 수 있게 된다.

Claims (15)

  1. PC 윈도우 기반의 DTV 소프트웨어 시뮬레이션을 위하여;
    DTV의 OS로 사용되는 pSOS 시뮬레이터, DTV 소스코드, OSD 시뮬레이터 및 통신 인터페이스를 포함하는 윈도우 기반 PC와;
    DTV 소스코드, 하드웨어 인터페이스 및 통신 인터페이스를 포함하는 DTV; 가 통신 인터페이스를 기반으로 연결되고 PC에서 윈도우 기반으로 DTV 소프트웨어의 시뮬레이션을 수행함을 특징으로 하는 PC 윈도우 기반 DTV 시뮬레이션 시스템.
  2. 제 1 항에 있어서, 상기 시뮬레이션에서 DTV 속에 있는 프로세서를 이용하여 하드웨어를 억세스 하기 위하여;
    PC와 DTV에는 I/O 억세스, 에뮬레이션 함수, 직렬 인터페이스 함수에 대한 피어 레이어(peer layer)를 포함하는 것과 함께, PC와 DTV 간의 물리적 통신 레이어를 구성함으로써,
    시뮬레이션 상의 DTV 하드웨어 억세스 함수가 DTV에서 그대로 실행됨을 특징으로 하는 PC 윈도우 기반 DTV 시뮬레이션 시스템.
  3. 제 1 항에 있어서, 상기 DTV 소프트웨어 시뮬레이션을 위하여 메모리 맵 I/O 함수, IIC 버스 억세스 함수, 인터럽트 처리를 위한 에뮬레이션 함수 및, 단일 하드웨어 제어가 아닌 I/O 억세스를 포함하는 함수들을 하나의 시퀀스로 제어하기 위 한 함수 호출 에뮬레이션 함수들을 포함하여 시뮬레이션 제어가 수행되는 것을 특징으로 하는 PC 윈도우 기반 DTV 시뮬레이션 시스템.
  4. 제 3 항에 있어서, 상기 DTV 소스 코드가 컴파일 됨에 있어 Visual C++ 로 컴파일 할 경우에는 GPIO 억세스 함수들은 에뮬레이션 함수로 대체되고, isiarm 컴파일로 컴파일 시에는 GPIO 억세스 함수들은 메모리 맵 I/O 주소를 사용하여 직접적으로 억세스하는 문장으로 대체되는 것을 특징으로 하는 PC 윈도우 기반 DTV 시뮬레이션 시스템.
  5. 제 3 항에 있어서, IIC 버스에 연결된 하드웨어들은 메모리 맵 I/O 억세스 함수를 통하여 제어됨을 특징으로 하는 PC 윈도우 기반 DTV 시뮬레이션 시스템.
  6. 제 1 항에 있어서, 상기 PC와 DTV 간의 직렬 통신을 위한 통신 데이터 포맷은, 전송 데이터의 시작과 끝을 나타내는 컨트롤 캐릭터, 데이터 패킷의 타입으로서 에뮬레이션 함수의 종류를 나타내는 명령 코드, 각 에뮬레이션 함수들이 사용하는 파라미터, 파라미터의 갯수, 체크섬 정보를 포함하는 것을 특징으로 하는 PC 윈도우 기반 DTV 시뮬레이션 시스템.
  7. 제 1 항에 있어서, 상기 PC와 DTV 사이의 데이터 전송시 사용되는 스페셜 캐릭터로서; 데이터 패킷의 시작과 끝을 나타내는 컨트롤 캐릭터, 반복되는 데이터의 시작을 나타내는 캐릭터, PC윈도우 시스템 자체에서 정의되는 용도로 사용되는 캐릭터들을 포함하는 것을 특징으로 하는 PC 윈도우 기반 DTV 시뮬레이션 시스템.
  8. 제 7 항에 있어서, 상기 반복되는 데이터 압축을 위하여 런-길이 코딩을 수행하는 것을 특징으로 하는 PC 윈도우 기반 DTV 시뮬레이션 시스템.
  9. 제 1 항에 있어서, 상기 시뮬레이션이 PC에서 시작되면 시뮬레이션 초기화 과정에서 DTV와 연결을 시도하고, 상기 연결이 이루어지면 DTV의 "keyboard task"를 디버그 명령 입력 모드에서 시뮬레이션 모드로 그 스테이트(state)를 전이시킴으로써, DTV의 "keyboard task"가 시뮬레이션을 위한 리모트 에이전트(remote agent)을 수행함을 특징으로 하는 PC 윈도우 기반 DTV 시뮬레이션 시스템.
  10. 제 9 항에 있어서, 상기 DTV의 'keyboard task"가 명령 데이터 패킷을 받고, 명령문을 해독하여 수행하고, 그 결과를 PC로 되돌려 주는 것을 특징으로 하는 PC 윈도우 기반 DTV 시뮬레이션 시스템.
  11. 제 1 항에 있어서, 상기 PC에서 시뮬레이션 초기화 과정에서 인터럽트 핸들러를 실행할 "INTO" 타스크를 생성시키고, 이로부터 DTV의 인터럽트 시뮬레이션 인에이블이 유도되고, PC에서 시뮬레이터 프로그램 종료시 Exit() 함수를 실행하여 DTV의 인터럽트 시뮬레이션 디스에이블이 유도됨으로써 DTV에서 인터럽트 처리가 정상적으로 처리될 수 있도록 제어함을 특징으로 하는 PC 윈도우 기반 DTV 시뮬레이션 시스템.
  12. 제 1 항에 있어서, OSD 시뮬레이션을 위하여; OSD 표시를 위한 함수들은 'drawing primitive' 함수에서 'redirec'되어 PC 윈도우에 표시되도록 함으로써 비디오 프로세서에 의한 OSD 시뮬레이션이 이루어지도록 제어하는 것을 특징으로 하는 PC 윈도우 기반 DTV 시뮬레이션 시스템.
  13. DTV에 탑재되는 소프트웨어의 시뮬레이션을 위하여;
    PC는 윈도우를 기반으로 하고, DTV의 시뮬레이터를 포함하며, 소스코드 변환을 위한 컴파일러를 포함하고, DTV 하드웨어 억세스를 위한 수단 및 통신 인터페이스 수단을 포함하며;
    DTV는 PC의 제어를 받고 그 제어에 대한 응답을 PC로 전송하기 위한 통신 인터페이스 수단과, 프로세서 및 메모리 자원을 포함하여;
    PC에서 윈도우 기반으로 DTV 소프트웨어의 시뮬레이션을 수행함을 특징으로 하는 PC 윈도우 기반 DTV 시뮬레이션 시스템.
  14. 제 13 항에 있어서, 상기 통신 인터페이스 수단은 IIC 버스를 토대로 하는 제 1의 통신 인터페이스와, RS232C를 토대로 하는 제 2의 통신 인터페이스로 이루어지는 것을 특징으로 하는 PC 윈도우 기반 DTV 시뮬레이션 시스템.
  15. 제 13 항에 있어서, 상기 시뮬레이터는 DTV의 OS로 사용되고 있는 pSOS 시뮬레이터와, OSD 시뮬레이터를 포함하는 것을 특징으로 하는 PC 윈도우 기반 DTV 시뮬레이션 시스템.
KR1020050083447A 2005-09-07 2005-09-07 컴퓨터 윈도우 기반의 디지털 텔레비젼 수신기 시뮬레이션시스템 KR100682667B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020050083447A KR100682667B1 (ko) 2005-09-07 2005-09-07 컴퓨터 윈도우 기반의 디지털 텔레비젼 수신기 시뮬레이션시스템
CNA2006100919789A CN1967502A (zh) 2005-09-07 2006-06-21 基于电脑视窗的数字电视接收机模拟系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050083447A KR100682667B1 (ko) 2005-09-07 2005-09-07 컴퓨터 윈도우 기반의 디지털 텔레비젼 수신기 시뮬레이션시스템

Publications (1)

Publication Number Publication Date
KR100682667B1 true KR100682667B1 (ko) 2007-02-15

Family

ID=38076285

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050083447A KR100682667B1 (ko) 2005-09-07 2005-09-07 컴퓨터 윈도우 기반의 디지털 텔레비젼 수신기 시뮬레이션시스템

Country Status (2)

Country Link
KR (1) KR100682667B1 (ko)
CN (1) CN1967502A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111880897A (zh) * 2020-07-24 2020-11-03 哈尔滨工业大学(威海) 一种Windows窗体应用程序行为模拟机器人及其工作方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980022722A (ko) * 1996-09-24 1998-07-06 배순훈 개인용컴퓨터를 이용한 비디오신호 검사장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980022722A (ko) * 1996-09-24 1998-07-06 배순훈 개인용컴퓨터를 이용한 비디오신호 검사장치 및 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111880897A (zh) * 2020-07-24 2020-11-03 哈尔滨工业大学(威海) 一种Windows窗体应用程序行为模拟机器人及其工作方法

Also Published As

Publication number Publication date
CN1967502A (zh) 2007-05-23

Similar Documents

Publication Publication Date Title
US5600790A (en) Method and system for loading and confirming correct operation of an application program in a target system
US6173438B1 (en) Embedded graphical programming system
US5600579A (en) Hardware simulation and design verification system and method
EP0814404A1 (en) Debugging apparatus for debugging a program
CN108614767A (zh) 一种远程调试方法及装置
CN113050508B (zh) 控制板的调试方法、装置、存储介质及调试设备
CN108664264A (zh) 一种基于cpu通过jtag方式远程更新fpga的装置和方法
US20010011215A1 (en) Network device simulation system and method
CN107729040A (zh) 一种单片机的iap方法及系统
KR100654428B1 (ko) 자바 프로그램의 처리 속도를 향상시키는 시스템 및 그 방법
CN108897558A (zh) 基于以太网协议的安全的fpga远程在线升级方法
KR100682667B1 (ko) 컴퓨터 윈도우 기반의 디지털 텔레비젼 수신기 시뮬레이션시스템
US7296187B1 (en) Hardware debug device having script-based host interface
KR100403195B1 (ko) 웹 기반 인서킷 에뮬레이터, 이를 이용한 타겟 임베디드시스템의 웹 기반 개발 시스템 및 방법
CN112241356B (zh) 一种页面测试方法、装置、设备及存储介质
TWI766977B (zh) 測試設備、非暫態電腦可讀介質及用於對設備驅動器軟體進行測試的方法
CN108737337B (zh) 设备处理方法、装置、服务器及系统
US9798649B1 (en) Debugging code controlling resource-constrained intelligent devices contemporaneously with executing object code
CN113641577A (zh) 一种终端产品应用程序的调试方法、装置
KR20050063023A (ko) 제이티에이지를 이용한 임베디드 시스템의 디버깅 장치 및방법
CN111880680A (zh) 一种触摸屏模拟调试方法、系统、装置及存储介质
CN113657069B (zh) 片上系统soc仿真验证方法、装置、验证服务器及存储介质
EP0598076A1 (en) Interface system for coupling two computer environments
KR19990081076A (ko) 메모리의 프로그램 업그레이드방법
TWI631477B (zh) Software development system

Legal Events

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

Payment date: 20130128

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140124

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150128

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160122

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170124

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180124

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee