아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "…기", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
이제 본 발명의 실시예에 따른 이동단말기의 프레임워크 장치 및 컴포넌트의 상호 운용성 보장 방법에 대하여 도면을 참고로 하여 상세하게 설명한다.
도 1은 본 발명의 실시 예에 따른 이동단말기의 프레임워크 장치를 개략적으로 나타내는 도면이다.
도 1에 나타낸 바와 같이, 이동단말기의 프레임워크(1000)는 복수의 범용 프로세서(GPP, General Purpose Processor)(100, 100-1), FPD(Field Programmable Devices)(200), 범용 프로세서(100, 100-1)와 FPD(200)를 연결하는 시스템 버스(300)를 포함한다.
범용 프로세서(100)에는 복수의 소프트웨어 컴포넌트(Software Component)가 존재하나, 아래에서는 설명의 편의상 복수의 소프트웨어 컴포넌트 중 클라이언트(110)와 서버(120)를 예로 들어서 설명한다. FPD(200)에는 복수의 하드웨어 컴포넌트(Hardware Component)가 존재하나, 아래에서는 설명의 편의상 2개의 하드웨어 컴포넌트(210, 210-1)에 대해서 설명한다. 하나의 하드웨어 컴포넌트(210)에는 복수의 하드웨어 로직(HL+DL, Hardware Logic + Developer Logic)이 존재하나, 아래 에서는 설명의 편의상 두 개의 하드웨어 로직(211, 212)에 대해서 설명한다.
범용 프로세서(100)는 클라이언트(110), 서버(120), 객체 요구 브로커(ORB, Object Request Broker)(130), 스터브(stub)(140) 및 스켈톤(skeleton)(150)를 포함한다.
클라이언트(110)는 전형적으로 서버(120)의 서비스를 사용해 어플리케이션을 구현하는 소프트웨어 컴포넌트이다. 서버(120)는 클라이언트(110)의 요구를 처리하는 일종의 서비스 구현에 해당하는 소프트웨어 컴포넌트이다.
객체 요구 브로커(130)는 동일 범용 프로세서(100)내 혹은 다른 범용프로세서(100-1)상에 존재하는 클라이언트(110)와 서버(120)들에게 논리적인 통신 경로인 소프트웨어 버스(131)를 제공한다. 단일 범용 프로세서(100)내에서 소프트웨어 버스(131)에 대한 물리적 통신 경로는 소켓이나 프로세스간 공유메모리 방식으로 구현된다. 다른 범용 프로세서(100, 100-1) 사이에서 소프트웨어 버스(131)에 대한 물리적 통신 경로는 프로세서간 전달체계(예, 이더넷(Ethernet 혹은 프로세서간 공유메모리 등)로 구현된다.
스터브(140) 및 스켈톤(150)은 소프트웨어 버스(131)를 통해 소프트웨어 컴포넌트(110, 120)간 연동에 필요한 인터페이스를 제공한다. 구체적으로, 바이트 순서(data endian), 주소 정렬(address align), 전달 메시지 작성/해석 등의 역할을 포함한다.
FPD(200)는 하드웨어 컴포넌트(210, 210-1), 하드웨어 미들웨어(Hardware-based Middleware)(220), 공통 버스 구조(230), 로컬 버스 구조(240)를 포함한다.
하드웨어 컴포넌트(210)는 FPD(200) 상에서 수행되어야 할 알고리즘을 구현한 하드웨어 로직(HL+DL)(211, 212)들의 모임이다. 하드웨어 로직(211, 212)은 이동단말기에서 실시간 처리, 다양한 하드웨어 자원의 활용, 서비스 품질 개선을 위해 직접 사용되며, VHDL(VHSIC Hardware Description Language) 등과 같은 하드웨어 기술 언어(HDL, Hardware Description Language)로 코딩된다. 이때, 하드웨어 로직(211, 212)는 하드웨어 미들웨어(220)에 의해 식별되며 전달받은 메시지를 사용하여 역할을 수행한다. 이동단말기 프레임워크 관점에서 하드웨어 로직(211, 212)은 프레임워크에서 소프트웨어 컴포넌트의 연산을 구현한 것이다.
하드웨어 미들웨어(220)는 FPD(200)의 외부와 표준 코바(CORBA, Common Object Request Broker Architecture) 통신 프로토콜인 일반 상호 객체 요구 브로커 프로토콜(GIOP, General Inter-ORB Protocol)을 통해 메시지를 송수신한다. 이때, 하드웨어 미들웨어(220)는 수신된 GIOP_요구 메시지(GIOP_request message)를 해석하여 요구를 실제 수행할 하드웨어 컴포넌트(210, 210-1)를 식별한다. 그리고, 필요에 따라 수신된 GIOP_요구 메시지에 포함된 파라미터 데이터를 변환하여 하드웨어 컴포넌트(210, 210-1)로 전달한다.
이러한, 하드웨어 미들웨어(220)는 설정 파라미터에 따라 재구성이 가능한 것으로, 도 2에 도시된 바와 같이 개발된다.
도 2는 본 발명의 실시 예에 따른 하드웨어 미들웨어의 개발 순서도이다.
소프트웨어 개발자 및 하드웨어 개발자는 소프트웨어 컴포넌트(110, 120)가 범용 프로세서(100) 또는 FPD(200) 중 어디에 존재하는지에 관계없이 요청과 응답 관점으로 인터페이스를 정의한다(S1). 인터페이스 정의는 표준인 인터페이스 정의 언어(IDL, Interface Definition Language)를 사용한다. 소프트웨어 개발자 및 하드웨어 개발자는 별도의 인터페이스 분석기(도시하지 않음)를 통해 인터페이스 정의 언어(IDL)를 분석한다(S2). 그리고 인터페이스 분석기에서는 컴포넌트 중 하드웨어에 의존적인 파라미터와 하드웨어 미들웨어(220)에서 개별 하드웨어 컴포넌트(210)의 하드웨어 로직(211)과 연동하기 위한 파라미터가 추출된다(S3). 이후, 인터페이스 분석기에서 추출된 파라미터(설정 파라미터)에 따라 하드웨어 미들웨어를 재구성한다(S4).
공통 버스 구조(230)는 하드웨어 미들웨어(220)와 하드웨어 컴포넌트(210, 210-1)를 연결한다. 로컬 버스 구조(240)는 하드웨어 컴포넌트(210, 210-1)내 개별 하드웨어 로직(211, 212)를 연결하며, 공통 버스 구조(230)를 기본적으로 포함한다. 하드웨어 컴포넌트(210)에서 다른 하드웨어 로직과 공유할 데이터가 있을 경우, 이 데이터를 공통 버스 구조(230)에 추가 확장한다. 그러면, 로컬 버스 구조(240)는 개별 하드웨어 로직(211, 212) 자체의 고유한 로컬 버스 구조(240)로 재정의된다. 하드웨어 로직(211, 212)을 개발하는 개발자는 하드웨어 로직(211, 212)이 수행해야할 문맥에 따라 확장 범위를 직접 결정한다.
하드웨어 로직(211, 212)은 실제 서비스를 실행하기 위해서 다음 표 1과 같이 인터페이스 정의 언어(IDL)을 초고속 집적회로 하드웨어 기술 언어(VHDL)로 변환한다.
IDL |
VHDL |
Interface Attributer Operation |
Entity(A) Register 또는 Entity(A의 sub entity) Entity(A의 sub entity) |
하드웨어 미들웨어(220) 개발과정에서 정의된 인터페이스 정의에서 'Interface'는 VHDL의 'entity'로 변환되며 하드웨어 컴포넌트(210)에 포함된다. 'operation'은 하위 'entity'로 변환되며, 반환값의 유무와 파라미터의 입출력 형태(in, out, inout)에 따라 한 개 혹은 두 개의 하위 'entity'로 변환되며, 이들은 각각 하드웨어 로직(211, 212)에 포함된다. 'attribut'는 'entity' 내의 레지스터 혹은 독립된 메모리 블록을 제어하는 하위 'entity'로 변환된다. 변환된 하드웨어 기술 언어들은 하드웨어 기술 언어를 합성하는 도구에 의해 컴파일, 합성되어 FPD(200)에 다운로드된다.
도 3은 본 발명의 실시 예에 따른 하드웨어 미들웨어(220)의 개략적인 구성도이다.
하드웨어 미들웨어(220)는 시스템 버스(300)를 통해 입력된 클라이언트(110)의 요구 메시지(GIOP_request massage)에 따라 메시지를 수행할 하드웨어 로직(211, 212)만을 인가(enable)하고, 응답하기 위한 제반 과정을 제어한다. 하드웨어 미들웨어(220)는 외부 객체 요구 브로커(130)로부터 GIOP 전달 체계를 통해 요구 메시지를 수신한다. 수신된 요구 메시지는 시스템 버스(300)를 통해 전달되므로, 모든 요구 메시지는 외부 저장 장소(통상적으로 범용 프로세서와 공유하는 RAM)에 버퍼링된다. 하드웨어 미들웨어(220)는 외부 저장 장소로부터 선입선출(FIFO, First In First Out) 규칙에 따라 요구 메시지를 추출한다. 이때, 시스템 버스(300)의 크기, 주소 할당, 외부저장 장소 정보, 필요한 하드웨어 미들웨어 개수 등의 파라미터들이 하드웨어 미들웨어(220)에 제공된다. 하드웨어 컴포넌트는 이들 파라미터에 환경 변경에 의존하지 않는다.
하드웨어 미들웨어(220)로 입력되는 요구 메시지의 구성은 표 2와 같다.
Message header |
Message body |
메시지 정보 |
응답 여부 |
길이 |
요구식별자 |
객체식별자 |
연산이름 |
데이터들 |
표 2에서, 요구 메시지내 '객체식별자'는 하드웨어 컴포넌트(210)를 구분하기 위해 사용하며, '연산 이름(표 1에서는 'operation'의 이름)'은 하드웨어 컴포넌트(210) 내의 특정 하드웨어 로직(211, 212)을 지칭하는데 사용한다. '데이터들'은 하드웨어 로직(211, 212)이 수행되기 위해 필요한 데이터들이다(표 1에서 'operation'이 사용할 파라미터들). '요구식별자'는 하드웨어 미들웨어(220)가 요구 메시지에 대한 응답으로 결과를 전송할 때 응답 메시지를 구분하기 위해 사용한다. '응답 여부'는 요구 메시지에 대해 응답을 요구하는지 요구하지 않는지 여부를 나타내는데 사용한다.
상호운용 객체 레퍼런스(IOR, Interoperable Object Reference)은 연결 가능한 모든 소프트웨어 컴포넌트(110, 120)들을 유일하게 구분할 수 있는 식별자이다. 클라이언트(110)는 요청할 서버(120)의 상호운용 객체 레퍼런스(IOR)로부터 '객체식별자'를 얻는다. 그러나, FPD(200)에서 하드웨어 미들웨어(220)가 하드웨어 컴포넌트(210, 210-1)의 생성여부/개수를 파악할 수 있으므로, 하드웨어 미들웨어(220)와 하드웨어 컴포넌트(210, 210-1)간의 객체식별자는 아래 표 3와 같이 구성된다.
객체식별자 영역 |
인터페이스 식별자 |
인스턴스 식별자 |
'인터페이스 식별자'는 FPD(200)에 활성화된 전체 하드웨어 컴포넌트(210, 210-1)개수를 범위로 갖는 비트열(bit sequence)로 구성되며, '인스턴스 식별자'는 하드웨어 컴포넌트(210, 210-1) 중 최대 중복 개수를 범위로 갖는 비트열(bit sequence)로 구성된다. 이렇게 최소화된 객체식별자의 크기와 생성 규칙은 하드웨어 미들웨어(220)에 파라미터로 제공된다. 예를 들어, 인터페이스 정의에서 8개의 'interface' 각각 2개의 중복 생성이 허용된다면, 표 3의 객체식별자는 5 비트 크기로 설정된다. 이때, 'interface'에 중복 생성이 허용되지 않는다면, 표 3의 객체식별자는 4 비트 크기로 설정된다. 이와 같이, 하드웨어 미들웨어(220)는 하드웨어 컴포넌트(210, 210-1)의 개수에 따라 객체식별자를 구성함으로써, 하드웨어 컴포넌트(210, 210-1)와 하드웨어 미들웨어(220)를 연결하는 공통 버스 구조(230)를 최적화한다.
도 3에 나타낸 바와 같이, 하드웨어 미들웨어(220)는 메시지 해석부(221), 메시지 획득부(222), 로직 선택부(LS, Logic Selector)(223), 데이터 변환부(DC, Data Converter)(224), 메시지 생성부(225)를 포함한다.
메시지 해석부(221)는 외부에서 들어오는 요구 메시지를 표 2와 같이 판정한다. 이때, '데이터'들은 공동 데이터 표현(CDR, Common Data Representation)에 의해 바이트 정렬(endian), 주소 정렬(address align) 된다. 메시지 획득부(222)는 요구 메시지의 메시지 헤더(Message Header) 중 "길이"를 판단한 후 요구 메시지를 기설정된 길이 단위로 분할하여 획득한다.
로직 선택부(223)는 요구 메시지에 포함된 '객체식별자'에 따라 하드웨어 컴포넌트(210, 210-1)를 식별하고, 요구 메시지에 포함된 '연산이름'으로 실제 'operation' 기능을 구현하는 하드웨어 로직(211, 212)을 결정한다. 보다 구체적으로, 로직 선택부(223)는 '연산이름' 으로부터 수치화된 '연산 식별자' 생성하며, '연산 식별자'를 '객체식별자'와 통합하여 '인가 시그널'을 생성한다. 이때, 인가 시그널은 실제 대상 서비스를 구현하는 하드웨어 로직(211, 212)을 결정한다. 그리고 인가 시그널의 크기, 최대 연산이름의 크기 등의 파라미터는 인터페이스 분석기에 의해 생성되어 하드웨어 미들웨어(220)에 제공되어 최적화되도록 구성되었다.
설정 로직 식별기(21)는 복수의 하드웨어 로직(211, 212) 중에서 요구 메시지내 연산이름이 지칭한 해당 하드웨어 로직을 설정 로직으로 선택하고, 설정 로직으로 인가 시그널을 전달하여 설정 로직을 인가한다. 아래에서는 설명의 편의상 인가 시그널이 제1 하드웨어 로직(211)을 설정 로직으로 결정한다고 가정한다. 인가 시그널이 제1 하드웨어 로직(211)을 설정 로직으로 결정할 경우, 데이터 변환부(224)는 요구 메시지내 데이터들로부터 제1 하드웨어 로직(211)이 수행하는데 필요한 파라미터를 추출한다. 메시지 해석부(221)를 통해 정렬된 데이터에는 다수의 패딩 데이터가 포함되어 있어서, 패딩 데이터를 제거하는 작업이 필요하다. 따라서, 인가 시그널이 제1 하드웨어 로직(211)을 설정 로직으로 결정할 경우, 데이터 변환부(224)의 설정 데이터 변환기(23)는 메시지 해석부(221)에서 입력된 데이터를 최소 크기의 파라미터 데이터로 축소 변환한다. 이는 FPD(200)의 제한된 자원(bus, multiplexor)들에 대해 사용량을 최소화하기 위해 필요하다. 그리고, 축소 변환된 파라미터 데이터는 공통 버스 구조(230)를 통해 제1 하드웨어 로직(211)에 전송된다. 이때, 제1 하드웨어 로직(211)이 사용하는 공통 버스 구조를 통해 전달되는 데이터 또는 시그널은 표 4와 같다.
내용 |
크기 |
로직 인가 시그널 |
객체식별자+연산식별자(bit 단위) |
축소된 파라미터 데이터 |
전체 파라미터의 크기 합(byte 단위) |
표 4에서 '객체식별자'와 '연산식별자'는 비트단위의 크기이며, 모든 '로직 인가 시그널'에 대해 공통이다. '축소된 파라미터 데이터'는 전체 파라미터의 바이트 단위 크기의 합이며, 축소 과정은 설정 데이터 변환부(224)에 의해 수행된다. 이때, '축소된 파라미터 데이터'의 크기 등과 같은 파라미터는 인터페이스 분석기에 의해 파악되고 하드웨어 미들웨어(220)에 제공된다.
응답이 요구되는 요구 메시지가 입력될 경우, 추출 로직 식별기(22)는 복수의 하드웨어 로직(211, 212) 중에서 요구 메시지의 연산이름에 해당하는 하드웨어 로직을 추출 로직으로 선택하고, 추출 로직으로 인가 시그널을 전달하여 추출 로직을 인가한다. 아래에서는 설명의 편의상 인가 시그널이 제2 하드웨어 로직(212)을 추출 로직으로 결정한다고 가정한다. 인가 시그널이 제2 하드웨어 로직(21)을 추출 로직으로 결정할 경우, 데이터 변환부(224)에서는 추출 로직에서 준비한 데이터를 공통 버스 구조(230)를 통해 수신한다. 이때, 추출 로직이 사용하는 공통 버스 구조를 통해 전달되는 데이터 또는 시그널은 표 5와 같다.
내용 |
크기 |
로직 인가 시그널 |
객체식별자+연산식별자(bit 단위) |
수신 허용 시그널 |
1bit |
수신할 데이터 |
수신할 데이터의 크기 합(byte 단위) |
표 5에서 '로직 인가 시그널'은 표 4와 동일하다. '수신 허용 시그널'은 추출 로직에서 데이터 송신이 준비된 경우 이를 알릴 때 사용하는 제어 시그널이다. 데이터 변환부(224)의 추출 데이터 변환기(24)는 '수신할 데이터'를 공동 데이터 표준(CDR)에 준한 데이터로 확장 변환한다. 추출 데이터 변환기(24)에서 확장 변환된 데이터는 메시지 생성부(225)로 전송된다. 이때, '수신할 데이터'의 전송에 사용될 공통 버스(230)의 크기 등과 같은 파라미터들은 인터페이스 분석기에 의해 하드웨어 미들웨어(220)에 제공된다.
메시지 생성부(225)는 데이터 변환부(224)로부터 입력된 데이터를 응답 메시지에 포함하여 GIOP 전달 체계에 적합한 응답 메시지를 생성한다. 이렇게 생성된 응답 메시지는 시스템 버스(300)를 통해 외부 객체 요구 브로커(130)에 전송된다. 이때, 표 2에 보인 '요구식별자'가 추가된다.
도 4는 공통 버스 구조(230)에 사용되는 로직 인가 시그널의 구조도이다.
FPD(200)는 구조적인 특성상 전원이 인가되면 모든 하드웨어 컴포넌트(210, 210-1) 및 하드웨어 로직(211, 212)이 동시에 활성화된다. 단, FPD(200)에서 하드웨어 미들웨어(220)의 로직 선택부(223)로부터 인가 시그널을 받은 하드웨어 로직(211, 212)만이 수행된다. 이때, 인가 시그널은 인터페이스 분석기에 의해 FPD(200)의 모든 하드웨어 로직(211, 212)에 대해 각각 고유한 인가 시그널 번호가 할당된다. 또한, 인터페이스 정의 언어(IDL)의 상속(inheritance)에 따라, 상속 계층(inheritance hierarchy)에 따른 하드웨어 로직(211, 212)은 오바라이딩(overriding)이 가능하다. 이를 위해, 하드웨어 로직(211, 212)의 인가 시그널(500)은 인터페이스 구분 영역(510), 인스턴스 구분 영역(520), 로직 구분영역(530)과 같은 세 개의 영역으로 구분하여 명시한다. 인터페이스 구분 영역(510)은 인터페이스 정의 언어(IDL)에서 인터페이스(511)를 구분하기 위해서 사용된다. 인스턴스 구분 영역(520)은 하드웨어 컴포넌트(210, 210-1)를 중복시켜 병행 처리할 때 각각을 구분하기 위해 사용된다. 로직 구분 영역(530)은 상속 계층 내에서 연산 이름(531)을 유일하게 식별한다. 이들은 인터페이스 분석기에 의해 하드웨어 미들웨어(220)에 제공된다. 인터페이스 S(511)와 인터페이스 T(611)는 상속관계가 있어, 인터페이스 S(511)는 인터페이스 T(611)의 상위 인터페이스이며, 이에 따라 인터페이스 T(611)는 인터페이스 S(511)의 특성을 수용할 수 있다. 도면에서, 인가 시그널(500)과 인가 시그널(600)은 동일한 연산이름을 지칭하고 있다(여기에서는 'o()'). 인가 시그널(500)과 인가 시그널(600)은 시그널 값은 다르지만, 상속 계층을 고려했을 때 동일 하드웨어 로직을 지칭하도록 하여야 한다. 이에 대한 인식 및 인가할 하드웨어 로직의 선택은 로직 선택부(223)에서 수행한다. 하드웨어 로직(211, 212)은 상속 관계내에서 오버라이딩되는 하드웨어 로직 이름에 하나의 유일한 로직 구분 식별자를 생성하여 하드웨어 미들웨어(220)에 파라미터로 제공한다.
도 5는 본 발명의 실시 예에 따른 하드웨어 컴포넌트의 구성도이다.
하드웨어 컴포넌트(210)는 복수의 하드웨어 로직(211, 212)과 레지스터 혹은 메모리(40)를 포함한다.
레지스터 혹은 메모리(40)는 하드웨어 컴포넌트(210)내에서 복수의 하드웨어 로직(211, 212)들이 'attribute'을 공유할 수 있도록 한다. 그리고, 필요 시 레지스터 혹은 메모리(40)를 사용하기 위한 탬플릿 로직도 함께 생성된다.
하드웨어 컴포넌트(210)는 'interface'에 선언한 'operation 들에 각각 대응되는 하드웨어 로직(211, 212)을 하위 부품으로 가진다(표 1에서 설명함). 공통 버스 구조(230)를 통해 수신한 '데이터들'(표 2에서 설명함)은 바이트 단위로 축소된 형태이다.
하드웨어 로직(211)은 전처리부(31), 데이터 처리부(32), 후처리부(33)를 포함한다.
전처리부(31)는 로컬 버스 구조(240)를 통해 입력된 바이트 단위의 '데이터'(표 2에서 설명함)을 데이터 처리부(32)에서 수행할 수 있는 시그널 데이터로 변환한다. 데이터 처리부(32)는 입력된 시그널 데이터와 함께 수행한다. 데이터 처리부(32)의 수행이 완료되면, 후처리부(33)는 시그널 데이터들을 공통 버스 구조(230)에 적합한 '데이터들'로 변환한다. 이때, 데이터 처리부(32)는 순수하게 하드웨어 개발자에 의해 작성되는 하드웨어 관점의 서비스 구현이다.
도 6a 및 도 6b는 표 1에서 설명한 속성(attribute)을 구체화하는 방식을 도시화한 것이다.
도 6a는 'attribute'의 크기가 크지 않고 구현을 단순화하고자 할 때 사용하는 방법이다. 이 경우의 'attribute'는 'interface'용 엔티티인 하드웨어 컴포넌트(210)내의 레지스터(41)로 변환된다. 하드웨어 컴포넌트(210)내의 레지스터(41)를 사용하는 'operation' 엔티티인 하드웨어 로직(211)은 로컬 버스(240-1)에 레지스터(41)를 추가로 확장하여 재정의된다.
도 6b는 'attribute'를 공유 메모리(42)로 표현하고 이에 대한 처리는 사용자 정의 하드웨어 로직(UDL, User-defined Developer Logic)(211-1)에 위치시키는 방법이다. 'attribute'를 공유하는 'operation' 엔티티인 하드웨어 로직(211)은 UDL(211-1)와 연결을 위한 사용자 정의 버스(240-2)를 추가로 갖는다. 도 6b와 같이 HC(210)에서 레지스터(41)가 존재하지 않을 경우, 하드웨어 로직(211)은 공통 버스 구조(230)에 직접 연결된다.
이와 같이, 본 발명은 개발자가 작성하는 하드웨어 컴포넌트와 소프트웨어(혹은 다른 하드웨어) 컴포넌트로 연동하기 위한 하드웨어 미들웨어로 구성된다. 따라서, 본 발명의 실시 예에서는 하드웨어 컴포넌트에서 하드웨어 의존적인 부분들이 설정 파라미터를 통해 하드웨어 미들웨어에 제공되며, 이에 따라 하드웨어 미들웨어는 해당 하드웨어 컴포넌트와 연동될 수 있다.
하드웨어 미들웨어는 프레임워크의 기본 통신 체계에서 사용되는 GIOP 전달 체계에 따라 요구 메시지를 수신하고, 요구 메시지를 해석하여 해당 하드웨어 컴포넌트로 데이터를 변환 전달한다. 요구 메시지가 전달된 하드웨어 컴포넌트(하드웨어 로직)은 데이터를 사용해 고유의 역할을 수행하며, 그 결과는 다시 하드웨어 미들웨어에 의해 응답 메시지로 구성되어 소프트웨어 컴포넌트로 전달된다. 본 발명의 실시 예에서는 하드웨어 컴포넌트가 가지는 하드웨어 및 이동단말기 프레임워크에 의존적인 부분들을 하드웨어 미들웨어로 구성함으로써, 하드웨어 컴포넌트 또는 이동단말기 프레임워크에 대한 의존성이 제거된다. 그 결과, 하드웨어 또는 이동단말기 프레임워크에 의존하지 않고 하드웨어 컴포넌트와 소프트웨어 컴포넌트간에 데이터 교환이 가능하고 통신 체계를 제공할 수 있다. 따라서, 하드웨어 컴포넌트와 소프트웨어 컴포넌트간에 상호 운용성이 보장된다. 또한, 이동단말기의 프레임워크에서 하드웨어에 의존적인 부분들이 하드웨어 미들웨어를 통해 해소되므로, 하드웨어 컴포넌트의 재사용성이 증대될 수 있다.
이상에서 설명한 본 발명의 실시 예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.