KR100751063B1 - 임베디드 시스템의 프로그램 개발을 위한 pc 기반의에뮬레이션 제공 방법 및 장치 - Google Patents
임베디드 시스템의 프로그램 개발을 위한 pc 기반의에뮬레이션 제공 방법 및 장치 Download PDFInfo
- Publication number
- KR100751063B1 KR100751063B1 KR1020050109751A KR20050109751A KR100751063B1 KR 100751063 B1 KR100751063 B1 KR 100751063B1 KR 1020050109751 A KR1020050109751 A KR 1020050109751A KR 20050109751 A KR20050109751 A KR 20050109751A KR 100751063 B1 KR100751063 B1 KR 100751063B1
- Authority
- KR
- South Korea
- Prior art keywords
- embedded system
- function
- command function
- emulation
- target code
- Prior art date
Links
Images
Classifications
-
- 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/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/47—Retargetable compilers
-
- 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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 임베디드 시스템의 프로그램 개발을 위한 PC 기반의 에뮬레이션 제공 방법 및 장치에 관한 것이다. 상기 방법은 임베디드 시스템을 타겟 시스템으로 하는 타겟 코드를 입력받는 단계, 상기 타겟 코드를 구동하는 단계, 상기 타겟 코드에 포함된 적어도 하나의 명령어 함수를 호출하는 단계, 상기 호출된 명령어 함수를 가공하는 단계 및 상기 가공된 명령어 함수를 임베디드 시스템으로 전송하는 단계를 포함하되, 임베디드 시스템은 명령어 함수에 대응되는 동작을 실행하는 것을 특징으로 한다.
임베디드 시스템, PC, 에뮬레이션
Description
도 1은 본 발명의 바람직한 일 실시예에 따른 PC 기반 에뮬레이션 제공 장치의 구성을 개략적으로 나타낸 도면.
도 2는 본 발명의 바람직한 일 실시예에 따른 PC의 구성도.
도 3은 본 발명의 바람직한 일 실시예에 따른 PC의 모듈 구성도.
도 4는 본 발명의 바람직한 일 실시예에 따른 임베디드 시스템의 어플리케이션 개발 절차를 개략적으로 나타낸 순서도.
도 5는 본 발명의 바람직한 일 실시예에 따른 PC 기반의 에뮬레이션 수행 절차를 나타낸 순서도.
도 6은 본 발명의 바람직한 일 실시예에 따른 어플리케이션이 실행되는 과정을 설명하기 위한 PC 및 임베디드 시스템의 일반적인 구성을 나타낸 도면.
도 7은 본 발명의 바람직한 일 실시예에 따른 PC 기반 에뮬레이션 실행 과정을 설명하기 위한 PC 및 임베디드 시스템의 구성을 나타낸 도면.
도 8은 본 발명의 바람직한 일 실시예에 따른 PC 기반의 에뮬레이션 수행 과 정에서 명령어 함수를 임베디드 시스템으로 전달하는 과정을 설명하기 위한 PC 및 임베디드 시스템의 구성도.
도 9는 본 발명의 바람직한 일 실시예에 따른 명령어 함수 테이블의 예를 나타낸 도면.
도 10은 본 발명의 바람직한 일 실시예에 따른 PC 기반의 작성된 타겟 코드의 명령어 함수가 PC 및 임베디드 시스템으로 전송되는 방법을 설명하기 위한 도면.
도 11은 본 발명의 바람직한 일 실시예에 따른 PC 기반 에뮬레이션 수행 방법이 적용되는 시스템 구성도.
<도면의 주요 부분에 대한 부호의 설명>
101 : PC
103 : 에뮬레이션 수행부
105, 109 : 통신 모듈
107 : 임베디드 시스템
본 발명은 임베디드 시스템의 프로그램 개발을 위한 PC 기반의 에뮬레이션 제공 방법 및 장치에 관한 것이다.
임베디드 시스템(Embedded System, 내장형 시스템)은 시스템을 동작시키는 소프트웨어를 하드웨어에 내장하여 특수한 기능만을 가진 시스템을 말하며, 개인용 컴퓨터와는 달리 특정한 요구사항을 가지고 있으며, 미리 정의된 작업(task)만을 수행한다. PC가 하드디스크와 같은 대용량 저장장치에 운영체제를 내장하고 있는 것과는 달리 임베디드 시스템은 OS와 응용프로그램들이 ROM(Flash)에 이미지 형태로 저장되어 있다가 부팅과 동시에 RAM Disk를 만든 후, RAM 디스크 상에 OS와 응용프로그램들이 구동되는 시스템이다. 이러한 임베디드 시스템의 예로 PDA, 휴대전화, 스마트폰 , 디지털TV, PMP, DVR, 네비게이터, 산업용 컨트롤러, 디지털카메라, USB 저장장치, 전기밥솥, 냉장고, MP3 플레이어 등이 있다.
임베디드 시스템에는 ARM, MIPS, Coldfire/68K, PowerPC, X86, PIC, 8051 등 많은 다양한 CPU 아키텍처가 사용된다. 임베디드 시스템의 개발을 위해서 일반적인 컴퓨터 프로그래머가 그렇듯이, 임베디드 시스템 설계자들도 프로그래밍을 위해 컴파일러, 어셈블러, 디버거 등을 사용한다. 임베디드 기반으로 소프트웨어를 개발하는 과정은 일반적으로 PC 기반의 개발에 비하여 많은 시간을 요구한다. 이는 코어의 실행 속도나 디버깅의 용이성도 문제가 될 수 있으나, 컨텐츠 제공자의 경우 고가의 디버거를 지니고 있지 아니하는 것이 보통이며, 임베디드 기반의 환경에 대한 이해가 부족하기 때문이다.
따라서 임베디드 시스템에서 사용될 프로그램을 개발하는 경우에 보통 PC 기반의 에뮬레이터를 사용한다. 에뮬레이션(emulation)은 한 컴퓨터가 다른 컴퓨터의 시스템과 똑같이 작동하도록 특별한 프로그램이나 기계적 방법을 사용하는 기법을 말한다. 종래의 PC 기반의 에뮬레이터의 경우 PC에서 작성된 프로그램은 PC에서만 실행되며, 이를 임베디드 시스템에서 잘 동작하는지 살펴보기 위해서는 PC에서 작성된 프로그램을 임베디드 시스템에 포팅하여 직접 실행해야 하는 단점이 있었다. 또한 임베디드 시스템을 기반으로 하는 가속칩이 개발되면 제대로 동작을 하는지 테스트를 하기 위해 간단한 샘플부터 게임 등을 실제로 실행시키는데, 이때 보통은 PC에서 동작하는 결과와 비교를 하게 된다. 이때 종래의 에뮬레이터의 경우에는 이러한 테스트가 PC 및 임베디드 시스템에서 따로 각각 진행되기 때문에 동기화시켜 작업하는 것이 어려우며, 양 시스템의 실행 속도도 다르며, 임베디드 시스템으로 매번 포팅해야 하는 불편함이 있었다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은 PC를 기반으로 임베디드 시스템의 소프트웨어를 개발하고 PC에서 뿐 아니라 임베디드 시스템에서도 직접 실행할 수 있는 PC 기반의 에뮬레이션 제공 방법 및 장치를 제공하고자 하는 것이다.
본 발명의 다른 목적은 PC에서 실행되는 에뮬레이션 결과를 PC와 연결된 임베디드 시스템의 타겟 보드에서 특별한 조작 없이도 확인할 수 있는 PC 기반의 에뮬레이션 제공 방법 및 장치를 제공하고자 하는 것이다.
본 발명의 다른 목적은 PC 기반으로 임베디드 시스템의 소프트웨어를 제작 및 디버깅한 다음 이것을 아무런 수정 과정도 거치지 아니하고 임베디드 시스템에 바로 적용 가능한 PC 기반의 에뮬레이션 제공 방법 및 장치를 제공하고자 하는 것이다.
상술한 목적들을 달성하기 위하여, 본 발명의 일 측면에 따르면 임베디드 시스템과 결합하며, 에뮬레이터 모듈 및 상기 임베디드 시스템과의 통신을 위한 통신 모듈을 포함하는 PC에서 PC 기반으로 에뮬레이션을 수행하는 방법에 있어서, 상기 임베디드 시스템을 타겟 시스템으로 하는 타겟 코드를 입력받는 단계, 상기 타겟 코드를 구동하는 단계, 상기 타겟 코드에 포함된 적어도 하나의 명령어 함수를 호출하는 단계, 상기 호출된 명령어 함수를 가공하는 단계 및 상기 가공된 명령어 함수를 임베디드 시스템으로 전송하는 단계를 포함하되, 상기 임베디드 시스템은 상기 명령어 함수에 대응되는 동작을 실행하는 것을 특징으로 하는 PC 기반의 에뮬레이션 수행 방법을 제공할 수 있다.
바람직한 일 실시예에서, 상기 방법은 PC에서 실행 여부를 판단하는 단계 및 상기 판단 결과 PC에서 실행되는 것으로 설정된 경우 상기 호출된 명령어 함수를 실행하는 단계를 더 포함하는 것을 특징으로 한다.
또한 상기 방법은 상기 명령어 함수가 시스템 함수인 경우 상기 명령어 함수를 미리 저장된 명령어 함수 테이블을 이용하여 상기 임베디드 시스템에 상응하는 함수로 변환하는 단계를 더 포함하는 것을 특징으로 한다. 또한 상기 PC 및 상기 임베디드 시스템은 TCP/UDP, UART 및 USB 중 어느 하나를 통해 결합하는 것을 특징으로 한다. 또한 상기 PC는 큐(Queue) 방식에 의하여 상기 명령어 함수를 임베디드 시스템으로 전송하는 것을 특징으로 한다.
본 발명의 다른 측면에 따르면, 임베디드 시스템과 결합하고, 에뮬레이터 모듈 및 상기 임베디드 시스템과의 통신을 위한 통신 모듈을 포함하여 PC 기반으로 에뮬레이션을 수행하는 PC에 있어서, 상기 임베디드 시스템을 타겟 시스템으로 하는 타겟 코드를 입력받는 수단, 상기 타겟 코드를 구동하는 수단, 상기 타겟 코드에 포함된 적어도 하나의 명령어 함수를 호출하는 수단, 상기 호출된 명령어 함수를 가공하는 수단 및 상기 가공된 명령어 함수를 임베디드 시스템으로 전송하는 수단을 포함하되, 상기 임베디드 시스템은 상기 명령어 함수에 대응되는 동작을 실행하는 것을 특징으로 하는 PC를 제공할 수 있다.
이어서, 첨부한 도면들을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 1은 본 발명의 바람직한 일 실시예에 따른 PC 기반 에뮬레이션 제공 장치의 구성을 개략적으로 나타낸 도면이다.
도 1을 참조하면, PC 기반 에뮬레이션 장치는 PC(101) 및 임베디드 시스템(Embedded System, 107)을 포함한다. 상기 임베디드 시스템(107)은 예로 PDA, 휴대전화, 스마트폰 , 디지털TV, PMP, DVR, 네비게이터, 산업용 컨트롤러, 디지털카메라, USB 저장장치, 전기밥솥, 냉장고, MP3 플레이어 등을 들 수 있다.
상기 PC(101)는 에뮬레이션 수행부(103) 및 임베디드 시스템(107)과 통신을 위한 통신 모듈(105)을 포함한다. 상기 임베디드 시스템(107)은 PC(101)와 통신을 위한 통신 모듈(109) 및 명령 수행부(111)를 포함한다. 이때 상기 임베디드 시스템(107)은 개발자가 프로그램 개발의 대상이 되는 타겟 시스템을 의미하며 기존의 임베디드 시스템과 비교하여 PC와 통신을 위한 통신 모듈(109)이 더 포함된 것을 제외하고는 동일한 구조를 갖는다.
상기 PC(101) 및 상기 임베디드 시스템(107)의 각각의 통신 모듈(105, 109)은 TCP/UDP, UART, USB 등의 통식 방식을 통해 결합될 수 있다. 상기 PC(101) 및 상기 임베디스 시스템(109)은 통신 모듈(105, 109)를 통해 큐(Queue) 방식으로 명령어 메시지를 주고받는다. 큐(queue) 방식은 컴퓨터의 기억 장치에서 데이터나 파일이 호출되는 형태의 한 가지 방식으로, 삭제, 추가, 갱신 따위의 액세스 작업을 할 때 먼저 입력된 정보부터 처리되는 형태를 말한다. 이때 상기 PC(101) 및 상기 임베디스 시스템(109)은 상기 임베디드 시스템의 특성에 따라서 동기 및 비동기 방식으로 명령어 메시지를 주고받을 수 있다. 비동기 방식으로 동작을 할 경우에는 명령어 큐의 크기가 커지는 것이 보통이고 이를 컨트롤하기 위하여 에뮬레이션 수행부(103) 및 명령 수행부(111)에는 태스크(Task)들이 존재한다. 동기 방식으로 동작하는 경우에는 명령어 큐의 크기가 작은 경우가 보통이며 이때 PC(101) 및 임베디드 시스템(107)의 양쪽의 태스크들이 하는 일도 줄어들게 된다.
상기 임베디드 시스템(107)을 타겟 시스템으로 하는 타겟 코드가 상기 PC(101)를 기반으로 작성되고 에뮬레이션을 실행하는 경우에, 상기 타겟 코드는 상 기 PC(101)의 에뮬레이터 수행부(103)에서 실행되며, 이와 동시에 상기 타겟 코드의 명령어들은 상기 통신 모듈(105, 109)을 통해 상기 임베디드 시스템(107)으로 전송되어 명령 수행부(111)에서 실행될 수 있다. 상기 PC(101)에서 작성된 상기 타겟 코드는 PC(101)에서만 실행될 수 있으며, 임베디드 시스템(107)에서만 실행되는 것도 가능하다.
도 2는 본 발명의 바람직한 일 실시예에 따른 PC의 구성도이다.
도 2를 참조하면, PC는 메모리 시스템(220), 여기에 결합되어 고속 동작을 수행하는 적어도 하나의 중앙 처리 장치(Central Processing Unit: CPU: 210), 입력 장치(230) 및 통신 장치(240)를 포함할 수 있다.
중앙 처리 장치(210)는 계산을 수행하기 위한 ALU(Arithmetic Logic Unit: 212)와, 데이터 및 명령어의 일시적인 저장을 위한 레지스터(214) 및 컨텐츠 서버의 동작을 제어하기 위한 컨트롤러(216)를 포함한다. 중앙 처리 장치(210)는 디지털(Digital) 사의 알파(Alpha), MIPS 테크놀로지, NEC, IDT, 지멘스(Siemens) 등의 MIPS, 인텔(Intel)과 사이릭스(Cyrix), AMD 및 넥스젠(Nexgen)을 포함하는 회사의 x86 및 IBM과 모토롤라(Motorola)의 파워PC(PowerPC)와 같이 다양한 아키텍쳐(Architecture)를 갖는 프로세서일 수 있다.
메모리 시스템(220)은 일반적으로 RAM(Random Access Memory)과 ROM(Read Only Memory) 같은 저장 매체 형태인 고속의 메인 메모리(222)와, 플로피 디스크, 하드 디스크, 테이프, CD-ROM, 플래시 메모리 등의 장기(long-term) 저장 매체 형 태의 보조 메모리(224) 및 전기, 자기, 광학이나 그 밖의 저장 매체를 이용하여 데이터를 저장하는 장치를 포함한다. 또한, 메인 메모리(222)는 디스플레이 장치를 통하여 이미지를 디스플레이하는 비디오 디스플레이 메모리를 포함할 수 있다.
또한, 입력 장치(230)는 키보드, 마우스 등을 포함한다. 마우스는 예컨대 터치스크린 또는 마이크로폰과 같은 물리적 변환기(Physical transducer) 등을 포함할 수 있다. 통신장치(240)는 임베디드 시스템과 통신을 수행하기 위한 통신 인터페이스를 포함한다.
도 3은 본 발명의 바람직한 일 실시예에 따른 PC의 모듈 구성도이다.
도 3을 참조하면, PC는 임베디드 시스템과의 통신을 처리하기 위한 송수신 처리 모듈(332), 임베디드 시스템을 타겟 시스템으로 하는 타겟 코드의 에뮬레이션을 수행하는 에뮬레이션 모듈(334) 및 타겟 코드의 명령어 함수를 미리 저장된 명령어 함수 테이블을 이용하여 임베디드 시스템에 상응하는 명령어 함수로 변환하는 명령어 함수 변환 모듈(336)을 포함할 수 있다. 상기 송수신 처리 모듈(332)은 도 1의 통신 모듈(105)을 포함하며, 에뮬레이션 모듈(334)은 도 1의 에뮬레이션 수행부를 포함하는 개념이다. 이러한 응용 모듈을 통하여 본 발명의 바람직한 일 실시예에 따른 PC의 전체적인 구성을 살펴보면 다음과 같다.
PC는 다양한 OS(Operating System)를 시스템의 OS로서 사용할 수 있다. 이러한 OS는 API(Application Program Interface: 300)에 하이 레벨명령어를 제공하여 각 응용 모듈(330)의 동작을 제어한다.
PC는 API(300)로부터 제공되는 하이 레벨 명령어에 따라 대응하는 각 응용 모듈(330)을 식별하고, 하이 레벨 명령어를 디코딩하여 해당하는 곳으로 제공하는 하이 레벨 명령어 처리부(310)를 포함한다. 응용 모듈 제어부(320)는 하이 레벨 명령어 처리부(310)로부터 제공된 명령어에 따라 응용 모듈(330)의 동작을 제어한다. 즉, 하이 레벨 명령어 처리부(310)는 API(300)를 통하여 제공된 하이 레벨 명령어에 따라 여기에 대응하는 응용 모듈(330)이 존재하는지를 식별하고, 대응되는 응용 모듈(330)이 존재하는 경우에 해당하는 응용 모듈(330)에서 인식할 수 있는 명령어로 디코딩하여 해당하는 매핑부에 전송하거나 메시지 전송을 제어한다. 여기서, 응용 모듈(330)은 송수신 처리 모듈(332), 에뮬레이션 모듈(334) 및 명령어 함수 변환 모듈(336)을 포함한다. 응용 모듈 제어부(320)는 각 응용 모듈에 대한 매핑부(321, 323, 325)와 인터페이스부(322, 324, 326)를 각각 포함한다.
송수신 처리 모듈 매핑부(321)는 하이 레벨 명령어 처리부(310)로부터 임베디드 시스템과의 통신을 수행하기 위한 하이 레벨 명령어를 제공받아, 송수신 처리 모듈(332)에서 처리할 수 있는 디바이스 레벨 명령어로 매핑시키고, 그것을 송수신 처리 모듈 인터페이스부(322)를 통하여 송수신 처리 모듈(332)로 제공한다.
에뮬레이션 모듈은(334)은 PC에서 작성된 타겟 코드를 PC 및 임베디드 시스템에서 실행하도록 하는 부분이다. 즉 에뮬레이션 모듈 매핑부(323)는 하이 레벨 명령어 처리부(310)로부터 에뮬레이션을 수행하기 위한 하이 레벨 명령어를 제공받아, 에뮬레이션 모듈(334)이 인식할 수 있는 디바이스 레벨 명령어로 매핑시키고, 그것을 메시지 정보 분석 모듈 인터페이스부(324)를 통하여 에뮬레이션 모듈(334) 로 제공한다.
명령어 함수 변환 모듈(336)은 명령어 함수 테이블을 이용하여 호출된 명령어 함수를 PC의 하부 구조 또는 임베디드 시스템에 상응하는 명령어 함수로 변환하는 부분이다. 즉 명령어 함수 변환 모듈 매핑부(325)는 하이 레벨 명령어 처리부(310)로부터 호출된 명령어 함수를 변환하기 위한 하이 레벨 명령어를 제공받아, 명령어 함수 변환 모듈(336)이 인식할 수 있는 디바이스 레벨 명령어로 매핑시키고, 그것을 명령어 함수 변환 모듈 인터페이스부(326)를 통하여 명령어 함수 변환 모듈(336)로 제공한다.
도 4는 본 발명의 바람직한 일 실시예에 따른 임베디드 시스템의 어플리케이션 개발 절차를 개략적으로 나타낸 순서도이다.
도 4를 참조하면, 먼저 임베디드 시스템의 어플리케이션 개발자는 상기 임베디드 시스템을 타겟 시스템으로 하는 타겟 코드를 PC 기반으로 작성한다(단계 401). 타겟 코드의 작성이 완료되면 작성된 타겟 코드를 PC 기반으로 에뮬레이션을 실행한다(단계 403). 이때 상기 타겟 코드는 PC 및 임베디드 시스템에서 실행될 수 있으며, PC 또는 임베디드 시스템 어느 한 곳에서만 실행되는 것도 가능하다. 상기 PC 기반의 에뮬레이션 실행 절차는 도 5 내지 도 10을 참조하여 자세히 설명하기로 한다.
상기 PC 기반 에뮬레이션 수행 과정에서 프로그램상의 오류가 있는 경우 개발자는 PC 기반으로 디버깅을 수행한다(단계 405). 오류 수정 과정이 완료되어 최 종적으로 문제가 없음이 확인되면, 수정된 타겟 코드를 별도의 수정 과정없이 임베디드 시스템의 보드에 포팅한다(단계 407).
도 5는 본 발명의 바람직한 일 실시예에 따른 PC 기반의 에뮬레이션 수행 절차를 나타낸 순서도이다.
도 5를 참조하면, PC 기반으로 작성된 타겟 코드에 해당하는 어플리케이션이 구동되어 PC 기반 에뮬레이션 절차가 시작되면(단계 501), PC 기반 에뮬레이터는 상기 어플리케이션에 해당하는 명령어 함수를 호출한다(단계 503).
PC 기반 에뮬레이터는 상기 어플리케이션이 PC에서 실행되도록 설정되어 있는지를 판단한다(단계 505). 상기 판단 결과 PC에서 실행되도록 설정되어 있는 경우 단계 507이 수행되며, PC에서 실행되도록 설정되어 있지 아니하는 경우 단계 513이 수행된다.
단계 507에서 PC 기반 에뮬레이터는 호출한 상기 명령어 함수를 PC 및 임베디드 시스템으로 전달할 수 있도록 가공한다. 이후 PC 기반 에뮬레이터는 가공된 상기 명령어 함수를 PC 및 임베디드 시스템으로 전달한다(단계 509). 전달된 상기 명령어 함수에 상응하는 동작이 PC 및 임베디드 시스템에서 수행되어 상기 어플리케이션은 PC 및 임베디드 시스템에서 실행된다(단계 511). PC 기반으로 작성된 어플리케이션이 PC 및 임베디드 시스템에서 동기화되어 실행됨으로써 이상적인 테스트 환경이 제공될 수 있다.
단계 513에서, PC 기반 에뮬레이터는 호출한 상기 명령어 함수를 임베디드 시스템으로 전송하기 위하여 가공한다. PC 기반 에뮬레이터는 가공된 명령어 함수를 임베디드 시스템으로 전송한다(단계 515). 임베디드 시스템은 전달받는 명령어 함수에 상응하는 동작을 수행하여 상기 어플리케이션을 실행한다(단계 517). 단계 507 및 단계 513에서 필요한 경우 상기 명령어 함수는 임베디드 시스템에서 수행될 수 있도록 명령어 변환 절차가 수행될 수 있다.
도 6은 본 발명의 바람직한 일 실시예에 따른 어플리케이션이 실행되는 과정을 설명하기 위한 PC 및 임베디드 시스템의 일반적인 구성을 나타낸 도면이다.
도 6을 참조하면, 어플리케이션(601)이 실행되기 위하여 PC 및 임베디드 시스템은 일반적으로 플랫폼(603), 운용 체제인 오퍼레이팅 시스템(OS; Operating System) 및 하드웨어(607)를 포함한다. 상기 플랫폼(603)은 상기 어플리케이션(601)이 시스템의 하드웨어(607) 또는 오퍼레이팅 시스템(605)에 무관하게 실행될 수 있도록 하여, 개발자는 시스템의 하드웨어 또는 오퍼레이팅 시스템과는 무관하게 상기 플랫폼(603)의 기준에 맞추어 어플리케이션을 개발할 수 있다. 본 발명에 따른 PC 기반 에뮬레이션을 수행하는 PC의 경우 타겟 시스템의 플랫폼을 오퍼레이팅 시스템에 장착하여 PC에서 작성된 타겟 코드인 어플리케이션이 PC에서 수행될 수 있는 것이다.
어플리케이션(601)이 구동되는 경우 상기 어플리케이션(601)은 상기 플랫폼(603)과 관련한 함수를 호출하며, 필요한 경우 오퍼레이션 시스템(605)을 직접 호출할 수 있다. 이때 함수를 호출하기 위하여 전달되는 것은 호출되는 함수의 정보 와 호출 과정에서 전달되는 파라미터의 정도들이 된다. 본 발명에서의 에뮬레이션 장치는 이러한 점을 이용하여 어플리케이션은 하나이지만 PC 및 임베디드 시스템의 둘 이상의 시스템에서 실행될 수 있도록 구성된다.
도 7은 본 발명의 바람직한 일 실시예에 따른 PC 기반 에뮬레이션 실행 과정을 설명하기 위한 PC 및 임베디드 시스템의 구성을 나타낸 도면이다.
도 7을 참조하면, PC(101)는 어플리케이션(701), 플랫폼(703), 오퍼레이팅 시스템(705) 및 하드웨어(707)를 포함하며, 임베디드 시스템(107)은 플랫폼(709), RTOS(711) 및 ARM Core 시리즈 하드웨어(713)를 포함한다. 상기 RTOS(711)는 임베디드 시스템의 오퍼레이팅 시스템을 의미하며, 예로 Nucleus가 될 수 있다. 상기 ARM Core 시리즈 하드웨어(713)는 임베디드 시스템(107)의 하드웨어의 한 종류에 해당하며, 설명의 편의를 위해 예를 들어 도시한 것이다.
상기 어플리케이션(701)은 상기 임베디드 시스템(107)을 타겟 시스템으로 하여 상기 PC(101)에서 작성된 타겟 코드를 의미하며, PC(101)의 상기 플랫폼(703)은 상기 임베디드 시스템(107)의 플랫폼(709)과 같은 종류의 것으로 PC에서 에뮬레이션을 수행하기 위하여 탑재된 것이다. 상기 플랫폼(703)은 GVM, SK-VM, KVM, MAP, BREW 및 WIPI 등의 모바일 플랫폼을 포함한다.
PC 기반으로 작성된 상기 어플리케이션(701)이 구동되는 경우 상기 어플리케이션(701)은 명령어 함수를 호출하고, 호출한 함수의 정보는 PC(101)내의 플랫폼(703) 또는 오퍼레이팅 시스템(705)으로 전달되며, 또한 임베디드 시스템(107) 내 의 플랫폼(709) 및 RTOS(711)로 전달된다. 이때 상기 함수의 정보는 PC(101) 또는 임베디드 시스템(107)의 어느 한쪽에만 전달되는 것도 가능하다. 상기 어플리케이션(701)에서 호출한 명령어 함수의 전달 방법은 도 8을 참조하여 설명하기로 한다.
도 8은 본 발명의 바람직한 일 실시예에 따른 PC 기반의 에뮬레이션 수행 과정에서 명령어 함수를 임베디드 시스템으로 전달하는 과정을 설명하기 위한 PC 및 임베디드 시스템의 구성도이다.
도 8을 참조하면, PC(101)는 어플리케이션(701)의 에뮬레이션 수행 중에 호출된 명령어 함수를 임베디드 시스템(107)을 전송하기 위한 통신 모듈(105)을 포함한다. 임베디드 시스템(107)은 PC(101)에서 전송되는 명령어 함수를 수신하여 플랫폼(709) 또는 RTOS(711)로 전달하기 위한 통신 모듈(105)을 포함한다. PC(101)의 통신 모듈(105) 및 임베디드 시스템(107)의 통신 모듈(109)은 명령어 함수의 리턴 타입이 있을 경우 그 결과를 임베디드 시스템(107)에서 PC(101)로 전송해야 하기 때문에 양방향 통신이 가능해야 한다.
임베디드 시스템(107)에서 통신 모듈(109)은 보드를 켬과 동시에 실행될 수 있도록 플래시 메모리에 로딩되어 있다. 상기 통신 모듈(109)은 PC(101)에서 전송되는 명령어 함수 호출 정보를 수신하여 임베디드 시스템(107)의 하부 구조인 플랫폼(709) 또는 RTOS(711)로 전달한다.
PC(101)의 통신 모듈(105)은 호출된 명령어 함수를 PC(101)의 하부 구조로만 전달하거나, 임베디드 시스템(107)으로만 전송하거나 또는 PC(101)의 하부 구조 및 임베디드 시스템(107)의 양쪽에 모두 전송할 수 있도록 처리될 수 있다. 예로 개발자는 호출하는 명령어 함수의 이름을 다음과 같이 매크로 처리를 하여 실제로는 대응되는 함수가 호출되도록 할 수 있다.
#defind fct fct_send
fct_send 함수는 다음과 같은 형태로 정의될 수 있다.
void fct_send(int a)
{
#if PC_RUN
return fct(a); // fct 함수를 호출
#endif
#if ARM_RUN
fct 함수 호출 정보를 전달
#endif
}
상기 예에서 PC_RUN 및 ARM_RUN이 참이냐 거짓이냐에 따라서 어플리케이션(701)은 PC(101) 및 임베디드 시스템(107)에서 모두 에뮬레이션이 수행되거나, 어느 한쪽에서만 에뮬레이션이 수행될 수 있다.
도 9는 본 발명의 바람직한 일 실시예에 따른 명령어 함수 테이블의 예를 나 타낸 도면이다.
도 9를 참조하면, 명령어 함수 테이블은 PC 에뮬레이터 및 타겟 시스템에서 사용되는 명령어가 일대일 대응되거나, 경우에 따라서는 명령어가 누적될 수 있으며 여러 개의 명령어의 조합이 하나의 명령어에 대응되는 것도 가능하다. 타겟 코드에서 사용되는 명령어 함수가 기준 플랫폼만을 호출하는 경우에는 PC 및 임베디드 시스템에서 플랫폼이 동일하기 때문에 따로 명령어 함수 테이블이 필요하지 않다. 그러나 타겟 코드가 오퍼레이팅 시스템에서 제공하는 시스템 함수까지 사용하는 경우에는 PC 및 임베디드 시스템의 오퍼레이팅 시스템이 다르기 때문에 양쪽에서의 함수 이름이 일치하지 않는다. 이때 함수의 이름과 시스템의 구현 방식이 다를 뿐 대부분의 함수가 일대일로 매핑될 수 있다. 예로 PC의 fork, blMalloc, print 는 타겟 시스템의 blFork, blMalloc, blPrint로 매핑된다. 함수가 일대일 매핑되지 않는다 하더라도, PC의 윈도우 시스템 함수 B는 임베디드 시스템의 RTOS에서 B, C, D 함수의 호출로 동일한 기능을 제공할 수 있기 때문에 문제가 되지 않는다. PC 기반의 에뮬레이션 수행 과정에서 명령어 함수는 상기 명령어 함수 테이블을 이용하여 임베디드 시스템에 부합하는 함수로 변환되어 PC에서 임베디드 시스템으로 전송되기 때문에 PC에서 작성된 타겟 코드는 별도의 포팅 과정을 거지치 아니하고도 임베디드 시스템에서 실행될 수 있다.
도 10은 본 발명의 바람직한 일 실시예에 따른 PC 기반의 작성된 타겟 코드의 명령어 함수가 PC 및 임베디드 시스템으로 전송되는 방법을 설명하기 위한 도면 이다.
도 10을 참조하면, PC 기반으로 작성된 타겟 코드(1001)는 예로 blFork 함수, blMalloc 함수 및 blPrint 함수를 포함한다. 상기 타겟 코드(1001)가 PC 기반으로 에뮬레이션이 수행되는 경우 명령어 함수 테이블을 이용하여 대응되는 fork 함수, malloc 함수, print 함수가 PC 에뮬레이터(103)로 전송되어 PC에서 실행되며, blFork 함수, blMalloc 함수, blPrint 함수가 타겟 시스템(107)으로 전송된다.
도 11은 본 발명의 바람직한 일 실시예에 따른 PC 기반 에뮬레이션 수행 방법이 적용되는 시스템 구성도이다.
도 11을 참조하면, 임베디드 시스템(1111)은 ARM Core 시리즈의 하드웨어(1117)로 Nucleus(1115)의 RTOS 및 OPENGL_ES(1113)의 플랫폼을 포함한다. PC(1101)는 Intel x86 시리즈 하드웨어(1109)에 윈도우(Windows)를 오퍼레이팅 시스템으로 하며, 이 위에 OPENGL(1105)의 플랫폼이 탑재되어 있다.
OPENGL_ES(1113) 기반으로 3D/2D 가속 칩이 만들어지면, 제대로 동작을 하는지 할인할 필요가 있다. 따라서 간단한 샘플부터 게임 등의 어플리케이션(1103)을 PC 기반으로 작성하여 에뮬레이션을 수행한다. 본 발명에 따른 에뮬레이션을 수행하는 경우 상기 어플리케이션(1103)은 PC(1101) 및 임베디드 시스템(1111)에서 각각 실행될 수 있으며, 각각에서 실행 과정이 동기화되어 확인되는 것도 가능하다.
본 발명은 상기 실시예에 한정되지 않으며, 많은 변형이 본 발명의 사상 내 에서 당 분야에서 통상의 지식을 가진 자에 의하여 가능함은 물론이다.
본 발명에 의하면 PC를 기반으로 임베디드 시스템의 소프트웨어를 개발하고 PC에서 뿐 아니라 임베디드 시스템에서도 직접 실행할 수 있는 PC 기반의 에뮬레이션 제공 방법 및 장치를 제공할 수 있다.
또한 본 발명에 의하면 PC에서 실행되는 에뮬레이션 결과를 PC와 연결된 임베디드 시스템의 타겟 보드에서 특별한 조작 없이도 확인할 수 있으며, PC 기반으로 임베디드 시스템의 소프트웨어를 제작 및 디버깅한 다음 이것을 아무런 수정 과정도 거치지 아니하고 임베디드 시스템에 바로 적용이 가능하다.
또한 본 발명에 의하면 초기 개발자를 위한 PC 기반 에뮬레이터가 제작이 되면, 상당히 빠른 속도록 임베디드 시스템의 소프트웨어를 개발할 수 있으며, 소프트웨어의 품질이 향상되는 효과가 있다.
Claims (6)
- 임베디드 시스템과 결합하며, 에뮬레이터 모듈 및 상기 임베디드 시스템과의 통신을 위한 통신 모듈을 포함하는 PC에서 PC 기반으로 에뮬레이션을 수행하는 방법에 있어서,PC에서 에뮬레이션을 수행할 어플리케이션에 대응하는 타겟 코드를 입력받는 단계-여기서, 상기 타겟 코드는 상기 임베디드 시스템을 타겟 시스템으로 하여 임베디드 시스템에서 수행되는 명령어 함수에 대응하여 생성된 것임-;상기 타겟 코드에 대응하는 어플리케이션을 실행하는 단계;상기 어플리케이션에 포함된 타겟 코드에 상응하는 적어도 하나의 명령어 함수를 호출하는 단계;상기 호출된 명령어 함수를 상기 임베디드 시스템으로 전달할 수 있는 형태로 가공하는 단계; 및상기 가공된 명령어 함수를 상기 임베디드 시스템으로 전송하는 단계를 포함하되,상기 임베디드 시스템은 상기 가공되어 전송된 명령어 함수에 대응되는 동작을 실행하는 것을 특징으로 하는 PC 기반의 에뮬레이션 수행 방법.
- 제1항에 있어서,PC에서 실행 여부를 판단하는 단계; 및상기 판단 결과 PC에서 실행되는 것으로 설정된 경우 상기 호출된 명령어 함수를 실행하는 단계를 더 포함하는 것을 특징으로 하는 PC 기반의 에뮬레이션 수행 방법.
- 제1항에 있어서,상기 명령어 함수가 시스템 함수인 경우 상기 명령어 함수를 미리 저장된 명령어 함수 테이블을 이용하여 상기 임베디드 시스템에 상응하는 함수로 변환하는 단계를 더 포함하는 것을 특징으로 하는 PC 기반의 에뮬레이션 수행 방법.
- 제1항에 있어서,상기 PC 및 상기 임베디드 시스템은 TCP/UDP, UART 및 USB 중 어느 하나를 통해 결합하는 것을 특징으로 하는 PC 기반의 에뮬레이션 수행 방법.
- 제1항에 있어서,상기 PC는 큐(Queue) 방식에 의하여 상기 명령어 함수를 임베디드 시스템으로 전송하는 것을 특징으로 하는 PC 기반의 에뮬레이션 수행 방법.
- 임베디드 시스템과 결합하고, 에뮬레이터 모듈 및 상기 임베디드 시스템과의 통신을 위한 통신 모듈을 포함하여 PC 기반으로 에뮬레이션을 수행하는 PC에 있어서,PC에서 에뮬레이션을 수행할 어플리케이션에 대응하는 타겟 코드를 입력받는 수단-여기서, 상기 타겟 코드는 상기 임베디드 시스템을 타겟 시스템으로 하여 임베디드 시스템에서 수행되는 명령어 함수에 대응하여 생성된 것임-;상기 타겟 코드에 대응하는 어플리케이션을 실행하는 수단;상기 어플리케이션에 포함된 타겟 코드에 상응하는 적어도 하나의 명령어 함수를 호출하는 수단;상기 호출된 명령어 함수를 상기 임베디드 시스템으로 전달할 수 있는 형태로 가공하는 수단; 및상기 가공된 명령어 함수를 상기 임베디드 시스템으로 전송하는 수단을 포함하되,상기 임베디드 시스템은 상기 가공되어 전송된 명령어 함수에 대응되는 동작을 실행하는 것을 특징으로 하는 PC.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050109751A KR100751063B1 (ko) | 2005-11-16 | 2005-11-16 | 임베디드 시스템의 프로그램 개발을 위한 pc 기반의에뮬레이션 제공 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050109751A KR100751063B1 (ko) | 2005-11-16 | 2005-11-16 | 임베디드 시스템의 프로그램 개발을 위한 pc 기반의에뮬레이션 제공 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070052110A KR20070052110A (ko) | 2007-05-21 |
KR100751063B1 true KR100751063B1 (ko) | 2007-08-21 |
Family
ID=38274954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050109751A KR100751063B1 (ko) | 2005-11-16 | 2005-11-16 | 임베디드 시스템의 프로그램 개발을 위한 pc 기반의에뮬레이션 제공 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100751063B1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100775887B1 (ko) * | 2007-07-31 | 2007-11-13 | 주식회사 셀런 | 임베디드시스템에서 하드디스크를 이용한 운영체계 로딩 및업데이트 방법 |
KR102557193B1 (ko) | 2016-06-22 | 2023-07-21 | 한국전자통신연구원 | 임베디드 디바이스 제어장치 및 방법 |
CN113467861B (zh) * | 2021-07-16 | 2024-08-09 | 腾讯科技(深圳)有限公司 | 文件调用方法和装置、存储介质及电子设备 |
-
2005
- 2005-11-16 KR KR1020050109751A patent/KR100751063B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
KR20070052110A (ko) | 2007-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8407717B2 (en) | Parallel processing method for dual operating system | |
US5600790A (en) | Method and system for loading and confirming correct operation of an application program in a target system | |
US20110191787A1 (en) | System and method for providing sensor data from embedded device to software development environment | |
US20120005267A1 (en) | Platform independent information handling system, communication method, and computer program product thereof | |
CN111209193B (zh) | 程序的调试方法及装置 | |
CN111158756B (zh) | 用于处理信息的方法和装置 | |
CN113342697B (zh) | 闪存转换层仿真测试系统及方法 | |
CN114721719B (zh) | 一种在集群中容器化部署异构应用的方法和系统 | |
TWI628938B (zh) | 使用透過網際網路協定之通用序列匯流排(UoIP)以與其他裝置共用非USB感應器的技術 | |
KR100654428B1 (ko) | 자바 프로그램의 처리 속도를 향상시키는 시스템 및 그 방법 | |
CN113867848A (zh) | 图形接口的调用方法、装置、设备及可读存储介质 | |
KR100751063B1 (ko) | 임베디드 시스템의 프로그램 개발을 위한 pc 기반의에뮬레이션 제공 방법 및 장치 | |
CN114385524A (zh) | 嵌入式固件仿真系统及其方法、装置和电子设备 | |
CN108667902B (zh) | iOS设备的远程控制系统、方法、装置及设备 | |
CN111984541A (zh) | 一种内存泄漏检测方法及装置、终端 | |
CN101894019B (zh) | 一种嵌入式Linux操作系统网络加速运行的系统及方法 | |
CN111782196A (zh) | 基于mvp架构的开发方法及装置 | |
EP3987395B1 (en) | Electronic device for executing instructions using processor cores and various versions of instruction set architectures | |
KR102717790B1 (ko) | 프로세서 코어들과 다양한 버전의 isa들을 이용하여 명령어들을 실행하는 전자 장치 | |
JP6033881B2 (ja) | ミドルウェアとしてのプラットフォーム独立のisaエミュレータ | |
KR102720005B1 (ko) | 어플리케이션의 최적화 방법 및 이를 지원하는 전자 장치 | |
KR102361148B1 (ko) | 응용프로그램 구동 환경을 제공하는 가상 안드로이드 장치를 이용한 제어 시스템 | |
EP4276603A1 (en) | Method and apparatus for implementing batch system calls | |
CN117608756A (zh) | 请求处理方法、装置、电子设备及存储介质 | |
CN117573177A (zh) | 一种游戏客户端的热更新方法、装置、设备及存储介质 |
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 | ||
FPAY | Annual fee payment |
Payment date: 20120710 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20130731 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20140728 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20150729 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20160801 Year of fee payment: 10 |