KR101628774B1 - 함수를 이용한 시뮬레이션 수행 방법 - Google Patents
함수를 이용한 시뮬레이션 수행 방법 Download PDFInfo
- Publication number
- KR101628774B1 KR101628774B1 KR1020090038890A KR20090038890A KR101628774B1 KR 101628774 B1 KR101628774 B1 KR 101628774B1 KR 1020090038890 A KR1020090038890 A KR 1020090038890A KR 20090038890 A KR20090038890 A KR 20090038890A KR 101628774 B1 KR101628774 B1 KR 101628774B1
- Authority
- KR
- South Korea
- Prior art keywords
- simulator
- event
- simulation
- callback
- invocation
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/23—Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 미리 등록된 함수를 이용하여 시뮬레이션을 수행하는 방법에 관한 것으로 시뮬레이션을 수행하기 전에 휴대 단말기 시뮬레이터 또는 단말기 시뮬레이터에서 수행될 적어도 하나의 콜백 이벤트 및 적어도 하나의 상기 콜백 이벤트를 대체할 콜백 함수를 등록하는 과정; 상기 휴대 단말기 시뮬레이터 또는 단말기 시뮬레이터에서 상기 시뮬레이션을 수행하는 중에 상기 콜백 이벤트가 호출되면, 상기 호출된 콜백 이벤트를 대체할 콜백 함수를 확인하는 과정; 및 상기 확인된 콜백 함수가 수행된 결과에 따라 상기 시뮬레이션을 수행하는 과정을 갖는다.
시뮬레이션, Arm 시뮬레이터, X86 시뮬레이터, 콜백 함수
Description
본 발명은 소프트웨어를 개발 또는 생산성 향상을 위한 시뮬레이션 수행 방법에 관한 것으로 특히 어플리케이션을 시뮬레이션하기 위한 API 시뮬레이션 모델과 타켓 하드웨어에 맞게 컴파일된 타켓 바이너리를 시뮬레이션할 수 있는 Register I/O 시뮬레이션 모델을 이용하여 시뮬레이션을 수행하는 방법에 관한 것이다.
소프트웨어를 개발하기 위해 또는 소프트웨어의 생산성을 향상시키기 위해 일반적으로 시뮬레이터가 사용된다. 시뮬레이터는 가상으로 구축된 휴대 단말기 또는 컴퓨터와 같은 단말기 환경에서 소프트웨어를 테스트할 수 있는 장치이다. 그리고 시뮬레이터는 용도에 따라 도 1에서 도시된 바와 같이 다양한 구조로 구성된다.
도 1은 시뮬레이터의 스택 구조를 도시한 도면이다.
도 1을 참조하면, 시뮬레이션을 수행하기 위한 시뮬레이터의 스택 구조는 어플리케이션(110; application), 미들웨어(120; middleware), OS(130; Operationg System), 장치 드라이버(140; Device driver), 하드웨어(150; Hardware) 등이 있 다. 어플리케이션(110)은 문서 작성, 수치 계산, 게임 등과 같은 특정 목적을 위해 설계된 응용 그로그램들을 의미한다.
미들웨어(120)는 양쪽을 연결하여 데이터를 주고 받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어를 의미한다. 여기서 미들웨어(120)는 여러 운영 체제(유닉스, 윈도, z/OS 등)와 어플리케이션들 사이에 위치한다.
OS(130)은 휴대 단말기 또는 컴퓨터와 같은 단말기를 구성하는 하드웨어와 기본 시스템의 동작을 직접적으로 제어하고 관리하는 시스템 소프트웨어를 의미한다. OS(130)는 다른 어플리케이션들이 메모리와 입출력 장치를 사용할 수 있도록 만들어주고, 파일 시스템에 접근할 수 있도록 한다. 그리고 여러 개의 어플리케이션이 단말기에서 수행되고 있는 동안 OS(130)는 어플리케이션의 프로세스를 스케줄링하여 서로 방해없이 수행될 수 있도록 한다.
장치 드라이버(140)는 장치 제어기 또는 구동 드라이버로 불리며, OS(130)와 어플리케이션(110) 및 하드웨어(150) 간의 인터페이스를 담당하는 소프트웨어를 의미한다. 하드웨어(150)는 휴대 단말기 또는 컴퓨터와 같은 중앙처리 장치(CPU; central processing uint), 기억장치(memory unit), 입출력장치와 같은 전자, 기계 장치의 몸체를 의미한다.
시뮬레이터에서 제공될 수 있는 시뮬레이션들은 도 1에서 도시된 바와 같이 Middleware API Level(115), OS API Level(125), Low- Level API Level(135), Register I/O Level(145)이 될 수 있다. 만약 어플리케이션 개발을 목적으로 시뮬레이션이 수행되는 경우, 시뮬레이터는 Middleware API Level(115)에 대한 시뮬레 이션 모델을 제공한다. 어플리케이션과 미들웨어 개발을 목적으로 시뮬레이션이 수행되는 경우, 시뮬레이터는 OS API Level(125)에 대한 시뮬레이션 모델을 제공한다. 만일 어플리케이션, 미들웨어, OS 및 장치 드라이버를 포함한 전체 소프트웨어를 시뮬레이션해야 한다면, 시뮬레이터는 Register I/O 레벨의 시뮬레이션 모델을 제공한다.
Middleware API Level(115), OS API Level(125) 및 Low- Level API Level(135)과 같은 API 레벨의 시뮬레이션 모델(이하에서는 API 모델이라 칭한다.)은 호스트 단말기 환경에서 해당 어플리케이션에 대한 시뮬레이션이 수행될 때에 제공된다. 이때, 해당 소프트웨어에 대한 API 시뮬레이션 모델과 그 시뮬레이션 모델을 기반으로 시뮬레이션되는 소프트웨어는 호스트 단말기 환경에 맞도록 재컴파일된다. 즉 타겟 단말기의 환경에서 실행되도록 개발된 소프트웨어의 소스 코드가 호스트 단말기의 환경에서도 실행 가능하도록 포팅된다. 일반적으로 API 모델은 컴퓨터 환경을 가상적으로 구현한 X86 시뮬레이터에서 제공된다.
Register I/O Level(145)과 같은 시뮬레이션 모델(이하에서는 Register I/O 모델이라고 칭한다.)은 하드웨어에 맞게 컴파일된 타겟 바이너리(target binary)에 대한 시뮬레이션이 수행될 때에 제공된다. 이를 위해 타겟 단말기에 포함된 모든 하드웨어가 Register I/O Level(145)로 모델링된다. 그리고 모델링이 불가능한 하드웨어는 Register 접근 시 오동작하지 않도록 타겟 하드웨어의 소프트웨어를 수정하여 재빌드한다. 일반적으로 Register I/O 모델은 휴대 단말기의 환경을 가상적으로 구현한 Arm 시뮬레이터에서 제공된다.
그러나 API 모델은 하드웨어와 독립적으로 수행되는 시뮬레이션용 모델로 재사용성이 뛰어나다. 일반적으로 시뮬레이션 수행시 API 모델이 가장 많이 사용되나, 시뮬레이션 대상인 타겟 소프트웨어가 호스트 단말기의 CPU에 맞게 포팅되어야 한다. 그러나 포팅하는 과정은 프로그래머에 의한 100% 수작업으로 이루어진다. 따라서 포팅하는 과정에는 많은 시간이 소요되며, 실수가 생길 가능성이 있다. 또한 컴파일러의 차이로 인해 동작이 달라질 수 있는 부분을 사전에 완벽하게 파악하는 것이 불가능하다. 따라서 API 모델로 시뮬레이션하면, 소프트웨어의 안정화를 위해 상당한 테스트 기간이 필요하다. 그리고 호스트 단말기에서 동작되는 시뮬레이터용 소프트웨어와 타겟 단말기에서 동작하는 소프트웨어의 차이가 커질 수록 API 모델의 버젼 관리 및 유지 보수에 노력이 필요하다는 문제점이 발생한다.
Register I/O 모델은 타겟 하드웨어를 시뮬레이션할 수 있다. 그러나, 타겟 하드웨어가 변경되면, 변경된 하드웨어에 해당하는 Register I/O 모델을 새로 개발해야하므로 시뮬레이터의 재사용성이 떨어진다. 또한 Register I/O 모델은 전체 소프트웨어의 동작은 시뮬레이션하므로, API 모델을 통해 수행되는 시뮬레이션보다 속도가 느리다는 문제점이 있다.
상기와 같은 문제점을 해결하기 위해 본 발명은 등록된 함수를 이용하여 시뮬레이션을 수행하는 방법을 제공한다.
상기와 같은 목적을 달성하기 위해 본 발명의 실시예에 따른 시뮬레이션 수행 방법은 시뮬레이션을 수행하기 전에 휴대 단말기 시뮬레이터 또는 단말기 시뮬레이터에서 수행될 적어도 하나의 콜백 이벤트 및 적어도 하나의 상기 콜백 이벤트를 대체할 콜백 함수를 등록하는 과정; 상기 휴대 단말기 시뮬레이터 또는 단말기 시뮬레이터에서 상기 시뮬레이션을 수행하는 중에 상기 콜백 이벤트가 호출되면, 상기 호출된 콜백 이벤트를 대체할 콜백 함수를 확인하는 과정; 및 상기 확인된 콜백 함수가 수행된 결과에 따라 상기 시뮬레이션을 수행하는 과정을 포함한다.
본 발명에 따르면, 바이너리나 소프트웨어의 소스 코드의 수정 없이 Register I/O 모델을 이용한 시뮬레이션과 API 모델을 이용한 시뮬레이션을 병행할 수 있다. 따라서 API 모델을 이용한 시뮬레이션의 장점인 시뮬레이터의 재사용성이 보장되며, Register I/O 모델의 장점을 유지할 수 있다. 다시 말해 API 모델을 이용하여 시뮬레이션이 수행될 때, 호스트 단말기 상으로 소스 코드가 포팅되지 않아도 된다. 그리고 Register I/O 모델을 이용한 시뮬레이션이 수행될 때, 소스 코드를 이용하지 않고 바이너리만으로도 시뮬레이션이 가능하다.
이하 본 발명의 바람직한 실시 예들을 첨부한 도면을 참조하여 상세히 설명한다. 이 때, 첨부된 도면에서 동일한 구성 요소는 가능한 동일한 부호로 나타내고 있음을 유의해야한다. 또한 본 발명의 요지를 흐리게 할 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략할 것이다.
도 2는 본 발명의 실시예에 따른 시뮬레이터의 구성을 도시한 도면이다.
도 2를 참조하면, 시뮬레이터는 시뮬레이터 스케줄러(200) 및 휴대 단말기 시뮬레이터(210)와 단말기 시뮬레이터(220)로 구성된다. 이중 휴대 단말기 시뮬레이터(210)에는 ISS CPU(Instruction Set Simulator Central Processing Unit) 모델(213), Target Memory 모델(215), Target Peripheral 모델(217)이 포함된다. 그리고 단말기 시뮬레이터(220)에는 Host PC' Hx DLL(225; Host PS's Host extension Dynamic Link Library)가 포함된다. 그리고 Invocation event queue(230)가 휴대 단말기 시뮬레이터(210)와 단말기 시뮬레이터(220) 사이에 구성된다.
휴대 단말기 시뮬레이터(210)는 가상으로 휴대 단말기의 환경을 구현한 시뮬레이터를 의미한다. 여기서 휴대 단말기 시뮬레이터(210)는 Arm 코드를 이용한 시뮬레이션을 수행할 수 있다고 가정하여 설명하며, 이하에서는 휴대 단말기 시뮬레이터(210)를 Arm 시뮬레이터라 칭한다. 여기서 Arm 시뮬레이터(210)는 휴대 단말기를 구성하는 구성에서 이벤트를 수행할 때 나타날 수 있는 동작 결과와 동일한 결과를 도출할 수 있다.
단말기 시뮬레이터(220)는 가상으로 컴퓨터의 환경을 구현한 시뮬레이터를 의미한다. 여기서 단말기 시뮬레이터(220)은 win 32 코드를 이용한 시뮬레이션을 수행할 수 있다고 가정하여 설명하며, 이하에서는 단말기 시뮬레이터(220)를 X86 시뮬레이터라 칭한다. 여기서 X86 시뮬레이터(220)는 Arm 시뮬레이터(210)에 구현되지 않는 구성들을 대신하여 이벤트들을 수행하고, 그에 따른 결과를 도출할 수 있다.
시뮬레이터 스케줄러(200)는 미리 등록된 콜백 이벤트(callback event) 및 콜백 이벤트를 대체할 수 있는 콜백 함수(call back function)을 이용하여 Arm 시뮬레이터(210)와 X86 시뮬레이터(220)에서 수행되는 시뮬레이션을 스케줄링한다. 그러기 위해 시뮬레이터 스케줄러(200)는 시뮬레이션이 수행하기 전에 Arm 시뮬레이터(210)와 X86 시뮬레이터(220)를 초기화한다. 이때 시뮬레이터 스케줄러(200)는 콜백 이벤트 및 콜백 함수를 미리 등록한다. 여기서 콜백 이벤트는 인터셉션 콜백(Interception call back) 이벤트 및 인보케이션 콜백(Invocation call back) 이벤트로 구분될 수 있다. 그리고 콜백 함수는 인터셉션 콜백 함수와 인보케이션 콜백 함수로 구분될 수 있다.
좀 더 상세히 설명하면, 인터셉션 콜백 이벤트는 시뮬레이터 스케줄러(200)의 스케줄링을 통해 Arm 시뮬레이터(210)에서 시뮬레이션 수행시 X86 시뮬레이터(220)에서 수행될 수 있는 콜백 이벤트를 의미한다. 그리고 인보케이션 콜백 이벤트는 시뮬레이터 스케줄러(200)의 스케줄링을 통해 X86 시뮬레이터(220)에서 호출된 이벤트가 Arm 시뮬레이터(210) 상의 소프트웨어를 통해 수행될 수 있는 콜백 이벤트를 의미한다.
다음으로 인터셉션 콜백 함수는 Arm 시뮬레이터(210)에서 시뮬레이션 중에 발생되는 이벤트와 동일한 이벤트를 X86 시뮬레이터(220)에서 호출할 수 있도록 미리 등록되는 콜백 함수이다. 인보케이션 콜백 함수는 X86 시뮬레이터(220)에서 시뮬레이션 중에 발생되는 이벤트가 Arm 시뮬레이터(210)에서 수행될 수 있도록 미리 등록되는 콜백 함수이다.
ISS CPU 모델(213)은 휴대 단말기의 CPU(Central Processing unit)를 모델링한 것이다. ISS CPU 모델(213)은 시뮬레이터 스케줄러(200)의 제어 하에 휴대 단말기의 CPU와 같이 Arm 시뮬레이터(210)를 구성하는 모델들을 제어하여 API 모델을 이용한 시뮬레이션을 구현할 수 있다. 그리고 ISS CPU 모델(213)은 모델링이 불가능하거나, Register I/O 모델이 필요하지 않은 주변 장치에 대한 함수를 X86 시뮬레이터(220)로부터 호출하는 이벤트를 수행한다. 이러한 함수 호출 이벤트는 인터셉션 콜백 이벤트라 칭한다.
Target Memory 모델(215)은 휴대 단말기의 저장부를 모델링한 것이다. Target Memory 모델(215)은 ISS CPU 모델(213)의 제어 하에 휴대 단말기의 저장부와 같이 소프트웨어에 해당하는 Arm 코드를 저장할 수 있다.
Target Peripheral 모델(217)은 휴대 단말기의 표시부, 키입력부, 타이머와 같은 주변 구성들을 모델링한 것이다. Target Peripheral 모델(217)은 ISS CPU 모델(213)의 제어 하에 휴대 단말기에서 발생될 수 있는 키입력 이벤트, 타이머 이벤트 등을 구현할 수 있다.
Host PC' Hx DLL(225)는 시뮬레이터 스케줄러(200)의 제어 하에 win 32 코드 를 이용한 시뮬레이션을 수행한다. 여기서 Host PC' Hx DLL(225)는 시뮬레이션 수행 중 Arm 시뮬레이션 상의 소프트웨어를 통해 수행될 수 있는 이벤트가 호출되면, 호출된 이벤트에 해당하는 콜백 함수를 인보케이션 이벤트 쿼(230)에 등록시킬 수 있다. 여기서 콜백 이벤트는 인보케이션 콜백 이벤트라 칭한다.
인보케이션 이벤트 쿼(230)는 시뮬레이터 스케줄러(200)의 제어 하에 호출되는 콜백 함수에 의한 시뮬레이션을 수행하기 위해 Arm 또는 X86 시뮬레이터(220)의 제어권을 이동시킬 수 있다. 다시 말해 인보케이션 이벤트 쿼(230)는 Arm 시뮬레이터(210)에서 X86 시뮬레이터(220)로 또는 X86 시뮬레이터(220)에서 Arm 시뮬레이터(210)로 제어권을 스위치시킬 수 있다.
이와 같은 구성들로 이루어진 시뮬레이터에서 시뮬레이터 스케줄러(200)는 ISS CPU 모델(213), Target Peripheral 모델(217), 인보케이션 이벤트 쿼(230;Invocation event queue) 등을 시분할 스케줄링함으로써 시뮬레이션을 수행할 수 있다. 그리고 시뮬레이터 스케줄러(200)는 Arm 시뮬레이터(210)에서 Arm 코드로 구성된 소프트웨어를 시뮬레이션하는 중에 특정 이벤트가 호출되면, X86 시뮬레이터(220)를 이용하여 동일한 이벤트를 수행할 수 있다. 그러기 위해 시뮬레이터 스케줄러(200)는 Arm 시뮬레이터(210)에서 시뮬레이션 수행시, X86 시뮬레이터(220)에서 수행될 콜백 이벤트를 대체할 콜백 함수를 미리 등록한다. 여기서 특정 이벤트는 발신 통화, 메시지 송신 등과 같이 휴대 단말기가 외부로 데이터를 전송하는 이벤트들을 포함한다. 다음으로 인터셉션 이벤트가 수행되는 과정에 대하여 도 3을 참조하여 상세히 설명한다.
도 3은 본발명에 따른 휴대 단말기 시뮬레이터를 구성하는 스택 구조에서 시뮬레이션이 수행되는 방향을 나타낸 도면이다.
도 3을 참조하면, 발신 통화의 경우, Arm 시뮬레이터(210)는 call 어플리케이션(110)이 실행되면, 이에 해당하는 미들웨어(120)를 호출한다. 이때 시뮬레이터 스케줄러(200)는 Arm 시뮬레이터(210)에서 call 어플리케이션(110)을 수행하기 위한 OS 및 장치 드라이버(130, 140)가 호출되지 않도록 제어한다. 그리고 시뮬레이터 스케줄러(200)는 X86 시뮬레이터(220)에서 이에 해당하는 인터셉션 콜백 함수에 해당하는 시뮬레이션을 실행하도록 제어한다. 그리고 Arm 시뮬레이터(210)에서 시뮬레이션 수행시 호출되는 특정 이벤트는 인터셉션 이벤트라 칭한다. 이렇게 미리 해당 어플리케이션과 대응되는 인터셉션 콜백 함수가 등록되어 있기 때문에 시뮬레이터 스케줄러(200)는 Arm 시뮬레이터(210)에서 수행되는 call 어플리케이션(110)에 해당하는 소프트웨어가 X86 시뮬레이터(220)에서 실행되도록 소스 코드를 포팅하는 과정을 수행하지 않는다.
이상에서는 Arm 시뮬레이터(210)에서 시뮬레이션하는 동안 특정 어플리케이션이 호출되면, X86 시뮬레이터(220)에서 호출된 어플리케이션에 해당하는 인터셉션 콜백 함수를 수행하는 방법에 대하여 설명했다. 다음으로 X86 시뮬레이터(220)에서 시뮬레이션하는 방법에 대하여 설명한다.
X86 시뮬레이터(220)는 시뮬레이터 스케줄러(200)의 제어 하에 win 32 코드로 구성된 소프트웨어를 시뮬레이션한다. 만약 사용자에 의해 호출된 특정 이벤트가 Arm 시뮬레이터(210)에서 수행되는 소프트웨어로 수행될 수 있는 이벤트이면, X86 시뮬레이터(220)는 선택된 이벤트에 해당하는 인보케이션 콜백 함수를 인보케이션 이벤트 쿼(230)에 등록한다. 그러면 시뮬레이터 스케줄러(200)는 Arm 시뮬레이터(210)를 제어하여 인보케이션 이벤트 쿼(230)에 등록된 인보케이션 콜백 함수에 해당하는 시뮬레이션을 수행한다. 이때 인보케이션 콜백 함수는 X86 시뮬레이터(220)에서 Arm 시뮬레이터(210) 상의 소프트웨어를 통해 수행될 이벤트를 호출하기 위한 콜백 함수를 의미한다. 그리고 X86 시뮬레이터(220)에서 사용자에 의해 선택된 콜백 이벤트는 인보케이션 콜백 이벤트로, 휴대 단말기에서 수신 통화, 메시지 수신 등과 같이 휴대 단말기가 외부로부터 데이터를 수신하는 이벤트들을 포함한다. 다음으로 인보케이션 이벤트가 수행되는 과정에 대하여 도 4를 참조하여 상세히 설명한다.
도 4는 본발명에 따른 단말기 시뮬레이터를 구성하는 스택 구조에서 시뮬레이션이 수행되는 방향을 나타낸 도면이다.
도 4를 참조하면, 시뮬레이터 스케줄러(200)의 제어 하에 X86 시뮬레이터(220)에서 수신 통화를 시뮬레이션하는 경우를 가정하여 설명한다. 사용자에 의해 call 이벤트가 발생되면, X86 시뮬레이터(220)는 시뮬레이터 스케줄러(200)의 제어 하에 call 이벤트에 해당하는 인보케이션 콜백 함수를 호출한다. 그리고 X86 시뮬레이터(220)는 call 이벤트에 해당하는 인보케이션 콜백 함수를 Invocation event queue에 등록한다. 다음으로 Arm 시뮬레이터(210)는 시뮬레이터 스케줄러(200)의 제어 하에 미들웨어(120)에서 인보케이션 콜백 함수를 수행하고, 해당하는 call 어플리케이션(110)을 실행한다. 이에 따라 X86 시뮬레이터(220)에서 선택 된 특정 이벤트가 Arm 시뮬레이터(210)를 통해 수행될 때, X86 시뮬레이터(220)의 특정 이벤트에 대응되는 Arm 시뮬레이터(210)의 소프트웨어를 구성하는 소스 코드를 수정하지 않고도 시뮬레이션을 수행할 수 있다.
다음으로 등록된 콜백 함수를 이용하여 시뮬레이션을 수행하는 방법에 대하여 도 5를 참조하여 상세히 설명한다.
도 5는 본발명의 실시예에 따른 시뮬레이션을 수행하는 방법을 나타낸 흐름도이다.
도 5를 참조하면, 시뮬레이션을 수행하기 전에 시뮬레이터 스케줄러(200)는 510단계에서 휴대 단말기 시뮬레이터와 단말기 시뮬레이터를 초기화한다. 다시 말해 시뮬레이터 스케줄러(200)는 Arm 시뮬레이터(210)와 X86 시뮬레이터(220)를 구성하는 각 모델들을 초기화한다. 다음으로 시뮬레이터 스케줄러(200)는 520단계에서 콜백 이벤트로 수행될 인터셉션 콜백 이벤트와 인보케이션 콜백 이벤트 및 Arm 시뮬레이터(210)와 X86 시뮬레이터(220)에서 콜백 이벤트를 수행하기 위해 필요한 콜백 함수인 인터셉션 콜백 함수와 인보케이션 콜백 함수를 등록한다. 그리고 시뮬레이터 스케줄러(200)는 530단계에서 등록된 콜백 이벤트 및 콜백 함수를 이용하여 시뮬레이션을 수행한다. 시뮬레이션을 수행하는 방법은 도 6을 참조로 하여 상세히 설명한다.
도 6은 본 발명의 실시예에 따른 미리 등록된 콜백 함수를 이용하여 시뮬레이션을 수행하는 방법을 나타낸 흐름도이다.
도 6을 참조하면, 시뮬레이터 스케줄러(200)는 610단계에서 Arm 시뮬레이 터(210)에서 시뮬레이션 수행이 스케줄링되었는지 판단한다. 휴대 단말기의 환경에서 수행되는 소프트웨어가 시뮬레이션되려면, 시뮬레이터 스케줄러(200)는 Arm 시뮬레이터(210)를 스케줄링하여 해당 소프트웨어를 시뮬레이션하도록 한다. Arm 코드를 이용한 시뮬레이션 수행이 스케줄링되면, Arm 시뮬레이터(210)는 615단계에서 시뮬레이터 스케줄러(200)의 제어 하에 선택된 소프트웨어에 대하여 Arm 코드를 이용한 시뮬레이션을 수행한다.
시뮬레이터 스케줄러(200)의 스케줄링에 따라 시뮬레이션을 수행하는 중에 Arm 시뮬레이터(210)는 620단계에서 인터셉션 이벤트가 호출되었는지 판단한다. 인터셉션 이벤트가 호출되면, Arm 시뮬레이터(210)는 625단계에서 호출된 인터셉션 이벤트를 대체할 인터셉션 콜백 함수를 호출한다. 이렇게 호출된 인터셉션 콜백 함수는 인보케이션 이벤트 쿼(230)를 통해 X86 시뮬레이터(220)로 넘어가게 된다. X86 시뮬레이터(220)는 인터셉션 콜백 함수를 이용하여 시뮬레이션을 수행하고, 수행된 결과를 인보케이션 이벤트 쿼(230)를 통해 Arm 시뮬레이터(210)로 넘겨준다.
다음으로 Arm 시뮬레이터(210)는 630단계에서 X86 시뮬레이터(220)에서 수행된 인터셉션 콜백 함수 결과에 따른 시뮬레이션을 수행한다. 즉 Arm 코드를 이용하여 소프트웨어를 시뮬레이션하는 중에 이벤트가 호출되면, 호출된 이벤트가 X86 시뮬레이터(220)를 이용하는 인터셉션 이벤트인지 판단한다. 만약 X86 시뮬레이터(220)를 이용해야하는 인터셉션 이벤트이면, Arm 시뮬레이터(210)에서 호출된 이벤트에 해당하는 소스 코드를 미리 등록된 인터셉션 콜백 함수로 대체시킨다. 이에 따라 Arm 시뮬레이터(210)는 호출된 이벤트에 해당하는 소스 코드를 X86 시뮬레이 터(220)에서 사용되는 소스 코드로 포팅하지 않아도 된다.
X86 시뮬레이터(220)는 이렇게 대체된 인터셉션 콜백 함수를 수행하여 발생된 결과를 Arm 시뮬레이터(210)로 넘겨준다. 그러면 Arm 시뮬레이터(210)는 X86 시뮬레이터(220)에서 콜백 함수를 수행하여 발생된 결과를 이용하여 시뮬레이션을 수행한다.
다시 610단계로 돌아와서 Arm 시뮬레이터(210)에서 시뮬레이션이 수행되지 않으면, 시뮬레이터 스케줄러(200)는 640단계에서 X86 시뮬레이터(220)에서 시뮬레이션이 수행되도록 스케줄링되었는지 판단한다. X86 시뮬레이터(220)는 645단계에서 시뮬레이터 스케줄러(200)의 스케줄링에 따라 win 32 코드를 이용하여 시뮬레이션을 수행한다.
시뮬레이터 스케줄러(200)의 스케줄링에 따라 시뮬레이션 수행 중에 X86 시뮬레이터(220)는 650단계에서 인보케이션 이벤트가 호출되는지 판단한다. 인보케이션 이벤트가 호출되면, X86 시뮬레이터(220)는 655단계에서 인보케이션 이벤트를 대체하는 인보케이션 콜백 함수를 인보케이션 이벤트 쿼(230)에 등록한다. 그러면 시뮬레이터 스케줄러(200)는 660단계에서 Arm 시뮬레이터(210)에서 인보케이션 이벤트 쿼(230)에 등록된 인보테이션 콜백 함수에 따른 시뮬레이션을 수행하도록 스케줄링한다. 즉 win 32 코드를 이용하여 시뮬레이션을 수행하는 중에 사용자 선택에 의한 이벤트가 호출되면, 호출된 이벤트가 Arm 시뮬레이터(210)에서 수행되어야하는 인보케이션 이벤트인지 판단한다. 만약 Arm 시뮬레이터(210)를 이용해야하는 인보케이션 이벤트이면, Arm 시뮬레이터(210)에서 수행되는 소프트웨어의 소스 코 드를 수정하지 않고 미리 등록되어 있는 인보케이션 콜백 함수로 대체한다. 그리고 X86 시뮬레이터(220)는 인보케이션 콜백 함수를 인보케이션 이벤트 쿼(230)에 등록한다. 그러면 Arm 시뮬레이터(210)는 인보케이션 콜백 함수를 이용하여 시뮬레이션을 수행할 수 있다.
도 7은 본발명의 실시예에 따른 휴대 단말기 시뮬레이터와 단말기 시뮬레이터 간에 콜백 함수를 이용하여 시뮬레이션을 수행하는 방법을 나타낸 흐름도이다.
도 7을 참조하면, 시뮬레이션을 수행하기 전에 Arm 시뮬레이터(210)와 X86 시뮬레이터(220)는 710a단계와 710b단계에서 시뮬레이터 스케줄러(200)의 스케줄링에 따라 각 모델들을 초기화한다. 즉 Arm 시뮬레이터(210)를 구성하는 ISS CPU 모델(213), Target Memory 모델(215), Target Peripheral 모델(217)이 시뮬레이션을 수행하기 위해 초기화된다. 그리고 X86 시뮬레이터(220)를 구성하는 Host PC' Hx DLL(225)이 초기화된다. 이때 시뮬레이터 스케줄러(200)는 Arm 시뮬레이터(210)에서 시뮬레이션이 수행될 때 X86 시뮬레이터(220)에서 수행될 콜백 이벤트인 인터셉션 콜백 이벤트와 X86 시뮬레이터(220)에서 시뮬레이션이 수행될 때, Arm 시뮬레이터(210)에서 수행될 콜백 이벤트인 인보케이션 콜백 이벤트를 등록한다. 그리고 시뮬레이터 스케줄러(200)는 인터셉션 콜백 이벤트를 대체할 인터셉션 콜백 함수와 인보케이션 콜백 이벤트를 대체할 인보케이션 콜백 함수를 콜백 이벤트와 매핑하여 등록한다.
다음으로 시뮬레이터 스케줄러(200)의 스케줄링에 따라 Arm 시뮬레이터(210)는 720단계에서 사용자에 의해 선택된 소프트웨어를 테스트하기 위한 시뮬레이션을 수행한다. 그리고 730단계에서 X86 시뮬레이터(220)에서 수행되어야 하는 인터셉션 콜백 이벤트가 호출되면, Arm 시뮬레이터(210)는 740단계에서 X86 시뮬레이터(220) 상에서 인터셉션 콜백 이벤트를 대체하기 위해 미리 등록된 인터셉션 콜백 함수를 호출한다. 그러면 X86 시뮬레이터(220)는 750단계에서 호출된 인터셉션 콜백 함수에 대한 시뮬레이션을 수행한다. 그리고 X86 시뮬레이터(220)는 760단계에서 인터셉션 콜백 함수를 시뮬레이션한 수행 결과를 인보케이션 이벤트 쿼(230)를 통해 Arm 시뮬레이터(210)로 전달한다. Arm 시뮬레이터(210)는 770단계에서 X86 시뮬레이터(220)로부터 넘겨받은 수행 결과에 따라 시뮬레이션을 수행한다.
도 8은 본발명의 다른 실시예에 따른 휴대 단말기 시뮬레이터와 단말기 시뮬레이터간에 콜백 함수를 이용하여 시뮬레이션을 수행하는 방법을 나타낸 흐름도이다.
도 8을 참조하면, 우선 시뮬레이션을 수행하기 전에 Arm 시뮬레이터(210)와 X86 시뮬레이터(220)는 810a단계와 810b단계에서 시뮬레이터 스케줄러(200)의 스케줄링에 따라 각 모델들을 초기화한다. 즉 Arm 시뮬레이터(210)를 구성하는 ISS CPU 모델(213), Target Memory 모델(215), Target Peripheral 모델(217)이 시뮬레이션을 수행하기 위해 초기화된다. 그리고 X86 시뮬레이터(220)를 구성하는 Host PC' Hx DLL(225)이 초기화된다. 이때 시뮬레이터 스케줄러(200)는 Arm 시뮬레이터(210)에서 시뮬레이션이 수행될 때 X86 시뮬레이터(220)에서 수행될 콜백 이벤트인 인터셉션 콜백 이벤트와 X86 시뮬레이터(220)에서 시뮬레이션이 수행될 때, Arm 시뮬레이터(210)에서 수행될 콜백 이벤트인 인보케이션 콜백 이벤트를 등록한다. 그리고 시뮬레이터 스케줄러(200)는 인터셉션 콜백 이벤트를 대체할 인터셉션 콜백 함수와 인보케이션 콜백 이벤트를 대체할 인보케이션 콜백 함수를 콜백 이벤트와 매핑하여 등록한다.
그리고 시뮬레이터 스케줄러(200)의 스케줄링에 따라 X86 시뮬레이터(220)는 820단계에서 사용자의 선택에 따른 시뮬레이션을 수행한다. 그리고 830단계에서 Arm 시뮬레이터(210)에서 수행되어야 하는 인보케이션 콜백 이벤트가 호출되면, X86 시뮬레이터(220)는 740단계에서 호출된 인보케이션 콜백 이벤트에 대응되는 인보케이션 콜백 함수를 인보케이션 이벤트 쿼(230)에 등록한다. 그런 다음 시뮬레이터 스케줄러(200)의 스케줄링에 의해 Arm 시뮬레이터(210)는 850단계에서 등록된 인보케이션 콜백 함수를 호출한다.그리고 Arm 시뮬레이터(210)는 860단계에서 호출된 인보케이션 콜백 함수를 이용한 시뮬레이션을 수행한다. 좀 더 상세히 설명하면, Arm 시뮬레이터(210)는 시뮬레이터 스케줄러(200)에 의해 시뮬레이션이 수행되는 시간에 인보케이션 콜백 함수를 수행하는 미들웨어를 거쳐 해당하는 어플리케이션을 실행한다.
이상에서는 본 명세서와 도면에 개시된 본 발명의 실시예들은 본 발명의 기술 내용을 쉽게 설명하고, 본 발명의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기서 개시된 실시예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
도 1은 시뮬레이터의 추상 구조를 도시한 도면.
도 2는 본 발명의 실시예에 따른 시뮬레이터의 구성을 도시한 도면.
도 3은 본발명에 따른 휴대 단말기 시뮬레이터를 구성하는 구조에서 시뮬레이션이 수행되는 방향을 나타낸 도면.
도 4는 본발명에 따른 단말기 시뮬레이터를 구성하는 구조에서 시뮬레이션이 수행되는 방향을 나타낸 도면.
도 5는 본발명의 실시예에 따른 시뮬레이션을 수행하는 방법을 나타낸 흐름도.
도 6은 본 발명의 실시예에 따른 미리 등록된 콜백 함수를 이용하여 시뮬레이션을 수행하는 방법을 나타낸 흐름도.
도 7은 본발명의 실시예에 따른 휴대 단말기 시뮬레이터와 단말기 시뮬레이터 간에 콜백 함수를 이용하여 시뮬레이션을 수행하는 방법을 나타낸 흐름도.
도 8은 본발명의 다른 실시예에 따른 휴대 단말기 시뮬레이터와 단말기 시뮬레이터 간에 콜백 함수를 이용하여 시뮬레이션을 수행하는 방법을 나타낸 흐름도.
Claims (5)
- 휴대 단말기의 환경을 구현한 휴대 단말기 시뮬레이터와 단말기의 환경을 구현한 단말기 시뮬레이터를 스케줄링하는 시뮬레이터 스케줄러에서 함수를 이용한 시뮬레이션 수행 방법에 있어서시뮬레이션을 수행하기 전에 상기 휴대 단말기 시뮬레이터 또는 상기 단말기 시뮬레이터에서 수행될 적어도 하나의 콜백 이벤트 및 적어도 하나의 상기 콜백 이벤트를 대체할 콜백 함수를 등록하는 과정;상기 휴대 단말기 시뮬레이터 또는 단말기 시뮬레이터에서 상기 시뮬레이션을 수행하는 중에 상기 콜백 이벤트가 호출되면, 상기 호출된 콜백 이벤트를 대체할 콜백 함수를 확인하는 과정; 및상기 확인된 콜백 함수가 수행된 결과에 따라 상기 시뮬레이션을 수행하는 과정을 포함하는 시뮬레이션 수행 방법.
- 제1항에 있어서, 상기 확인하는 과정은,상기 휴대 단말기 시뮬레이터에서 상기 시뮬레이션을 수행하는 중에, 상기 단말기 시뮬레이터에서 수행될 상기 콜백 이벤트로서 인터셉션 콜백 이벤트가 호출되면, 상기 인터셉션 콜백 이벤트를 대체할 상기 콜백 함수로서 인터셉션 콜백 함수를 상기 단말기 시뮬레이터로 호출하는 과정을 포함하는 것을 특징으로 하는 시뮬레이션 수행 방법.
- 제1항에 있어서, 상기 확인하는 과정은,상기 단말기 시뮬레이터에서 상기 시뮬레이션을 수행하는 중에, 상기 휴대 단말기 시뮬레이터에서 수행될 상기 콜백 이벤트로서 인보케이션 콜백 이벤트가 호출되면, 상기 인보케이션 콜백 이벤트를 대체할 상기 콜백 함수로서 인보케이션 콜백 함수를 상기 단말기 시뮬레이터에서 등록하는 과정을 포함하는 것을 특징으로 하는 시뮬레이션 수행 방법.
- 제3항에 있어서, 상기 인보케이션 콜백 함수를 등록하는 과정은상기 휴대 단말기 시뮬레이터와 상기 단말기 시뮬레이터 간의 제어권을 스위치할 수 있는 인보케이션 이벤트 큐(Invocation event queue)에 등록하는 과정임을 특징으로 하는 시뮬레이션 수행 방법.
- 제1항에 있어서, 상기 등록하는 과정 이전에,상기 휴대 단말기 시뮬레이터와 상기 단말기 시뮬레이터를 구성하는 모델들을 초기화하는 과정을 더 포함하는 것을 특징으로 하는 시뮬레이션 수행 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090038890A KR101628774B1 (ko) | 2009-05-04 | 2009-05-04 | 함수를 이용한 시뮬레이션 수행 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090038890A KR101628774B1 (ko) | 2009-05-04 | 2009-05-04 | 함수를 이용한 시뮬레이션 수행 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100119961A KR20100119961A (ko) | 2010-11-12 |
KR101628774B1 true KR101628774B1 (ko) | 2016-06-10 |
Family
ID=43405756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090038890A KR101628774B1 (ko) | 2009-05-04 | 2009-05-04 | 함수를 이용한 시뮬레이션 수행 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101628774B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109614316B (zh) * | 2018-11-07 | 2022-04-19 | 中国航空工业集团公司西安飞机设计研究所 | 机载显示控制软件的测试方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001060241A (ja) | 1999-06-18 | 2001-03-06 | Avant Corp | 混在信号のシミュレーションのための非整数シミュレーション時間のスケジューリング |
JP2004094800A (ja) | 2002-09-03 | 2004-03-25 | Toshiba Corp | プログラムシミュレーション装置およびプログラムシミュレーション方法 |
JP2007527562A (ja) | 2003-07-10 | 2007-09-27 | オープン プラグ | 埋め込みシステムの中に統合されるソフトウェアコンポーネントを管理する方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11110429A (ja) * | 1997-10-02 | 1999-04-23 | Sony Corp | イベント発生装置、ハードウェアシミュレーション装置およびその方法 |
-
2009
- 2009-05-04 KR KR1020090038890A patent/KR101628774B1/ko not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001060241A (ja) | 1999-06-18 | 2001-03-06 | Avant Corp | 混在信号のシミュレーションのための非整数シミュレーション時間のスケジューリング |
JP2004094800A (ja) | 2002-09-03 | 2004-03-25 | Toshiba Corp | プログラムシミュレーション装置およびプログラムシミュレーション方法 |
JP2007527562A (ja) | 2003-07-10 | 2007-09-27 | オープン プラグ | 埋め込みシステムの中に統合されるソフトウェアコンポーネントを管理する方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20100119961A (ko) | 2010-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9836384B2 (en) | Testing device for real-time testing of a virtual control unit | |
US20130152077A1 (en) | Personal and pooled virtual machine update | |
US8176219B1 (en) | Router having routing engine software instance and interaface controller software instance on a single processor | |
JP7321839B2 (ja) | ハードウェア抽象化ソフトウェアレイヤを使用するシステムのための汎用仮想化プラットフォーム | |
CN100492387C (zh) | 基于Keil C51的软件保护开发的方法和系统 | |
CN112015522B (zh) | 系统功能扩展方法、装置及计算机可读存储介质 | |
US20220164216A1 (en) | VIRTUALIZING HARDWARE COMPONENTS THAT IMPLEMENT Al APPLICATIONS | |
Posadas et al. | POSIX modeling in SystemC | |
Scheipel et al. | Smartos: An os architecture for sustainable embedded systems | |
KR101628774B1 (ko) | 함수를 이용한 시뮬레이션 수행 방법 | |
EP3435229B1 (en) | System integration using virtualization | |
CN114489941B (zh) | 运行在宿主模式用户态的虚拟机管理方法及系统 | |
KR20130101222A (ko) | 플랫폼 최적화 가이드 정보 제공 시스템 및 그 가이드 제공 방법 | |
CN106970825B (zh) | 一种基于gdb可配置框架的arm7仿真目标机实现方法 | |
US8181188B2 (en) | Version resiliency for a host application and managed code | |
US20200401415A1 (en) | Operating system architecture for microkernel generations support | |
Daum et al. | Model stack for the pervasive verification of a microkernel-based operating system | |
JP2003150405A (ja) | 機器組込みプログラムのデバッグ方法 | |
Agrawal et al. | Real-time Embedded Software Systems | |
Daum et al. | A verification approach for system-level concurrent programs | |
Hu et al. | Safety critical applications and hard real-time profile for Java: a case study in avionics | |
US9830174B2 (en) | Dynamic host code generation from architecture description for fast simulation | |
Sinkkonen | Asymmetric multiprocessing of Linux and hard real-time systems | |
Wainer et al. | Experiences in modeling and simulation of computer architectures in DEVS | |
WO2013167394A1 (en) | Instruction execution simulation method using trapped addresses and associated hardware |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |