KR20100105210A - Mobile terminal with mobile platform managed and updated in module type, method for operating the mobile platform, managing module and updating the module - Google Patents
Mobile terminal with mobile platform managed and updated in module type, method for operating the mobile platform, managing module and updating the module Download PDFInfo
- Publication number
- KR20100105210A KR20100105210A KR1020090024115A KR20090024115A KR20100105210A KR 20100105210 A KR20100105210 A KR 20100105210A KR 1020090024115 A KR1020090024115 A KR 1020090024115A KR 20090024115 A KR20090024115 A KR 20090024115A KR 20100105210 A KR20100105210 A KR 20100105210A
- Authority
- KR
- South Korea
- Prior art keywords
- module
- update
- mobile platform
- information
- interface
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/72—Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
- H04M1/724—User interfaces specially adapted for cordless or mobile telephones
- H04M1/72403—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
- H04M1/72406—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by software upgrading or downloading
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/72—Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
- H04M1/724—User interfaces specially adapted for cordless or mobile telephones
- H04M1/72403—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
- H04M1/72409—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by interfacing with external accessories
Landscapes
- Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
본 발명은, 모듈 형태로 관리 및 업데이트가 이루어지는 모바일 플랫폼이 탑재된 이동통신 단말, 그 모바일 플랫폼 구동 방법, 모듈 관리 방법 및 모듈 업데이트 방법에 관한 것이다. The present invention relates to a mobile communication terminal equipped with a mobile platform managed and updated in a module form, a mobile platform driving method, a module management method, and a module update method.
본 발명에 따르면, 모듈 매니저를 통해 단말 바이너리로부터 독립된 고유의 플랫폼 코드 바이너리 형태로 이루어져 모바일 플랫폼을 구성하는 단위 기능을 수행하는 각각의 모듈을 제어한다. 또한, 각각의 모듈 간에 또는 어플리케이션에서 상기 각각의 모듈을 사용할 수 있도록 인터페이스를 제공한다. 그리고 모듈 업데이터를 통해 상기 각각의 모듈을 상위 버전으로 업데이트한다. According to the present invention, the module manager controls each module that performs unit functions constituting the mobile platform by being formed in a unique platform code binary form independent from the terminal binary. It also provides an interface to use each module between each module or in an application. Each module is updated to a higher version through a module updater.
따라서, 모바일 플랫폼에 새로운 기능의 추가, 변경, 삭제가 용이하여 단말 출시 이후, 모바일 플랫폼 기능 개선, 통신 사업자의 신규 서비스 제공 목적으로 새로운 기능 모듈을 추가, 변경할 수 있다.Therefore, it is easy to add, change, and delete new functions to the mobile platform, and after the terminal is released, new function modules may be added and changed for the purpose of improving the mobile platform function and providing new services of the telecommunications carrier.
Description
본 발명은, 모듈 형태로 관리 및 업데이트가 이루어지는 모바일 플랫폼이 탑재된 이동통신 단말, 그 모바일 플랫폼 구동 방법, 모듈 관리 방법 및 모듈 업데이트 방법에 관한 것이다. The present invention relates to a mobile communication terminal equipped with a mobile platform managed and updated in a module form, a mobile platform driving method, a module management method, and a module update method.
최근 이동통신 단말기의 성능향상 및 고객의 다양한 컨버전스 니즈(Needs)에 따라 기능 폰(Feature Phone) 및 스마트 폰에서 'General Purpose OS(Operating System)'의 탑재가 시도되고 있어 모바일 플랫폼도 그에 따른 변화가 요구되고 있다. Recently, due to the performance improvement of mobile communication terminals and various convergence needs of customers, the installation of 'General Purpose OS (Operating System)' has been attempted in feature phones and smart phones, and the mobile platform has changed accordingly. It is required.
이러한 고객의 다양한 필요성에 부합하는 특화된 단말의 등장은 모든 기능을 탑재한 거대한 모바일 플랫폼의 탑재가 부담으로 작용하게 한다. 따라서, 단말 특성에 따라 필요한 기능만을 조합한 경량화된 모바일 플랫폼이 필요하다. The emergence of specialized terminals to meet the diverse needs of these customers puts a burden on the deployment of a huge mobile platform with all functions. Therefore, there is a need for a lightweight mobile platform combining only necessary functions according to terminal characteristics.
이동통신 단말의 성능 향상과 더불어 Windows Mobile, Embedded Linux와 같은 범용 OS 탑재 단말이 늘고 있다. 이러한 추세는 다양한 범용 OS위에 모바일 플랫폼을 쉽게 포팅할 수 있도록 플랫폼의 구조적 개선을 요구한다. In addition to the performance improvement of mobile communication terminals, the number of terminals equipped with general purpose OS such as Windows Mobile and Embedded Linux is increasing. This trend requires the structural improvement of the platform so that mobile platforms can be easily ported onto various general-purpose operating systems.
도 1은 종래의 모바일 플랫폼 구조이고, 도 2는 종래 모바일 플랫폼의 바이너리 구조를 나타낸다.1 illustrates a conventional mobile platform structure, and FIG. 2 illustrates a binary structure of a conventional mobile platform.
도 1에 따르면, 종래 모바일 플랫폼은 롬 바이너리(ROM Binary)(11), EFS 바이너리(13), APP 1, 2, 3(15), APM(Application Performance Management) 모듈(17), 다운로더(Downloader)(19), KIKA(21), Native system software(23) 및 커널(25) 및 HAL(Hardware Adaptation Layer)(27)로 구성된다. According to FIG. 1, a conventional mobile platform includes a
도 2에 따르면, Native system software(23) 및 커널(25)은 하나의 바이너리 플랫폼 코드를 사용하고, 이 바이너리 플랫폼 코드는 이동통신 단말의 바이너리 코드를 링크한다. 즉 플랫폼 코드가 단말 바이너리에 정적(static)으로 링크되어 단말 부팅시 플랫폼 코드가 메모리에 로딩되는 구조이다. According to Fig. 2, the
도 3a는 종래 모바일 플랫폼의 패키지 종류를 나타내고, 도 3b는 패키지 상호 관계를 나타낸다. Figure 3a shows the package type of the conventional mobile platform, Figure 3b shows the package interrelationship.
도 3a에 따르면, 종래의 모바일 플랫폼은 모듈들이 패키지 단위로 구분되어 있다. 최상위 패키지는 CP(Contens Provider)가 제공하는 패키지(29)로서 wec 패키지(31), java 패키지(33), org 패키지(35)가 존재하고, 내부 구현되는 패키지(37)로서 com 패키지(39), ams 패키지(41), javax 패키지(43)가 있다. According to FIG. 3A, in the conventional mobile platform, modules are divided into package units. The top-level package includes a
그러나 도 3b에 보인 것처럼, 패키지들(31, 33, 35, 39, 41, 43) 간의 상호 관계가 상하 관계를 분별하기 어렵고 수평적으로도 복잡하게 얽혀있어 동적으로 기능 단위의 모듈을 추가, 수정, 삭제하기 어려운 구조이다. However, as shown in FIG. 3B, the interrelationships between the
또한, 종래 모바일 플랫폼의 커널(kernel)은 커널의 모든 기능이 오브젝트(object)로 구성되어 하나의 바이너리로 링크되는 구조이다. 즉 종래 모바일 플랫폼의 커널은 모든 기능이 하나의 바이너리로 구성되도록 되어있는 것이다. 여기에는 'Target O/S'에 따라 코드가 달라져야 하는 부분들도 함께 빌드되어 바이너리에 포함된다. 그리고 H/W 의존성(Dependency)이 있는 모듈 및 그래픽 모듈도 모두 커널에 포함되어 상호간 함수 호출이 직접 이루어진다. In addition, the kernel of the conventional mobile platform is a structure in which all functions of the kernel are composed of objects and linked to one binary. In other words, the kernel of the conventional mobile platform is that all the functions are configured as one binary. Here, the parts that need to be changed according to 'Target O / S' are also built and included in the binary. In addition, both the module with the H / W dependency and the graphic module are included in the kernel to make mutual function calls directly.
따라서, 이러한 커널 구조의 모바일 플랫폼은 기능간 구분이 모호하고, 하위 레이어 참조 코드가 존재하며, 타겟에 맞는 커널 재빌드가 필요한 문제점이 있다.Therefore, the mobile platform of such a kernel structure has a problem that the distinction between functions is ambiguous, lower layer reference code exists, and a kernel rebuild suitable for a target is required.
이상과 같이, 과거 이동통신 단말의 저사양 문제로 종래의 모바일 플랫폼은 단말 제조사 바이너리에 링크되는 구조로 설계된다. 따라서, 모바일 플랫폼의 일부 기능을 개선 또는 추가하기 위해서 모바일 플랫폼 전체 빌드, 제조사 배포, 단말제조사 바이너리 링크 등의 여러 단계를 거처야만 하는 시간적/비용적 문제가 발생한다. 즉 이동통신 단말 출시 후 기능 단위 업데이트 및 기능 추가가 사실상 힘든 상황인 것이다. As described above, due to the low specification of the past mobile communication terminal, the conventional mobile platform is designed in a structure that is linked to the terminal manufacturer binary. Therefore, in order to improve or add some functions of the mobile platform, a time / cost problem occurs that must go through various steps such as the entire mobile platform build, manufacturer distribution, and terminal manufacturer binary link. In other words, it is difficult to update the function unit and add the function after the release of the mobile communication terminal.
이러한 모바일 플랫폼의 구조적 문제는 다양한 3rd Part 솔루션 업체 또는 개인이 플랫폼 기능 확장에 사실상 참여를 어렵게 만들었다. 이는 최근 심화된 모바일 플랫폼 부문 경쟁에서 도태될 수 있음을 의미한다.Structural problems of these mobile platforms has made a variety of 3 rd Part solution providers or individuals difficult to practically participate in the platform extensions. This means that they can be eliminated from the recent fierce competition in the mobile platform sector.
본 발명이 이루고자 하는 기술적 과제는, 모듈 형태로 관리 및 업데이트가 이루어지는 모바일 플랫폼이 탑재된 이동통신 단말, 그 모바일 플랫폼 구동 방법, 모듈 관리 방법 및 모듈 업데이트 방법을 제공하는 것이다. The technical problem to be achieved by the present invention is to provide a mobile communication terminal equipped with a mobile platform that is managed and updated in a module form, a mobile platform driving method, a module management method, and a module update method.
본 발명의 한 특징에 따르면, 모바일 플랫폼이 탑재된 이동통신 단말이 제공된다. 이동통신 단말은, 상기 모바일 플랫폼을 구성하는 각각의 모듈-여기서 각각의 모듈은 상기 모바일 플랫폼을 구성하는 단위 기능들 각각이 단말 바이너리로부터 독립된 고유의 플랫폼 코드 바이너리 형태로 구현한 것임-을 제어하고, 상기 각각의 모듈 간에 또는 어플리케이션에서 상기 각각의 모듈을 사용할 수 있도록 인터페이스를 제공하는 모듈 매니저; 및 상기 각각의 모듈을 상위 버전으로 업데이트하는 모듈 업데이터를 포함한다. According to one aspect of the invention, there is provided a mobile communication terminal equipped with a mobile platform. The mobile communication terminal controls each module constituting the mobile platform, wherein each module implements each of the unit functions constituting the mobile platform in a unique platform code binary form independent of the terminal binary. A module manager providing an interface to use each module between the respective modules or in an application; And a module updater for updating each module to a higher version.
본 발명의 다른 특징에 따르면, 모바일 플랫폼 구동 방법이 제공된다. 모바일 플랫폼 구동 방법은, 모듈 매니저-여기서 모듈 매니저는 단말 바이너리로부터 독립된 고유의 플랫폼 코드 바이너리 형태로 이루어져 모바일 플랫폼을 구성하는 각각의 모듈을 제어함-가 오이엠(OEM, Original Equipment Manufacturer) 계층 모듈로부터 플랫폼 구동을 요청받는 단계; 상기 각각의 모듈들에 대한 정보를 관리하는 모듈 정보 테이블 및 하드웨어 적응 계층(HAL, Hardware Adaptation Layer) 목록이 저장된 하드웨어 적응 계층 인터페이스 정보 테이블을 초기화하는 단계; 및 커널 모듈을 로딩하여 모바일 플랫폼을 구동하는 단계를 포함한다. According to another feature of the invention, a method for driving a mobile platform is provided. In the mobile platform driving method, the module manager, where the module manager is formed in a unique platform code binary form independent from the terminal binary and controls each module constituting the mobile platform, is a platform from an original equipment manufacturer (OEM) layer module. Receiving a request for driving; Initializing a hardware adaptation layer interface information table storing a module information table and a hardware adaptation layer (HAL) list for managing information about the respective modules; And driving the mobile platform by loading the kernel module.
본 발명의 또 다른 특징에 따르면, 모듈 관리 방법이 제공된다. 모듈 관리 방법은, 모듈 매니저-여기서 모듈 매니저는 단말 바이너리로부터 독립된 고유의 플랫폼 코드 바이너리 형태로 이루어져 모바일 플랫폼을 구성하는 각각의 모듈을 제어함-가 특정 모듈의 로딩을 요청받는 단계; 할당받은 메모리에 상기 특정 모듈의 모듈 로딩 정보 및 모듈 바이너리를 기록하고, 상기 특정 모듈을 로딩하는 단계; 및 상기 모듈 매니저가 메모리에 로딩한 상기 각각의 모듈에 대한 정보를 관리하는 모듈 풀 및 상기 이동통신 단말에 설치된 상기 각각의 모듈들에 대한 정보를 관리하는 모듈 정보 테이블에 상기 특정 모듈에 대한 모듈 로딩 정보를 갱신하는 단계를 포함한다. According to another feature of the invention, a module management method is provided. The module management method includes a module manager, wherein the module manager is formed in a unique platform code binary form independent from the terminal binary to control each module constituting the mobile platform; Recording module loading information and module binaries of the specific module in the allocated memory, and loading the specific module; And a module pool for managing information on the respective modules loaded by the module manager into a memory and a module loading table for the specific module in a module information table managing information on the respective modules installed in the mobile communication terminal. Updating the information.
본 발명의 또 다른 특징에 따르면, 모듈 업데이트 방법이 제공된다. 모듈 업데이트 방법은, 모듈 업데이터-여기서 모듈 업데이터는 단말 바이너리로부터 독립된 고유의 플랫폼 코드 바이너리 형태로 이루어져 모바일 플랫폼을 구성하는 각각의 모듈의 업데이트 기능을 수행함-가 모듈 업데이터 구동을 요청받는 단계; 및 기 저장된 하위 버전의 모듈은 삭제하고 상위 버전의 모듈을 다운로드하여 저장하는 단계를 포함한다. According to another feature of the invention, a module update method is provided. The module update method may include: receiving a module updater, wherein the module updater is formed in a unique platform code binary form independent from the terminal binary to perform an update function of each module constituting the mobile platform; And deleting the previously stored lower version module and downloading and storing the higher version module.
본 발명에 의하면, 모바일 플랫폼에 정적으로 탑재되는 모듈 범위를 최소화하여 단말 바이너리 교체없이 모바일 플랫폼의 기능 업데이트가 용이하다. According to the present invention, it is easy to update the function of the mobile platform without replacing the terminal binary by minimizing the range of modules statically mounted on the mobile platform.
따라서, 모바일 플랫폼에 새로운 기능의 추가, 변경, 삭제가 용이하여 단말 출시 이후, 모바일 플랫폼 기능 개선, 통신 사업자의 신규 서비스 제공 목적으로 새로운 기능 모듈을 추가, 변경할 수 있다.Therefore, it is easy to add, change, and delete new functions to the mobile platform, and after the terminal is released, new function modules may be added and changed for the purpose of improving the mobile platform function and providing new services of the telecommunications carrier.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.DETAILED DESCRIPTION Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art may easily implement the present invention. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. In the drawings, parts irrelevant to the description are omitted in order to clearly describe the present invention, and like reference numerals designate like parts throughout the specification.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "…기", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.Throughout the specification, when a part is said to "include" a certain component, it means that it can further include other components, without excluding other components unless specifically stated otherwise. In addition, the terms “… unit”, “… unit”, “module”, etc. described in the specification mean a unit that processes at least one function or operation, which may be implemented by hardware or software or a combination of hardware and software. have.
본 명세서에서 모바일 플랫폼은 이동통신 단말에 탑재되어 모바일 표준 플랫폼 규격에 따라 작성된 응용프로그램을 실행시킬 수 있는 단말의 실행 환경(Runtime Execution Environment)을 의미한다. 모바일 플랫폼은 응용프로그램 관리와 API(Application Programing Interface) 관리 기능을 포함한다. In the present specification, the mobile platform refers to a runtime execution environment of a terminal that can be mounted on a mobile communication terminal and execute an application program created according to a mobile standard platform standard. The mobile platform includes application management and application programming interface (API) management.
본 발명의 실시예에 따르면, 모바일 플랫폼은 기능 단위로 세분화되어 기능 별로 모듈화된 구조로 이루어진다. According to an embodiment of the present invention, the mobile platform is divided into functional units and has a modular structure for each function.
이하, 도면을 참조로 하여 본 발명의 실시예에 따른 모듈 형태로 관리 및 업데이트가 이루어지는 모바일 플랫폼이 탑재된 이동통신 단말, 그 모바일 플랫폼 구동 방법, 모듈 관리 방법 및 모듈 업데이트 방법에 대하여 설명한다. Hereinafter, a mobile communication terminal equipped with a mobile platform managed and updated in a module form according to an embodiment of the present invention, a mobile platform driving method, a module management method, and a module update method will be described with reference to the drawings.
도 4는 본 발명의 실시예에 따른 모바일 플랫폼의 기능 별로 모듈화된 구조를 나타낸 개념도이다.4 is a conceptual diagram illustrating a modular structure for each function of a mobile platform according to an embodiment of the present invention.
도 4에 보인 바와 같이, 모바일 플랫폼은 기능별로 모듈화된 구조로 이루어진다. 이때, 기능별로 모듈화된 구조는 수평적 모듈화와 수직적 모듈화로 이루어진다. As shown in FIG. 4, the mobile platform has a modular structure for each function. At this time, the modular structure for each function consists of horizontal modularity and vertical modularity.
수평적 모듈화는 모바일 플랫폼에 대한 단위 기능을 정의하고 단위 기능을 모듈화하여 구현하는 것이다. 이렇게 하면, 단말의 종류, 하드웨어 특성에 따라 선별적으로 선택된 모듈들로 구성된 모바일 플랫폼을 단말에 탑재할 수 있다. 또한, 모바일 플랫폼에 새로운 기능의 추가, 변경, 삭제가 용이하다. 따라서, 단말 출시 이후, 모바일 플랫폼 기능 개선, 통신 사업자의 신규 서비스 제공 목적으로 새로운 기능 모듈을 추가, 변경할 수 있다.Horizontal modularization defines the unit functions for the mobile platform and implements the unit functions modularly. In this way, the mobile platform configured with modules selectively selected according to the type and hardware characteristics of the terminal may be mounted on the terminal. In addition, it is easy to add, change, or delete new functions on the mobile platform. Therefore, after launching the terminal, a new function module may be added and changed for the purpose of improving the mobile platform function and providing a new service for the communication service provider.
수직적 모듈화는 프로세스, 메모리 및 이벤트 등을 관리하는 커널 계층(Kernel Layer)(101), 네트워크, IO(InputOutput), 미디어 등 플랫폼의 중추적 기능을 담당하며 API 기능을 수행하는 시스템 계층(System Layer)(103) 및 어플리케이션이 사용하는 API의 표준을 담당하는 API 계층(Layer)(105)으로 계층화된 것이다. 이때, 각 계층은 복수의 단위 기능을 포함하고, 각각의 단위 기능은 하나의 모듈(107)로 구현된다.Vertical modularization plays a pivotal role in the platform such as
여기서, 모듈(107)은 모바일 플랫폼을 구성하는 각 기능별로 분류된 독립된 플랫폼 코드 바이너리라 정의한다. 따라서, 종래에 플랫폼 코드가 단말 바이너리에 정적(static)으로 링크되던 것과 달리 본 발명의 실시예에 따른 모바일 플랫폼은 각 모듈에 따른 단말 탑재 바이너리를 선별적으로 선택할 수 있는 구조로 이루어진다. Here, the
모바일 플랫폼을 기능 단위로 세분화하여 동적 라이브러리로 구성할 수 없는 기능을 분류하고 이를 모듈(107)로 구현한다. 즉 정적으로 탑재되는 모듈 범위를 최소화하여 단말 바이너리 교체없이 모바일 플랫폼의 일부 기능을 업데이트할 수 있게 한다. The mobile platform is divided into functional units to classify functions that cannot be configured as dynamic libraries and implement them as
각 모듈(107)은 모듈 출력(export) 인터페이스 및 모듈 입력(import) 인터페이스를 제공한다. 즉 모듈(107)은 다른 모듈이나 어플리케이션에서 사용할 수 있도록 모듈(107)에서 제공하는 함수를 출력하는 모듈 출력(export) 인터페이스를 제공한다. 또한, 모듈(107)은 다른 모듈의 인터페이스를 사용할 경우 다른 모듈로부터 함수를 입력받을 모듈 입력(import) 인터페이스를 제공한다.Each
또한, C, JAVA 인터페이스를 모두 지원하는 모바일 플랫폼의 기능은 하나의 모듈(107)로 구성하여 API 계층(105)으로 분류한다. 즉 같은 기능을 수행하며 C와 JAVA 인터페이스를 제공하는 소스들을 한 곳으로 모아 하나의 라이브러리(library)로 생성될 수 있게 한다. In addition, the functions of the mobile platform supporting both the C and JAVA interfaces are classified into the
도 5는 본 발명의 실시예에 따른 모바일 플랫폼의 구성도이다. 5 is a block diagram of a mobile platform according to an embodiment of the present invention.
도 5에 보인 바와 같이, 이동통신 단말에 탑재되는 모바일 플랫폼은 EFS 바이너리(Embeded File System Binaries)(301), ROM 바이너리(303), APM(Application Performance Management) 모듈(305), API(Application Programming Interface) 계층 모듈(311), 시스템 계층 모듈(323), 커널 계층 모듈(331) 및 OEM(Original Equipment Manufacturer) 계층 모듈(341)을 포함한다. As shown in FIG. 5, the mobile platform mounted in the mobile communication terminal includes an EFS binary (Embeded File System Binaries) 301, a
모바일 플랫폼 위에서 동작하는 응용 프로그램 파일들은 EFS 바이너리(301) 및 롬 바이너리(ROM Binary)(303)에 포함된다.Application files running on the mobile platform are included in the EFS binary 301 and the
EFS 바이너리(Embeded File System Binaries)(301)는 사용자 접근이 용이한 코드 영역으로서, 이동통신 단말에 기본적인 어플리케이션 프로그램을 저장한다. 단문메시지, 사진, 벨소리, 게임 등 사용자 접근이 용이한 코드 영역이다. 이동통신 단말기에서 다양한 서비스를 제공하기 위해서는, 이동통신단말기에 기본적인 어플리케이션 프로그램을 저장한다. 또한, 사전에 사업자와 개발자등 협의에 의해 설정되는 사이즈를 가지는 영역으로 파일 시스템 형식을 취하는 메모리의 한 영역이다.The EFS binary (Embeded File System Binaries) 301 is a code area that is easily accessible to the user, and stores basic application programs in the mobile communication terminal. It is a code area that is accessible to users such as short messages, pictures, ringtones, and games. In order to provide various services in the mobile communication terminal, a basic application program is stored in the mobile communication terminal. In addition, it is an area having a size that is set in advance by consultation with operators and developers.
ROM 바이너리(303)는 이동통신 단말의 동작에 핵심적인 기능을 담당하는 운영체제(OS) 및 필수 어플리케이션(Application)들이 저장되는 사용자 접근이 제한되는 코드(Code) 영역이다. OEM 계층 모듈(341)의 플랫폼 액티베이터(Activator)(345)는 ROM 바이너리(303)에 정적으로 링크된다.The
어플리케이션 수행 관리(Application Performance Management, 이하 'APM'으로 통칭함) 모듈(305)은 어플리케이션 1, 2(307, 309)의 다운로드, 등록, 저장, 삭 제 등을 제어하고 관련 API 및 컴포넌트들의 추가, 갱신을 제어한다. 어플리케이션 1, 2(307, 309)은 이메일, 위치 기반, 게임들, 캐릭터 벨, 비디오 스트리밍, MMS(Multimedia Message Service) 등의 모바일 플랫폼 기반위에서 동작하는 다양한 서비스 어플리케이션들이다. Application Performance Management (hereinafter referred to as 'APM')
API(Application Programming Interface) 계층 모듈(311)은 어플리케이션 1, 2(307, 309)의 실행을 위한 API 함수를 포함하며, 각각의 모듈들을 포함한다. 각각의 모듈은 Display 모듈(313), Network 모듈(315), Handset 모듈(317), Termres 모듈(319) 및 File 모듈(321) 등을 포함할 수 있다. The application programming interface (API)
이때, API 계층 모듈(311)은 어플리케이션 1, 2(307, 309)이 운영체제에 특정 처리를 위해 호출할 수 있는 함수의 집합으로서, 핸드셋 하드웨어를 제어하는 API 및 어플리케이션 1, 2(307, 309)에서 실질적으로 사용되는 API들을 포함한다.At this time, the
시스템 계층 모듈(323)은 CDMA 망에서는 Rex OS를 지칭하는 것으로 간단한 단말기 운영체제 기능과 통신 기능 및 각종 디바이스 드라이버가 포함된다. 네트워크, IO(Input/Output), 미디어 등 모바일 플랫폼의 중추적 기능을 담당하며 API 기능을 수행하는 시스템 모듈(325) 및 File 모듈(321)을 포함한다. 여기서, 시스템 모듈(325)은 모바일 플랫폼이 제공하는 HAL(Hardware Adaptation Layer) API(329)를 관리한다.The
커널 계층 모듈(331)은 모바일 플랫폼의 전체 실행 과정에서 가장 핵심적인 연산이 이루어지는 부분으로서, 메모리에 상주하여 프로세스, 메모리를 관리하고 이동통신 단말기의 장치들을 제어하고 입출력을 처리한다.The
커널 계층 모듈(331)은 모바일 플랫폼에서 기본이 되는 필수 기능들을 각각 모듈로 구현하여 하나의 독립된 계층으로 구성한다. 커널 계층 모듈(331)은 예를 들어, Memory Manager, Thread Manager, Timer, Class Loader 등과 같은 기본 기능들을 제공한다. 커널 계층 모듈(331)은 커널 모듈(333) 및 모듈 매니저(337)를 포함한다. The
여기서, 커널 모듈(333)은 모바일 플랫폼이 제공하는 HAL API(335)를 관리한다. 이때, 커널 모듈(333)은 도면에는 도시하지 않았지만, 커널 계층 모듈(331)을 구성하는 각각의 기능이 모듈 형태로 구현된 코어 모듈, 쓰레드(Thread) 모듈, 타겟 모듈 중 하나를 포함할 수 있다. 코어 모듈은 모바일 플랫폼 고유의 기능을 수행하는 모듈이고, 쓰레드 모듈은 이동통신 단말에 탑재된 운영체제가 지원하는 쓰레드를 활용하기 위해 지정되며, 타겟 모듈은 이동통신 단말의 CPU(Central Processing Unit)에 따라 코드를 달리해야 하는 커널 기능을 만족시키기 위해 지정된다.Here, the
또한, 모듈 매니저(337)는 모바일 플랫폼을 구성하는 각 기능별 모듈의 로드(load), 언로드(unload) 등 라이프 사이클(life cycle)을 관리하는 모바일 플랫폼 커널 모듈이다. 모듈 매니저(337)는 HAL 인터페이스(339)를 포함한다. HAL 인터페이스(339)는 모바일 플랫폼과 OEM이 정적(static)으로 링크되지 않는 구조에서 모바일 플랫폼이 OEM이 제공하는 HAL API를 호출할 수 있도록 하기 위한 메모리 상의 자료 구조를 의미한다.In addition, the
OEM(Original Equipment Manufacturer) 계층 모듈(341)은 플랫폼 이식에 있 어서 하드웨어 독립성을 지원할 수 있도록 하는 추상화 계층인 핸드셋 적용 계층(HAL) 모듈(343) 및 플랫폼 액티베이터(Activator)(345)를 포함한다. The original equipment manufacturer (OEM)
여기서, HAL 모듈(343)은 모바일 플랫폼의 하드웨어 독립성을 유지하기 위한 추상화 계층으로, 상위 계층들이 HAL 모듈(343) 위에서 시스템 계층 모듈(323)과 무관하게 동작하도록 지원한다. HAL은 단말기 제조사를 위한 API를 정의한 것으로 단말기 제조사마다 서로 다른 기기들을 지원하기 위해 HAL이라고 하는 추상화 계층을 도입한다. 그리고 이 HAL이 단말기에 포팅되면 바로 모바일 플랫폼 실행 엔진을 탑재할 수 있다. 즉 데스크탑 윈도우즈 환경에서는 HAL을 WIN 32에 맞게 포팅하면 에뮬레이터가 바로 되는 것이다.Here, the
또한, 플랫폼 액티베이터(345)는 이동통신 단말에 탑재되는 WIPI(Wireless Internet Platform for Interoperability) 실행 바이너리이다. 플랫폼 액티베이터(345)는 운영체제(OS, Oriented System)와의 이벤트 교류 및 모바일 플랫폼이 제공하는 HAL이 위치하는 곳이며 OS가 제공하는 바이너리 포맷으로 구성된다. 또한, 모듈 매니저(337)를 로딩하는 역할을 수행한다. 그리고 커널 계층 모듈(331)과 통신하기 위한 HAL 인터페이스(347)를 제공한다. In addition, the
이와 같이 구성된 모바일 플랫폼의 동작에 대해 설명한다. 모바일 플랫폼의 동작은 단말 부팅시 플랫폼 구동 흐름과, 어플리케이션 API 호출 흐름/HAL 호출 흐름, OEM에서 플랫폼 제공 HAL API 호출 흐름으로 이루어진다. 이때, 아래 반괄호 순번은 도면에 표시된 순번과 일치하며, 도면에서는 각 모듈 간의 통신을 순번이 매겨진 화살표로 나타낸다. The operation of the mobile platform configured as described above will be described. The operation of the mobile platform is composed of platform driving flow, terminal API call flow / HAL call flow, and platform-provided HAL API call flow from the OEM. In this case, the lower parenthesis order is consistent with the order shown in the figure, and the communication between the modules is indicated by an ordered arrow.
1) 이동통신 단말의 부팅시 OEM 계층 모듈(341)이 플랫폼 액티베이터(345)에게 모바일 플랫폼의 구동을 요청한다.1) Upon booting of the mobile communication terminal, the
2) 플랫폼 액티베이터(345)는 모듈 매니저(337)를 로딩하고 HAL 인터페이스(347) 포인터를 전달한다.2) The platform activator 345 loads the
3) 로딩된 모듈 매니저(337)는 OEM이 제공하는 HAL 인터페이스(347) 포인터를 통해 필요한 기본 HAL API를 검색(look up) 한다.3) The loaded
4) 모듈 매니저(337)는 모바일 플랫폼 동작에 필요한 기본 모듈들을 로딩하고 모바일 플랫폼을 초기화한다.4) The
5) 모듈 매니저(337)는 APM 모듈(305)을 구동시켜 단말 부팅 작업을 완료한다.5) The
6) 어플리케이션 2(309)이 구동되고 어플리케이션 2(309)는 모바일 플랫폼이 제공하는 API를 호출한다. 예를 들어, File API가 호출된다.6)
7) 이때, 해당되는 API 기능이 작동하는 시스템 계층 모듈(323)의 기능 모듈이 호출된다. 예를 들어, File 모듈(321)이 호출된다. 만약, 시스템 계층 모듈(323)의 기능 모듈이 로딩되어 있지 않은 경우 모듈 매니저(337)가 기능 모듈을 로딩한다.7) At this time, the function module of the
8) 시스템 계층 모듈(323)의 File 모듈(321)은 모듈 매니저(337)에게 HAL API 호출을 요청한다.8) The
9) 모듈 매니저(337)는 3)에서 검색한 HAL API를 호출한다.9) The
10) OEM 계층 모듈(341)의 플랫폼 액티베이터(345)는 모바일 플랫폼과의 연 동 기능 수행을 위해 모바일 플랫폼이 제공하는 HAL API를 호출한다. 모바일 플랫폼이 제공하는 HAL API Wrapper를 플랫폼 액티베이터(345)가 구현한다.10) The
11) 플랫폼 액티베이터(345)는 모듈 매니저(337)를 통해 플랫폼 제공 HAL API를 호출하여 기능을 수행한다.11) The
그러면, 이상 기술한 모바일 플랫폼이 모듈 형태로 관리 및 업데이트가 이루어지게 하는 구성에 대해 상세히 설명한다. Then, the configuration in which the mobile platform described above is managed and updated in a module form will be described in detail.
도 6은 본 발명의 실시예에 따른 모듈 관리 및 업데이트를 위한 구성을 나타낸다. 6 shows a configuration for module management and updating according to an embodiment of the present invention.
도 6에 보인 바와 같이, 모듈 매니저(337)는 모듈 매니저 인터페이스(337a), 모듈 풀(337b), 모듈 정보 테이블(337c), HAL 인터페이스(339) 및 제어 매니저(337e)를 포함한다. As shown in FIG. 6, the
모듈 매니저 인터페이스(337a)는 어플리케이션에서 또는 모듈 간에 모듈 사용을 위해 필요한 인터페이스로 정의된다. 모듈 매니저 인터페이스(337a)는 모듈에 대한 리스트 조회, 모듈 정보 조회, 모듈 다운로드, 생성을 위한 인터페이스를 포함한다. The
모듈 리스트 조회는, 단말에 설치되어 있는 모듈의 리스트 정보를 제공한다. 이때, 리스트에 포함되어야 하는 모듈은 설치가 완료된 모듈이다. 즉 모듈의 다운로드가 완료되지 않거나 모듈의 설치가 완료되지 않은 경우는 리스트에 포함되지 않는다. 단말에 설치되는 모듈 각각은 유일한 식별자(identifier)를 가지게 되며 모듈의 ID가 식별자 역할을 수행한다. 즉, 어플리케이션은 모듈 ID를 통해 모듈에 접근하게 되므로 모듈 리스트 포맷은 모듈 아이디가 연속적으로 나열된 문자열 형태로 구성된다. The module list inquiry provides list information of modules installed in the terminal. At this time, the module to be included in the list is a module that has been installed. That is, if the download of the module is not completed or the installation of the module is not completed, it is not included in the list. Each module installed in the terminal has a unique identifier, and the ID of the module serves as an identifier. That is, since the application accesses the module through the module ID, the module list format is configured in the form of a string in which the module IDs are continuously listed.
여기서, 모듈 매니저는 모듈 리스트 조회가 요청되면, 단말에 설치된 모듈을 검색하여, 유효한 모듈 들로만 구성된 모듈 리스트를 구성하여 제공한다. Here, when a module list inquiry is requested, the module manager searches for a module installed in the terminal and constructs and provides a module list including only valid modules.
모듈 정보 조회는, 모듈 리스트 조회 후 단말에 설치되어 있는 특정 모듈의 정보를 제공하는 기능이다. 즉 단말에 설치되어 있는 모듈의 정보를 제공한다. 제공되는 모듈의 정보는 아래 표 1과 같다. The module information inquiry is a function of providing information of a specific module installed in the terminal after the module list inquiry. That is, it provides information of the module installed in the terminal. Information on the modules provided is shown in Table 1 below.
여기서, 어플리케이션 또는 모듈이 모듈 정보 조회를 위한 파라미터를 구성하여 파라미터 전달과 함께 특정 모듈에 대한 정보를 요청하면, 모듈 매니저는 단말에 설치된 모듈을 검색하여, 유효한 모듈을 조사한다. 그리고 유효한 모듈의 이름, 버전, 크기, 로딩 여부로 구성된 모듈 정보를 제공한다. Here, when an application or a module configures a parameter for querying module information and requests information on a specific module along with parameter transfer, the module manager searches for a valid module by searching for a module installed in the terminal. It provides module information consisting of the name, version, size and loading status of a valid module.
모듈 로딩 기능은, 모듈에서 다른 모듈을 사용하기 위해 제공하는 기능이다. 어플리케이션의 DLL의 인터페이스 검색 기능과 유사하지만, 본 기능은 모듈에만 한정된다. The module loading function is a function provided to use another module in a module. It is similar to the interface search function of an application DLL, but this function is limited to a module only.
모듈 다운로드 기능은, 제공하는 모듈 정보를 토대로 신규 모듈의 다운로드 및 단말에 이미 설치되어 있는 모듈의 업그레이드 기능을 제공한다. 모듈 다운로드를 직접 수행하는 주체는 모듈 업데이터가 담당한다. 어플리케이션이 모듈 다운로드를 요청하면 모듈 업데이터가 구동되고 모듈 업데이터에게 다운로드 요청 모듈 정보가 전달된다. 모듈 다운로드 요청은 두 개 이상이 가능하다. 즉, 어플리케이션에서 여러 모듈 리스트를 구성하여 다운로드를 요청할 수 있다.The module download function provides a download function of a new module and an upgrade function of a module already installed in the terminal based on the provided module information. The module updater is responsible for directly performing the module download. When the application requests the module download, the module updater is started and the download request module information is transmitted to the module updater. There can be more than one module download request. That is, the application may construct a list of modules and request a download.
이때, 모듈 다운로드 API에서 구성해야 하는 함수 파라미터는 "[모듈 아이디1]#[모듈 버전1],[모듈 아이디2]#[모듈 버전2]"으로 구성된다. At this time, the function parameter to be configured in the module download API is composed of "[module ID1] # [module version1], [module ID2] # [module version2]".
여기서, 어플리케이션이 다운로드 요청한 모듈 정보 파라미터를 구성하고 다운로드시 자신이 중지되야 함을 파라미터로 구성하여 모듈의 다운로드를 요청하면, 모듈 매니저는 모듈 정보가 유효한지 확인한다. 모듈 정보가 유효하고 다운로드 요청한 모듈이 이미 설치되어 있지 않으면 모듈 업데이터 구동에 필요한 파라미터를 지정하여 모듈 업데이터를 구동시킬 것을 APM 모듈에게 요청한다. 이때, APM 모듈은 어플리케이션을 중지시키고 모듈 업데이터를 구동한다. Here, if the application configures the module information parameter requested to download and configures the parameter to be stopped at the time of downloading, the module manager checks whether the module information is valid. If the module information is valid and the module requested for download is not already installed, the APM module is requested to run the module updater by specifying the parameters necessary to drive the module updater. At this time, the APM module stops the application and drives the module updater.
모듈 풀(337b)은 메모리에 로딩된 즉 모듈 매니저(337)가 로딩한 각각의 모듈(107)들에 대한 정보를 관리하는 자료로서 연결 리스트로 관리된다. The
모듈 정보 테이블(337c)은 단말에 설치된 각각의 모듈(107)들에 대한 정보를 관리하는 자료로서 연결 리스트로 관리된다. The module information table 337c is a data for managing information on each
HAL 인터페이스(339)는 OEM 계층 모듈(341)이 제공하는 HAL API를 호출할 수 있도록 하기 위한 메모리 상의 자료 구조이다.
각각의 모듈(107)은 단말 바이너리에 정적으로 링크되는 구조가 아니다. 따라서 각각의 모듈(107)은 HAL API의 주소를 알고 있지 않다. 이러한 점을 고려하여 HAL 인터페이스(339)는 각각의 모듈(107)이 OEM 계층 모듈(341)이 제공하는 HAL 인터페이스의 기능 테이블(Function table)을 통해 API를 호출할 수 있도록 설계된다.Each
모듈 매니저(337)가 사용하는 HAL 인터페이스 목록은 다음 표 2와 같이 정의될 수 있다. The HAL interface list used by the
또한, 제어 매니저(337e)는 모듈 매니저 인터페이스(337a), 모듈 풀(337b), 모듈 정보 테이블(337c) 및 HAL 인터페이스(339)의 동작을 제어한다. 그리고 모듈 업데이터(349)와 연동하고, 모듈 업데이터(349)는 각각의 모듈(107)에 대한 업데이트 관련 제반 동작을 수행한다. 모듈 매니저(337)는 HAL 인터페이스를 제공하고, 모듈 정보를 관리하며, 모듈의 동적 로딩 및 언로딩을 수행한다. 모듈 매니저(337)는 단말에 설치된 모듈의 리스트를 조회하고 특정 모듈의 정보를 조회한다. The
모듈 업데이터(349)는 모바일 플랫폼의 모듈 업데이트를 위한 시스템 어플리케이션으로서, EFS 바이너리(301)에 저장된다. 따라서 모듈 업데이터 자체의 업데이트 역시 일반 어플리케이션의 업데이트 기능을 사용하여 동일하게 업데이트 가능하다.The
모듈 업데이터(349)는 모바일 플랫폼을 구성하는 각각의 모듈(107)을 상위 버전으로 업데이트 가능하게 한다. 또한, 업데이트에 필요한 커널 계층 모듈(331)의 일부 모듈 및 플랫폼 액티베이터(345)를 제외한 모든 모듈(107)을 업데이트한다. The
모듈 업데이트 서버(351)는 사용자가 단말을 통해 접속해서 어플리케이션을 다운로드 받을 수 있도록 해주는 시스템으로서, 각 모듈(107)의 최신 버전을 저장한다. 모듈 업데이터(349)는 모듈 업데이트 서버(351)에 접속하여 각 모듈의 최신 버전을 다운로드 받는다. The
이하, 도 7 내지 도 10은 모듈 매니저(337)의 세부적인 동작을 나타낸다. 7 to 10 show detailed operations of the
먼저, 도 7은 본 발명의 실시예에 따른 모바일 플랫폼 구동 과정을 나타낸 흐름도이다. First, FIG. 7 is a flowchart illustrating a process of driving a mobile platform according to an embodiment of the present invention.
도 7에 보인 바와 같이, 플랫폼 액티베이터(345)는 초기화 함수(MH_pltStart)를 통해 OEM 계층 모듈(341)이 플랫폼 구동을 요청하면, 모듈 매니저(337)에게 모듈 매니저 초기화를 요청한다(S101). As shown in FIG. 7, when the
모듈 매니저(337)는 HAL 인터페이스 정보 테이블 및 모듈 정보 테이블을 초기화한다(S103). 그리고 플랫폼 액티베이터(345)에게 모듈 매니저 초기화 완료를 알린다(S105). The
플랫폼 액티베이터(345)는 모듈 매니저(337)에게 플랫폼 구동을 요청한다(S107). 모듈 매니저(337)는 커널 모듈(333)을 로딩(S109)하여 커널 모듈(333)에게 플랫폼 구동을 요청한다(S111).The platform activator 345 requests the
도 8은 본 발명의 실시예에 따른 HAL 인터페이스 제공 과정을 나타낸다.8 illustrates a process of providing a HAL interface according to an embodiment of the present invention.
도 8에 보인 바와 같이, 플랫폼 액티베이터(345)가 모듈 매니저(337)에게 모듈 매니저 초기화를 요청(S201)한다. 이때, "hal_interface" 인터페이스의 기능 테이블(Function Table) 포인터가 파라미터로 전달된다.As shown in FIG. 8, the
모듈 매니저(337)는 HAL 인터페이스 정보 테이블을 초기화한다(S203).The
모듈 매니저(337)는 S201 단계에서 전달받은 "hal_interface" 인터페이스를 사용하여 OEM 계층 모듈(341)에게 HAL 인터페이스 리스트를 요청한다(S205). The
OEM 계층 모듈(341)은 자신이 제공하는 HAL 인터페이스를 리스트로 구성하여 모듈 매니저에게 반환한다(S207).The
모듈 매니저(337)는 반환 받은 HAL 인터페이스 리스트를 HAL 인터페이스 정보 테이블에 등록한다(S209).The
이후, 클라이언트 모듈이 특정 HAL 인터페이스 검색을 모듈 매니저(337)에게 요청한다(S211). 이때, HAL 인터페이스의 이름이 문자열 형태로 파라미터로 전달된다. 여기서, 클라이언트 모듈은 모듈 매니저(337)에게 특정 동작을 요청하는 임의의 모듈로서, 모듈 매니저 자신이 될 수도 있다.Thereafter, the client module requests the
모듈 매니저(337)는 HAL 인터페이스 정보 테이블을 조회(S213)한다. 그리고 요청 받은 HAL 인터페이스의 검색을 위한 정보 획득 여부를 판단한다(S215).The
이때, 검색에 실패한 경우, 실패 응답을 클라이언트 모듈에게 알린다(S217). At this time, if the search fails, the failure response is notified to the client module (S217).
그러나, 검색에 성공한 경우, 모듈 매니저(337)는 요청 받은 HAL 인터페이스의 검색을 OEM 계층 모듈(341)에게 요청한다(S219).However, if the search is successful, the
OEM 계층 모듈(341)은 요청 받은 HAL 인터페이스의 기능 테이블을 구성(S211)하고 이를 모듈 매니저(337)에게 반환한다(S223).The
모듈 매니저(337)는 반환 받은 HAL 인터페이스 주소를 HAL 인터페이스 정보 테이블에 등록(S225)한 후 클라이언트 모듈에게 성공을 알리는 검색 응답을 반환한다(S227).The
이와 같이, 모듈 매니저(337)는 모바일 플랫폼을 구성하는 각각의 모듈(107)이 HAL API를 사용할 수 있도록 HAL 인터페이스를 검색하고 검색한 HAL 인터페이스를 제공한다. As such, the
도 9는 본 발명의 실시예에 따른 모듈 매니저 초기화 과정을 나타낸다. 즉 모듈 매니저 초기화시 모듈 정보 테이블 로딩 과정을 나타낸다.9 illustrates a module manager initialization process according to an embodiment of the present invention. In other words, it shows the module information table loading process when initializing the module manager.
도 9에 보인 바와 같이, 모듈 매니저(337)는 플랫폼 액티베이터(345)가 요청(S301)한 모듈 매니저 초기화 성공 여부를 판단한다(S303). As shown in FIG. 9, the
성공한 경우, 모듈 정보 테이블(337c)을 초기화(S305)하고 EFS 바이너리(301)에 저장되어 있는 모듈 정보 파일들을 검색(S307)하여 모듈 정보 파일의 존재 유무를 판단한다(S309). 여기서, 모듈 정보 파일은 모듈 정보가 지정된 프로토콜로 저장된 파일이다. 모듈은 모듈 정보 파일과 함께 저장되어 모듈 관리 및 모듈 업데이트가 가능하다. 따라서 신규 모듈 또는 단말에 탑재되어 있는 모듈 보다 상위 버전의 모듈의 다운로드 시에도 모듈 정보 파일이 함께 다운로드된다.If successful, the module information table 337c is initialized (S305), and the module information files stored in the EFS binary 301 are searched (S307) to determine whether the module information file exists (S309). Here, the module information file is a file stored in a protocol in which module information is designated. Modules are stored with module information files for module management and module update. Therefore, even when downloading a module of a higher version than a module mounted in a new module or terminal, the module information file is downloaded together.
모듈 정보 파일이 존재하는 경우, 모듈 정보 파일의 유효성을 확인(S311)하여 유효한지 여부를 판단한다(S313). 즉 EFS 바이너리(301)에 저장되어 있는 모듈 정보 파일과 모듈 바이너리 파일의 매핑 여부와 모듈 정보 파일의 포맷이 정상적인지를 판단한다. If the module information file exists, the validity of the module information file is checked (S311) to determine whether it is valid (S313). That is, it is determined whether the module information file and the module binary file stored in the EFS binary 301 are mapped and whether the format of the module information file is normal.
유효한 경우, 검색된 모듈 정보 파일을 모듈 정보 테이블(337c)에 등록한다(S315). 그리고 플랫폼 액티베이터(345)에게 모듈 매니처 초기화에 성공하였음을 알린다(S317). If valid, the found module information file is registered in the module information table 337c (S315). In addition, the
한편, S303 단계에서 모듈 매니저 초기화 성공에 실패한 경우, EFS 바이너리(301)에 저장된 모듈 정보 파일이 하나도 존재 하지 않는 경우 및 모듈 정보 파일이 유효한 파일이 아닌 경우 플랫폼 구동 실패로 간주(S319)하고 플랫폼 액티베이터(345)에게 이를 보고한다(S321).On the other hand, if the module manager initialization is not successful in step S303, if no module information file stored in the EFS binary (301) and if the module information file is not a valid file is considered as a platform driving failure (S319) and platform activator This is reported to (345) (S321).
이와 같이, 모듈 매니저(337)는 자신의 초기화 과정에서 단말에 설치된 모듈 정보 파일들을 조회하여 각 모듈의 정보들로 모듈 정보 테이블(337c)을 구성한다. In this way, the
도 10은 본 발명의 실시예에 따른 모듈 정보 테이블 갱신 과정을 나타낸다. 10 illustrates a module information table update process according to an embodiment of the present invention.
도 10에 보인 바와 같이, 모듈 업그레이드(S401)가 이루어지면 모듈 업데이터(349)는 모듈 매니저(337)에게 모듈 업데이트를 통보한다(S403). 이때 추가, 갱신된 모듈 아이디를 파라미터로 전달한다.As shown in FIG. 10, when the module upgrade S401 is made, the
모듈 매니저(337)는 모듈 정보 테이블(337c)을 조회(S405)하여 업데이트된 모듈의 로딩 여부를 판단한다(S407).The
이미 로딩이 된 경우, 모듈 업데이터(349)에게 이미 로딩되었음을 보고 한다(S409). If already loaded, the
그러나 로딩 되지 않은 경우, 모듈 정보 파일을 검색(S411)하여 모듈 정보 파일의 존재 유무를 판단한다(S413). However, if it is not loaded, the module information file is searched (S411) to determine whether the module information file exists (S413).
모듈 정보 파일이 존재하지 않는 경우, 모듈 업데이터(349)에게 모듈 업데이트 실패를 보고한다(S415).If the module information file does not exist, the module update failure is reported to the module updater 349 (S415).
그러나 모듈 정보 파일이 존재하는 경우, 모듈 정보 파일을 리드(S417)하여 모듈 정보 파일이 유효한 파일인지를 판단한다(S419). 즉 정상적인 파일 포맷인지를 확인한다.However, if the module information file exists, the module information file is read (S417) to determine whether the module information file is a valid file (S419). In other words, check if the file format is normal.
유효하지 않은 파일인 경우, 모듈 업데이터(349)에게 모듈 업데이트 실패를 보고한다(S421). If the file is invalid, the module update failure is reported to the module updater 349 (S421).
그러나 유효한 파일인 경우, 모듈 정보 파일을 모듈 정보 테이블(337c)에 추가, 갱신한다(S423). 그리고 모듈 매니저(337)는 모듈 업데이터(349)에게 성공을 반환한다(S425).However, if the file is valid, the module information file is added to the module information table 337c and updated (S423). The
이와 같이, 모듈 매니저(337)는 추가, 갱신된 모듈 정보 파일들을 조회하여 각 모듈의 정보들로 모듈 정보 테이블(337c)을 갱신한다. In this way, the
도 11은 본 발명의 실시예에 따른 모듈 로딩 과정을 나타낸다.11 illustrates a module loading process according to an embodiment of the present invention.
도 11에 보인 바와 같이, 클라이언트 모듈로부터 특정 모듈의 로딩이 요청(S501)되면 모듈 매니저(337)는 모듈 정보 테이블(337c)을 조회(S503)하여 상기 특정 모듈의 로딩 여부를 판단한다(S505, S507). As shown in FIG. 11, when a loading of a specific module is requested from the client module (S501), the
이미 로딩된 경우, 상기 특정 모듈을 메모리에 로드하지 않고 모듈 풀(337b)에서 상기 특정 모듈의 자료구조를 갱신(S509)한 후 종료한다. If it is already loaded, the
그러나 로딩되지 않은 경우, 모듈 매니저(337)는 모듈 로딩 정보를 위한 메모리 할당을 OEM 계층 모듈(341)에게 요청한다(S511). 여기서, 모듈 로딩 정보는 메모리에 로딩된 모듈을 관리하기 위한 정보이다. However, if not loaded, the
OEM 계층 모듈(341)은 요청한 메모리 크기만큼 메모리를 할당(S513)한 후 모듈 매니저(337)에게 메모리 할당 응답을 전송한다(S515).The
모듈 매니저(337)는 할당 받은 메모리에 모듈 로딩 정보를 기록(S517)하고, EFS 바이너리(301)에서 상기 특정 모듈의 모듈 바이너리를 검색한다(S519).The
검색 결과, 상기 모듈 바이너리의 존재 유무를 판단(S521)하여 존재하는 경우 모듈 매니저(337)는 상기 모듈 바이너리를 읽어(S523) 상기 모듈 바이너리가 유효한지를 판단한다(S525).As a result of the search, it is determined whether the module binary exists (S521), and if present, the
유효하지 않은 경우, 클라이언트 모듈에게 상기 특정 모듈의 로딩 실패를 보고한다(S527)If it is not valid, the client module reports the loading failure of the specific module (S527).
유효한 경우, 모듈 매니저(337)는 상기 특정 모듈 로딩에 필요한 메모리의 할당을 OEM 계층 모듈(341)에게 요청한다(S529). OEM 계층 모듈(341)은 요청한 메모리 크기만큼 메모리를 할당(S531)한 후 응답한다(S533). If valid, the
모듈 매니저(337)는 할당 받은 메모리에 해당 모듈 코드를 로딩한다(S535). The
모듈 매니저(337)는 모듈이 등록한 모듈 초기화 함수를 호출한다(S537). The
모듈 매니저(337)는 모듈 로딩 정보를 갱신하여 모듈 풀(337b)에 등록(S539)한 후 모듈 정보 테이블(337c)을 갱신(S541)하고 모듈 로딩을 완료한다(S543).The
도 12는 본 발명의 실시예에 따른 모듈 언로딩 과정을 나타낸다. 즉 어플리케이션 종료 시점에 사용이 끝난 모듈들을 언 로드 처리하는 과정을 나타낸다.12 illustrates a module unloading process according to an embodiment of the present invention. That is, the process of unloading the used modules at the end of the application is shown.
도 12에 보인 바와 같이, 클라이언트 모듈은 특정 어플리케이션의 종료를 모듈 매니저(337)에게 통보한다(S601). 이때, 종료할 어플리케이션 아이디 및 모듈 로딩 리스트 포인터가 파라미터로 전달된다.As shown in FIG. 12, the client module notifies the
모듈 매니저(337)는 전달 받은 모듈 로딩 리스트를 탐색(S603)하여 로딩된 모듈의 존재 유무를 판단한다(S605).The
로딩된 모듈이 존재하지 않으면 절차를 종료한다. 즉 모듈 매니저(337)는 아무런 처리도 하지 않는다.If the loaded module does not exist, the procedure is terminated. In other words, the
그러나 로딩된 모듈이 존재하는 경우, 모듈 매니저(337)는 탐색된 모듈의 모듈 로딩 정보 중 모듈 로더 리스트에서, 어플리케이션 아이디에 해당하는 엔트리를 제거한다(S607). However, if there is a loaded module, the
모듈 매니저(337)는 종료된 어플리케이션 엔트리가 모두 삭제되었는지를 판단(S609)하여 남은 엔트리가 없을 때까지 S607 단계를 반복한다. 즉 탐색된 모듈을 로딩한 프로그램/DLL/모듈이 하나도 없음을 확인한다. The
이후, 모듈 매니저(337)는 해당 모듈이 사용한 메모리를 OEM 계층 모듈(341)에게 반환(S611)하고 해당 모듈의 모듈 로딩 정보를 모듈 풀(337b)에서 제거(S613)한다. 그리고 모듈 정보 테이블(337c)을 갱신한다(S615).Thereafter, the
도 13은 본 발명의 실시예에 따른 어플리케이션에 의한 Java Class 참조 과정을 나타낸다. 즉 어플리케이션에서 특정 모듈이 제공하는 클래스(Class)를 참조하는 시나리오를 나타낸다. 13 illustrates a Java class reference process by an application according to an embodiment of the present invention. That is, it represents a scenario in which an application refers to a class provided by a specific module.
도 13에 보인 바와 같이, 클라이언트 모듈이 Class 참조를 클래스 로더(Class Loader)에게 요청한다(S701).As shown in FIG. 13, the client module requests a class reference from a class loader (S701).
클래스 로더는 모듈 매니저(337)에게 클래스 엔트리 검색(Class Entry Look-up)을 요청한다(S703). 이때 해당 클래스 명이 파라미터로 전달된다.The class loader requests a class entry look-up from the module manager 337 (S703). The class name is passed as a parameter.
모듈 매니저(337)는 모듈 정보 테이블(337c)을 조회(S705)하여 요청된 클래스의 존재 유무를 판단한다(S707). 이때, 클래스가 존재하지 않는 경우 NULL 값을 클래스 로더에게 반환한다(S709).The
그러나 클래스가 존재하는 경우, 모듈 매니저(337)는 클래스가 포함된 모듈 정보를 획득(S711)하여 해당 모듈의 메모리 로딩을 개시한다(S713).However, if the class exists, the
해당 모듈의 메모리 로딩 성공 여부를 판단(S715)하여, 실패한 경우에는 NULL 값을 클래스 로더에게 반환한다(S717). It is determined whether the memory loading of the module is successful (S715), and when it fails, a NULL value is returned to the class loader (S717).
그러나 메모리 로딩에 성공한 경우, 모듈 매니저(337)는 로딩된 모듈에게 클래스 엔트리 검색을 요청하고, 모듈은 자신의 클래스 테이블(Class Table)을 조회하여 요청된 클래스 엔트리(Class Entry)의 주소를 모듈 매니저(337)에게 반환한다(S719). However, if the memory loading is successful, the
모듈 매니저(337)는 클래스 로더에게 요청된 클래스 엔트리의 주소를 반환한다(S721). 그리고 클래스 로더는 클라이언트 모듈에게 클래스 엔트리의 주소를 반환한다(S723).The
도 14는 본 발명의 실시예에 따른 어플리케이션에 의한 C API 호출 과정을 나타낸다. 즉 어플리케이션에서 한국무선인터넷 표준화 포럼(KWISF: Korea Wireless Internet Standardization Forum) 표준 WIPI-C API를 호출하는 시나리오를 나타낸다.14 illustrates a C API call process by an application according to an embodiment of the present invention. In other words, it represents a scenario in which the application calls the Korea Wireless Internet Standardization Forum (KWISF) standard WIPI-C API.
도 14에 보인 바와 같이, 어플리케이션은 자신의 구동 시점에 'Stub' 코드를 통하여 커널 모듈(333)에게 WIPI-C 인터페이스 검색을 요청한다(S801). 그러면 커널 모듈(333)은 모듈 매니저(337)에게 WIPI-C 인터페이스 검색을 요청한다(S803).As shown in FIG. 14, the application requests the
모듈 매니저(337)는 모듈 정보 테이블(337c)을 조회(S805)하여 요청된 WIPI-C 인터페이스가 포함 되었는지 여부 즉 검색 성공 여부를 확인한다(S807).The
검색에 실패한 경우, 모듈 매니저(337)는 커널 모듈(333)에게 구동 실패를 반환(S809)하고 커널 모듈(333)은 어플리케이션에게 구동 실패를 반환한다(S811).If the search fails, the
그러나 검색에 성공한 경우, 모듈 매니저(337)는 WIPI-C 인터페이스가 포함된 모듈 정보를 획득한다(S813). 그리고 해당 모듈을 메모리에 로딩한다(S815). However, if the search is successful, the
로딩에 실패한 경우(S817), 모듈 매니저(337)는 커널 모듈(333)에게 구동 실패를 반환(S819)하고 커널 모듈(333)은 어플리케이션에게 구동 실패를 반환한다(S821).If loading fails (S817), the
그러나 로딩에 성공한 경우(S817), 모듈 매니저(337)는 로딩된 모듈에게 WIPI-C 인터페이스 검색을 요청하고 모듈은 자신의 WIPI-C 인터페이스 주소를 모듈 매니저(337)에게 반환한다(S823). 그러면 모듈 매니저(337)는 커널 모듈(333)에게 WIPI-C 인터페이스 주소를 반환(S825)하고, 커널 모듈(333)은 어플리케이션에게 WIPI-C 인터페이스 주소를 반환한다(S827). However, if the loading is successful (S817), the
이후, 어플리케이션은 반환 받은 WIPI-C 인터페이스 주소를 참조하여 WIPI-C API를 호출한다. Then, the application calls the WIPI-C API by referring to the returned WIPI-C interface address.
다음, 도 15 내지 도 23은 모듈 업데이터(349)의 세부적인 동작을 나타낸다. Next, FIGS. 15 to 23 show detailed operations of the
모듈 업데이트의 요청 경로는 세가지 실시예가 있다. 즉 업데이트용 플랫폼 메뉴를 통한 업데이트, 콜백 SMS(short Message Service) 수신에 의한 업데이트 및 어플리케이션에서의 업데이트 요청에 의한 업데이트 각각의 경우에 해당한다. 여기서, 업데이트용 플랫폼 메뉴를 통한 업데이트는 모듈 업데이트 서버로부터의 무선 업데이트, 외부 저장 장치에 저장되어 있는 모듈로의 업데이트, PC(Personal Computer)와의 USB(Universal Serial Bus) 통신에 의한 업데이트에 이 메뉴가 사용될 수 있다. The request path of the module update has three embodiments. In other words, this is the case of an update through an update platform menu, an update by receiving a callback short message service (SMS), and an update by an update request from an application. Here, the update through the platform menu for update is performed by the wireless update from the module update server, the update to the module stored in the external storage device, and the update by the universal serial bus (USB) communication with the personal computer (PC). Can be used.
도 15는 본 발명의 제1 실시예에 따른 모듈 업데이트 과정을 나타낸 순서도이다. 즉 모듈 업데이터(349)가 업데이트 구동 타입에 따라 모듈 업데이트를 수행하는 과정을 나타낸다. 15 is a flowchart illustrating a module update process according to the first embodiment of the present invention. That is, the
도 15에 보인 바와 같이, 모듈 업데이터(349)가 구동되면 모듈 업데이터(349)는 구동 타입을 체크한다(S901). As shown in FIG. 15, when the
여기서, 구동 타입은 'UPDATE_REQUEST_FROM_WIPI type', 'UPDATE_REQUEST_FROM_CBSMS', 'UPDATE_REQUEST_FROM_APP' 각각으로 정의된다. 이때, 'UPDATE_REQUEST_FROM_WIPI type'은 업데이트용 플랫폼 메뉴를 통한 업데이트를 나타낸다. 'UPDATE_REQUEST_FROM_CBSMS'는 콜백 SMS 수신에 의한 업데이트를 나타낸다. 'UPDATE_REQUEST_FROM_APP'는 어플리케이션에서의 업데이트 요청에 의한 업데이트를 나타낸다. 이때, 구동 타입이 'UPDATE_REQUEST_FROM_CBSMS', 'UPDATE_REQUEST_FROM_APP'인 경우에는 모듈 업데이터(349) 구동시 파라미터로 '업데이트 요청 모듈 리스트'를 전달받는다. Here, the driving type is defined as 'UPDATE_REQUEST_FROM_WIPI type', 'UPDATE_REQUEST_FROM_CBSMS', and 'UPDATE_REQUEST_FROM_APP', respectively. At this time, 'UPDATE_REQUEST_FROM_WIPI type' indicates an update through the update platform menu. 'UPDATE_REQUEST_FROM_CBSMS' indicates an update by receiving a callback SMS. 'UPDATE_REQUEST_FROM_APP' indicates an update by an update request from an application. In this case, when the driving type is 'UPDATE_REQUEST_FROM_CBSMS' and 'UPDATE_REQUEST_FROM_APP', the 'update request module list' is transmitted as a parameter when the
따라서, 모듈 업데이터(349)는 구동 타입이 메뉴에 의한 것인지를 판단(S903)한 후, 메뉴에 의한 경우 즉 'UPDATE_REQUEST_FROM_WIPI type'으로 구동되는 경우에는 모듈 업데이트 서버(351)로부터 최신 버전 모듈 리스트를 획득한다(S905). Therefore, the
그러면, 모듈 업데이터(349)는 모듈 업데이터(349) 구동시 파라미터로 전달받은 '업데이터 요청 모듈 리스트' 또는 모듈 업데이트 서버(351)로부터 획득한 최신 버전 모듈 리스트를 토대로 '업데이트 대상 모듈 리스트'를 생성한다(S907). Then, the
모듈 업데이터(349)는 '업데이트 대상 모듈 리스트'의 모듈이 버전이 지정되어 요청된 업데이트 요청인지 확인한다(S909). The
이때, 업데이트 메뉴를 통한 모듈 업데이터(349) 구동의 경우에는 모듈 업데이트 서버(351)로부터 최신 버전의 모듈 리스트를 조회하여 '업데이트 요청 모듈 리스트'가 구성되므로 '업데이트 대상 모듈 리스트'의 모든 모듈이 버전이 지정된 업데이트 요청이다. 그러나 콜백 SMS 또는 어플리케이션으로부터 업데이트 요청이 되는 경우에는 모듈 지정 없이 최신 버전으로의 업데이트 요청도 가능하다. At this time, in the case of driving the
버전이 지정된 업데이트 요청에 대해서 모듈 업데이터(349)는 해당 모듈이 단말에 탑재되어 있는지 여부를 조회한다(S911). In response to the versioned update request, the
단말에 탑재되어 있는 경우, 모듈 업데이터(349)는 버전을 조회(S913)하여 업데이트 요청된 모듈 버전보다 하위 버전이 단말에 탑재되어 있는지를 판단한다(S915). If the terminal is installed in the terminal, the
하위 버전이 단말에 탑재된 경우, 해당 모듈은 '업데이트 대상 모듈 리스트'에 추가한다(S917). 또한, 버전이 지정되지 않고 업데이트 요청된 모듈 역시 '업데이트 대상 모듈 리스트'에 추가 한다. 또한, 단말에 탑재되어 있지 않은 모듈 역시 '업데이트 대상 모듈 리스트'에 추가한다.If the lower version is mounted on the terminal, the corresponding module is added to the 'update target module list' (S917). In addition, the module that is requested to update without a version is also added to 'Update target module list'. In addition, the module not mounted in the terminal is also added to the 'update target module list'.
한편, 업데이트 요청 모듈의 버전보다 상위 버전 또는 동일 버전의 모듈이 단말에 탑재되어 있는 경우, 모듈 업데이트가 불필요하므로 '업데이트 대상 모듈 리스트'에 추가하지 않는다.On the other hand, when a module having a higher version or the same version than the version of the update request module is mounted in the terminal, the module update is unnecessary, and thus it is not added to the update target module list.
모듈 업데이터(349)는 다음 모듈이 존재하는지를 판단(S919)하여 '업데이트 대상 모듈 리스트'의 모든 모듈에 대해서 S911 단계부터 그 이후의 과정을 반복 수행한다.The
다음 모듈이 존재하지 않는 경우, 모듈 업데이터(349)는 '업데이트 대상 모듈 리스트'에 포함되어 있는 모듈의 모듈 정보를 모듈 업데이트 서버(351)로부터 획득한다(S921). 이때, 모듈 정보에는 모듈 명, 모듈 버전, 인터페이스 리스트, 크기 등이 포함되어 있다. If the next module does not exist, the
이때, 콜백 SMS 또는 어플리케이션에서 의해서 모듈 업데이트가 요청된 경우에는, 실제로 모듈 업데이트 서버(351)에 존재하지 않는 버전의 모듈로 업데이트가 요청될 가능성이 있다. 따라서, 모듈 업데이터 구동 타입이 콜백 SMS 또는 어플리케이션인 경우에는 업데이트 대상 모듈의 업데이트 요청 버전을 모듈 업데이트 서버에 있는 최신 버전과 비교하는 과정이 추가 되어야 한다.At this time, when a module update is requested by the callback SMS or an application, there is a possibility that an update is requested to a version of a module that does not actually exist in the
즉 모듈 업데이터(349)는 구동 타입이 메뉴에 의한 것인지를 판단(S923)하여 메뉴 타입이 아닌 콜백 SMS 또는 어플리케이션에 의해서 모듈 업데이트가 요청된 경우, 버전 지정 업데이트 요청인지를 판단한다(S925). That is, the
버전 지정 업데이트 요청이 아닌 경우, 해당 모듈이 단말에 탑재하는지를 판단한다(S927). If it is not a version designation update request, it is determined whether the corresponding module is mounted on the terminal (S927).
단말에 탑재된 경우, 단말에 탑재된 모듈의 버전을 조회(S929)하여 업데이트 요청 버전보다 작은지를 판단한다(S931). 작은 경우, EFS 바이너리 용량을 체크한다(S935). If it is mounted on the terminal, it is determined whether the version of the module mounted on the terminal is smaller than the update request version (S929) (S931). If small, the EFS binary capacity is checked (S935).
또한, S925 단계에서 판단 결과 버전 지정 업데이트 요청인 경우, 업데이트 요청 버전이 모듈 업데이트 서버에 저장된 모듈의 버전보다 작거나 같은지를 판단한다(S933). 작거나 같은 경우, EFS 바이너리 용량을 체크한다(S935).In addition, if it is determined in step S925 that the version designation update request, it is determined whether the update request version is less than or equal to the version of the module stored in the module update server (S933). If less than or equal to, check the EFS binary capacity (S935).
또한, 메뉴 타입인 경우 역시 EFS 바이너리 용량을 체크한다(S935).Also, in the case of the menu type, the EFS binary capacity is also checked (S935).
또한, S927 단계에서 모듈이 단말에 탑재된 경우 역시 EFS 바이너리 용량을 체크한다(S935). In addition, when the module is mounted in the terminal in step S927, the EFS binary capacity is also checked (S935).
그리고 모듈 업데이트 서버(351)로부터 해당 모듈의 모듈 바이너리를 다운로드(S937)하여 설치한다(S939). 이때, 모듈 업데이트시 단말의 EFS 영역에 모듈을 다운로드 할 공간이 확보되지 않은 경우 어플리케이션 삭제 메뉴에 진입하여 EFS 저장 공간을 확보한 후에 모듈을 다운로드 하도록 한다. EFS 저장 공간이 확보되어 있는 경우 모듈 업데이터(349)는 업데이트 대상 모듈에 대해서 모듈을 다운로드하여 단말의 EFS 바이너리에 저장하고 단말에 탑재된 하위 버전의 모듈은 삭제한다.The module binary of the module is downloaded from the module update server 351 (S937) and installed (S939). At this time, if there is no space to download the module in the EFS area of the terminal during module update, enter the application deletion menu to secure the EFS storage space and download the module. When the EFS storage space is secured, the
한편, 업데이트 요청 버전이 모듈 업데이트 서버(351)에 저장된 모듈의 버전보다 큰 경우에는 업데이트 요청된 모듈의 버전이 모듈 업데이트 서버(351)에 존재하지 않는 것이므로 업데이트가 불가능하다. 또한 단말에 탑재된 모듈의 버전이 업데이트 요청 버전보다 큰 경우에는, 모듈 업데이트가 불필요하다. 따라서 이와 같은 경우에는 해당 모듈은 업데이트 처리가 되지 않고 '업데이트 대상 모듈 리스트'의 다음 모듈로 업데이트 처리를 계속 수행한다(S941). On the other hand, if the update request version is larger than the version of the module stored in the
그리고 '업데이트 대상 모듈 리스트'의 모든 모듈에 대해서 업데이트 처리가 완료되면 모듈 업데이트를 완료한다. When the update process is completed for all modules in the "Update target module list", the module update is completed.
도 16은 본 발명의 제2 실시예에 따른 모듈 업데이트 과정을 나타낸 흐름도이다. 즉 사용자가 플랫폼에서 제공하는 모듈 업데이트 메뉴에 진입하여 모듈을 업데이트 할 수 있는 기능을 제공한다. 16 is a flowchart illustrating a module update process according to a second embodiment of the present invention. That is, the user can enter the module update menu provided by the platform and provide a function to update the module.
도 16에 보인 바와 같이, 사용자가 보관함에서 모듈 업데이터(349)를 구동(S1001)하여 무선 모듈 업데이트를 선택한다(S1003). 그러면, 보관함은 모듈 업데이터(349)에게 모듈 업데이터 구동을 요청한다(S1005). As shown in FIG. 16, the user drives the
모듈 업데이터(349)는 모듈 업데이트 서버(351)에게 최신 모듈 정보 리스트 조회를 요청한다(S1007). 즉 모듈 ID와 버전 리스트를 조회한다. 그러면 모듈 업데이트 서버(351)는 최신 모듈 정보 리스트를 모듈 업데이터(349)로 전송한다(S1009). The
모듈 업데이터(349)는 모듈 매니저(337)에게 단말에 탑재된 모듈의 버전을 조회(S1011)하여 전달받는다(S1013). The
모듈 업데이터(349)는 모듈 업데이트 서버(351)로부터 전달받은 최신 버전의 모듈 정보와 단말에 탑재되어 있는 플랫폼 모듈 정보를 비교하여 업데이트 대상 모듈 리스트를 생성한다(S1015). The
모듈 업데이터(349)는 사용자에게 업데이트 대상 모듈 개수를 알려주고 업데이트할지 여부를 결정하도록 한다(S1017). The
이때, 사용자가 모듈 업데이트를 선택하면 모듈 업데이터(349)는 업데이트 대상 모듈 리스트에 포함된 모듈 정보를 모듈 업데이트 서버(351)에 요청(S1019)하여 전달받는다(S1021). At this time, when the user selects the module update, the
모듈 업데이터(349)는 S1021에서 전달받은 모듈 정보의 크기만큼의 저장 공간이 EFS 바이너리에 있는지 용량을 체크한다(S1023). The
그리고 모듈 업데이터(349)는 모듈 업데이트 서버(351)로부터 모듈을 다운로드(S1025)하여 설치한다(S1027). 즉 하위 버전의 모듈을 EFS 바이너리에서 삭제하고, 다운로드 한 상위 버전의 모듈을 설치한다. The
모듈 업데이터(349)는 사용자에게 업데이트가 완료되었음을 알리는 화면을 디스플레이(S1029)하고, 구동을 종료한다.The
도 17은 본 발명의 제3 실시예에 따른 모듈 업데이트 과정을 나타낸 흐름도이다. 즉 콜백 SMS 수신에 의한 업데이트 과정을 나타낸다.17 is a flowchart illustrating a module update process according to a third embodiment of the present invention. That is, it shows the update process by receiving a callback SMS.
도 17에 보인 바와 같이, 모듈 업데이트 서버(351)에서 업데이트할 모듈 정보가 포함된 콜백 SMS를 이동통신 단말로 전송한다(S1101). 그러면 이동통신 단말의 문자 메시지 핸들러는 콜백 SMS 수신 화면을 출력(S1103)하여 사용자에게 표시한다. As shown in FIG. 17, the
사용자가 콜백 SMS에서 모듈 업데이트를 선택(S1105)하여 모듈 업데이터(349)를 구동하면, 문자 메시지 핸들러는 모듈 업데이터(349)에게 모듈 업데이트 구동을 요청한다(S1107). When the user selects the module update in the callback SMS (S1105) to drive the
모듈 업데이터(349)는 콜백 SMS로부터 모듈 정보를 추출(S1109)하여 추출한 모듈 정보와 단말에 탑재되어 있는 모듈 정보를 비교하여 업데이트 대상 모듈 리스트를 생성한다(S1111). The
모듈 업데이터(349)는 사용자에게 업데이트 대상 모듈 개수를 알려주고 업데이트할지 여부를 결정하도록 한다(S1113).The
사용자가 업데이트를 선택하면, 모듈 업데이터(349)는 업데이트 대상 모듈 리스트에 포함된 모듈 정보를 모듈 업데이트 서버에 조회(S1115)하여 전달받는다(S1117). When the user selects the update, the
모듈 업데이터(349)는 모듈 업데이트 서버(351)로부터 전달받은 모듈 정보의 모듈 버전과 업데이트 대상 모듈 리스트에 포함된 업데이트 요청 모듈 버전을 비교한다(S1119). The
모듈 업데이터(349)는 조회한 모듈크기만큼의 저장공간이 EFS 바이너리에 있는지 확인한다(S1121). The
모듈 업데이터(349)는 모듈 업데이트 서버(351)로부터 모듈을 다운로드(S1123)하여 설치한다(S1125). 즉 모듈 업데이터(349)는 다운로드한 상위 버전의 모듈을 EFS 바이너리에 저장하고 하위 버전의 모듈은 EFS 바이너리에서 삭제한다. The
그리고 모듈 업데이터(349)는 사용자에게 업데이트가 완료되었음을 알리고 종료한다(S1127). The
도 18은 본 발명의 제4 실시예에 따른 모듈 업데이트 과정을 나타낸 흐름도이다. 즉 어플리케이션에서의 업데이트 요청에 의한 업데이트 과정을 나타낸다.18 is a flowchart illustrating a module update process according to a fourth embodiment of the present invention. That is, the update process by the update request from the application is shown.
도 18에 보인 바와 같이, 실행을 개시(S1201)한 어플리케이션은 모듈 매니저(337)에게 단말에 탑재된 모듈 리스트를 조회(S1203, S1205)하여 전달받는다(S1207, S1209). 어플리케이션은 전달받은 모듈 리스트를 검색하여 어플리케이션에서 필요한 모듈이 존재하는지를 판단한다(S1211). 이때, 존재하는 경우, 모듈 매니저(337)에게 모듈 버전을 조회(S1213)하여 전달(S1215)받고 존재하지 않는 경우에는 모듈 버전 조회는 하지 않는다. As shown in FIG. 18, the application which has started execution (S1201) is sent to the
이후, 어플리케이션은 APM 모듈(305)에게 모듈 업데이트를 요청(S1217)하고 어플리케이션은 실행을 중지한다(S1219). 그리고 APM 모듈(305)은 모듈 업데이터(349)에게 모듈 업데이트 구동을 요청한다(S1221). Thereafter, the application requests the module update from the APM module 305 (S1217) and the application stops executing (S1219). The
모듈 업데이터(349)는 어플리케이션으로부터 업데이트 요청된 모듈 버전 정보와 단말에 탑재되어 있는 모듈 버전 정보를 비교하여 업데이트 대상 모듈 리스트를 생성한다(S1223). 그리고 모듈 업데이터(349)는 사용자에게 업데이트할 모듈 개수를 알려주고 업데이트할지 여부를 결정하도록 한다(S1225). The
사용자가 업데이트를 선택하면, 모듈 업데이터(349)는 업데이트 대상 모듈 리스트에 포함된 모듈 정보를 모듈 업데이트 서버(351)에 조회(S1227)하여 전달받는다(S1229). When the user selects the update, the
모듈 업데이터(349)는 모듈 업데이트 서버(351)에서 조회한 모듈 버전과 업데이트 대상 모듈 리스트에 포함된 모듈 버전을 비교한다(S1231). The
모듈 업데이터(349)는 조회한 모듈 크기만큼의 저장공간이 EFS 바이너리에 있는지 확인한다(S1233). The
모듈 업데이터(349)는 모듈을 다운로드(S1235)하여 설치(S1237)하고 어플리케이션에 모듈 업데이트가 완료되었음을 알린다(S1239, S1241). 그러면 어플리케이션은 실행을 재개시한다(S1243).The
한편, 사용자가 모듈 업데이트 메뉴에서 'hidden' 메뉴에 진입한 경우 USB를 통한 업데이트 또는 외부 저장 장치를 통한 업데이트를 선택할 수 있다. 여기서, 'hidden' 메뉴 진입은 다음과 같이 이루어진다. 즉 사용자가 보관함의 메뉴를 통해 모듈 업데이터를 구동한 후 최초 화면에서 롱 키로 '*'를 입력한 후에 비밀번호를 입력하여 'hidden' 메뉴로 진입할 수 있다. 이때, 'hidden' 메뉴에서는 USB 또는 외부 저장 장치를 선택할 수 있는 UI(UserInterface)를 제공한다. Meanwhile, when the user enters the 'hidden' menu in the module update menu, the user may select update through USB or update through an external storage device. Here, the 'hidden' menu entry is performed as follows. That is, the user can enter the 'hidden' menu by driving the module updater through the menu of the storage box, entering '*' with the long key on the initial screen, and then entering the password. In this case, the 'hidden' menu provides a UI (UserInterface) for selecting a USB or an external storage device.
먼저, 도 19는 본 발명의 제5 실시예에 따른 모듈 업데이트 과정을 나타낸 흐름도이다. 즉 PC와의 USB 통신에 의한 업데이트 과정을 나타낸다. 이때, PC에 모듈 업데이트를 위한 소프트웨어(이하, 'PC S/W'라 통칭함)가 존재해야 하며, 모듈 업데이터에서 USB를 통한 모듈 업데이트를 선택할 때 이 PC S/W가 PC상에서 구동되어 있어야 한다.First, FIG. 19 is a flowchart illustrating a module update process according to a fifth embodiment of the present invention. That is, the update process by USB communication with a PC is shown. At this time, software for module update (hereinafter referred to as 'PC S / W') must exist in PC, and this PC S / W must be running on PC when selecting module update through USB in module updater. .
도 19에 보인 바와 같이, 사용자가 보관함에서 모듈 업데이터(349)를 구동한다(S1301). 그리고 모듈 업데이터(349)의 'hidden' 메뉴에 진입하여 'hidden' 메뉴에서 USB 업데이트를 선택한다(S1303). 그러면 보관함은 모듈 업데이터(349)에게 모듈 업데이터 구동을 요청한다(S1305).As shown in FIG. 19, the user drives the
모듈 업데이터(349)는 PC와의 통신을 위해 사용자에게 포트(Port)와 접속 스피드(Connection Speed)를 입력하도록 사용자 화면(UI)를 출력(S1307)하여 입력받는다(S1309).The
모듈 업데이터(349)는 입력된 포트와 접속 스피드로 PC에 접속하도록 OEM 계층 모듈(341)에게 커넥트를 요청한다(S1311). OEM 계층 모듈(341)은 PC S/W와 접속(S1313)하고 모듈 업데이터(349)에게 응답한다(S1315). The
모듈 업데이터(349)는 커넥트 성공 여부를 판단한다(S1317). 이때, 커넥트에 실패한 경우 즉 PC S/W가 PC에 저장되어 있지 않은 경우, 사용자에게 USB를 통한 업데이트가 불가함을 알리고 모듈 업데이터(349)를 종료한다. The
그러나 커넥트에 성공한 경우에는, 모듈 업데이터(349)는 PC S/W로 PC에 저장된 모듈 리스트(모듈ID)를 요청한다(S1319).However, if the connection is successful, the
PC S/W가 PC에 저장되어 있는 모듈 리스트를 모듈 업데이터(349)로 전송한다(S1321). PC S/W는 지정된 폴더에 있는 플랫폼 모듈 리스트를 모듈 업데이터에 전달한다. 이때, 모듈이 저장되지 않은 경우 모듈 업데이터(349)에 모듈이 존재하지 않음을 알린다.The PC S / W transfers the module list stored in the PC to the module updater 349 (S1321). PC S / W sends the platform updater the list of platform modules in the specified folder. In this case, if the module is not stored, the
모듈 업데이터(349)는 사용자에게 PC에 저장되어 있는 모듈 개수를 알려주고 업데이트할지 여부를 결정하도록 한다(S1323).The
사용자가 업데이트를 선택하면, 모듈 업데이터(349)는 모듈 리스트에 포함된 모듈 정보 파일을 PC S/W로 요청(S1325)하여 전달받는다(S1327).When the user selects the update, the
그리고 모듈 업데이터(349)는 모듈 매니저(337)에게 단말에 탑재된 모듈의 버전을 조회(S1329)하여 전달받는다(S1331). 모듈 업데이터(349)는 전달받은 단말에 탑재된 모듈 정보와 PC S/W로부터 전달받은 모듈 정보를 비교한다(S1333). 즉 모듈 업데이터는 모듈 버전 정보와 단말에 탑재되어 있는 모듈 버전을 비교하여 단말에 탑재된 버전보다 상위 버전의 모듈이 PC에 저장되어 있는 경우 모듈 업데이트 처리를 하도록 한다. EFS 바이너리와 PC에 저장되어 있는 모듈 버전이 같거나 PC에 하위 버전이 저장되어 있는 경우 업데이트가 불필요하므로 업데이트하지 않는다. In addition, the
모듈 업데이터(349)는 조회한 모듈크기만큼의 저장공간이 EFS 바이너리에 있는지 확인한다(S1335). The
모듈 업데이터(349)는 PC S/W에게 모듈 바이너리를 다운로드(S1337)하여 설치한다(S1339). 즉 모듈 업데이터는 PC S/W에 PC에 저장되어 있는 모듈 정보 파일([모듈 아이디].mdf)을 요청하여 단말 EFS에 임시 모듈 정보 파일([모듈 아이디].tdf)을 생성한다. 모듈 업데이터는 업데이트 대상 모듈에 대해서 버전 복사에 필요한 공간을 확보하고 PC에 있는 모듈 바이너리([모듈 아이디].jar)를 리드하여 단말 EFS에 임시 모듈 바이너리([모듈 아이디].tmp)를 생성한다. 임시 모듈 바이너리 파일 생성이 완료되면 바이너리 파일 내의 wrddj, wrddc 파일을 리드하여 임시 모듈 정보 파일([모듈 아이디].tdf)에 쓰기(write)한다. 임시 모듈 정보 파일에 쓰기가 완료되면 임시 모듈 바이너리 파일과 임시 모듈 정보 파일을 리네임(rename)한다. 그리고 사용자에게 업데이트가 완료되었음을 알린다(S1341). The
도 20은 본 발명의 제6 실시예에 따른 모듈 업데이트 과정을 나타낸 흐름도이다. 즉 외부 저장 장치에 저장되어 있는 모듈로의 업데이트 과정을 나타낸다. 이때, 외부 저장 장치에 모듈이 저장되는 경우에는 모듈 업데이터(349)에서 지정한 폴더에 모듈 정보 파일과 함께 저장되어야 한다.20 is a flowchart illustrating a module update process according to a sixth embodiment of the present invention. That is, the process of updating to the module stored in the external storage device. In this case, when the module is stored in the external storage device, the module should be stored together with the module information file in the folder designated by the
도 20에 보인 바와 같이, 사용자가 보관함에서 모듈 업데이터(349)를 구동한다(S1401). 그리고 모듈 업데이터(349)의 'hidden' 메뉴에 진입하여 외부 저장 장치를 통한 모듈 업데이트 기능을 선택한다(S1403). 보관함은 모듈 업데이터(349)에게 모듈 업데이터 구동을 요청한다(S1405). As shown in FIG. 20, the user drives the
모듈 업데이터(349)는 외부 저장 장치가 부착되어 있는지 조회한다(S1407). 부착되지 않은 경우, 외부 저장 장치가 부착되어 있지 않음을 알리고 모듈 업데이터(349)를 종료한다. 그러나 부착된 경우, 모듈 업데이터(349)는 외부 저장 장치에 존재하는 모듈을 조회하여 모듈이 존재하는지를 판단한다(S1409). 모듈이 존재하지 않는 경우, 사용자에게 업데이트할 모듈이 없음을 알리고 모듈 업데이터(349)를 종료한다. 그러나 모듈이 존재하는 경우, 모듈 업데이터(349)는 사용자에게 외부 저장 장치에 저장되어 있는 모듈 개수를 알려주고 업데이트할지 여부를 결정하도록 한다(S1411).The
사용자가 업데이트를 선택하면, 모듈 업데이터(349)는 'MH_fileList()' 함수를 이용해서 외부 저장 장치의 모듈 저장 폴더에 저장된 모든 파일 리스트 조회를 OEM 계층 모듈에게 요청(S1413)하여 전달받는다(S1415). When the user selects the update, the
모듈 업데이터(349)는 외부 저장 장치에 모듈 바이너리 및 모듈 정보 파일이 모두 존재하는 모듈을 대상으로 모듈 업데이트를 수행한다. 모듈 업데이터(349)는 외부 저장 장치에 저장되어 있는 모듈 정보 파일을 리드하여 모듈 정보 파일을 복사한다(S1417). 즉 모듈 업데이터는 외부 저장 장치에 저장되어 있는 모듈 정보 파일([모듈 아이디].mdf)을 리드하여 EFS 바이너리에 임시 모듈 정보 파일([모듈 아이디].tdf)을 생성한다. The
모듈 업데이터(349)는 모듈 매니저(337)에게 단말에 탑재되어 있는 모듈 버전을 조회(S1419)하여 전달받는다(S1421). The
모듈 업데이터(349)는 단말에 탑재되어 있는 모듈 버전과 외부 저장 장치에 있는 모듈 버전을 비교한다(S1423). 즉 모듈 업데이터는 임시 모듈 정보 파일에 포함된 모듈 버전 정보와 단말에 탑재되어 있는 모듈 버전을 비교하여 단말에 탑재된 버전보다 상위 버전의 모듈이 외부 저장 장치에 저장되어 있는 경우 모듈 업데이트 처리를 하도록 한다. EFS 바이너리와 외부 저장 장치에 저장되어 있는 모듈 버전이 같거나 외부 저장 장치에 하위 버전이 저장되어 있는 경우 업데이트가 불필요하다.The
모듈 업데이터(349)는 업데이트할 모듈크기만큼의 저장공간이 EFS에 있는지 확인한다(S1425). The
모듈 업데이터(349)는 외부 저장 장치로부터 모듈을 복사하여 설치한다(S1427). 즉 모듈 업데이터는 업데이트 대상 모듈에 대해서 버전 복사에 필요한 공간을 확보하고 외부 저장 장치에 저장되어 있는 모듈 바이너리([모듈 아이디].jar)를 리드하여 EFS 바이너리에 임시 모듈 바이너리([모듈 아이디].tmp)를 생성한다. 그리고 임시 모듈 바이너리 파일 생성이 완료되면 바이너리 파일 내의 wrddj, wrddc 파일을 리드하여 임시 모듈 정보 파일([모듈 아이디].tdf)에 쓰기(write)한다. 임시 모듈 정보 파일에 쓰기가 완료되면 임시 모듈 바이너리 파일과 임시 모듈 정보 파일을 리네임(rename)한다. 그리고 사용자에게 설치 완료를 알린다(S1429). The
도 21은 본 발명의 제7 실시예에 따른 모듈 업데이트 과정을 나타낸다. 즉 하위 버전 모듈 위치에 따른 업데이트를 나타낸다.21 illustrates a module update process according to a seventh embodiment of the present invention. In other words, it indicates the update according to the location of the lower version module.
도 21에 보인 바와 같이, 모듈 업데이터(349)는 업데이트가 요청되면 업데이트 대상 모듈의 종류를 체크한다(S1501). 이때, 종류는 업데이트 대상 모듈이 저장된 위치의 종류를 나타낼 수 있다. As shown in FIG. 21, when an update is requested, the
모듈 업데이터(349)는 업데이트 대상 모듈이 EFS 바이너리(301)에 저장된 모듈인 경우(S1503), 저장된 하위 버전의 모듈은 업데이트시 기존 모듈은 삭제한다(S1505). 그리고 다운로드한 상위 버전의 모듈이 저장된다(S1507). 이후 모듈 로딩 시에는 EFS 바이너리(301)에 저장된 상위 버전의 모듈이 로드(S1509)되게 된다.When the module to be updated is the module to be updated in the EFS binary 301 (S1503), the
또한, 모듈 업데이터(349)는 업데이트 대상 모듈이 정적(Static) 모듈인 경우 즉 코드(code) 영역에 정적으로 적재된 모듈인 경우(S1511), 다운로드한 상위 버전의 모듈을 EFS 바이너리(301)에 저장한다(S1513). 이후 모듈 로딩 시 코드 영역에 있는 하위 버전이 아닌 EFS 바이너리(301)에 저장된 업데이트된 버전이 우선적으로 로드되도록 한다(S1509).In addition, when the module to be updated is a static module, that is, a module statically loaded in a code area (S1511), the
또한, 모듈 업데이터(349)는 업데이트 대상 모듈이 신규 모듈인 경우 즉 단말에 탑재되어 있지 않은 모듈을 다운로드 하는 경우(S1515), 신규로 다운로드 한 모듈을 EFS 바이너리(301)에 저장(S1517)하고 모듈 매니저(337)가 신규 모듈에 대해서도 버전 관리 기능을 제공하도록 한다. 이후 모듈 로딩시 EFS 바이너리(301)에 저장된 모듈이 로드(S1509)되게 된다.In addition, when the module to be updated is a new module, that is, when a module that is not mounted on the terminal is downloaded (S1515), the
도 22는 본 발명의 제8 실시예에 따른 모듈 업데이트 과정을 나타낸 흐름도이다. 즉 HAL 모듈 업데이트 과정을 나타낸다. 모듈 업데이터(349)는 개방형 운영체제(Open O/S)를 지원 하는 단말에서는 모바일 플랫폼을 구성하는 각각의 모듈(107)과 같이 HAL 모듈(343)도 업데이트가 가능하도록 지원한다22 is a flowchart illustrating a module update process according to an eighth embodiment of the present invention. That is, the HAL module update process is shown. The
도 22에 보인 바와 같이, 모듈 업데이터(349)는 업데이트 대상 모듈의 모듈 정보 파일 조회(S1601) 후 파일 타입을 체크(S1603)하여 업데이트 대상 모듈이 HAL 모듈(343)인지를 판단한다(S1605). As shown in FIG. 22, the
즉 모듈 정보 파일에 포함된 'Type'의 값이 '10'인 경우, 플랫폼 모듈 업데이트 처리를 한다(S1607). 그러나 'Type'의 값이 '11인' 경우, HAL 모듈(343)의 업데이트 처리를 한다. HAL 모듈(343)의 업데이트 처리 과정은 다음과 같다.That is, when the value of 'Type' included in the module information file is '10', the platform module update process is performed (S1607). However, when the value of 'Type' is '11', the
모듈 업데이터(349)는 S1601 단계에서 HAL 모듈(343)이 업데이트 대상 모듈에 포함되어 모듈 정보 파일(mdf)을 임시 파일 형태로 획득한다. 모듈 정보 파일에 포함되어 있는 정보 중 'Type'이 '11' 값을 가지면 HAL 모듈(343)을 의미하며 플랫폼 모듈과 별도로 업데이트 처리가 된다.The
모듈 업데이터(349)는 'MH_infGetInfo(M_Char *name, MH_InterfaceInfo *pInfo) API'를 사용하여 HAL 모듈(343)로부터 업데이트 대상 모듈 아이디에 해당 하는 HAL 모듈(343)의 모듈 인터페이스 정보를 획득한다(S1609, S1611). 모듈 인터페이스 정보에는 해당 모듈의 버전 정보가 포함되어 있다. The
모듈 업데이터(349)는 단말로부터 조회한 HAL 모듈(343) 인터페이스 정보에 포함된 모듈 버전과 S1601 단계에서 획득한 모듈 정보 파일에 포함된 모듈 버전을 비교(S1613)하여 업데이트 요청 버전이 단말에 탑재된 버전보다 상위인지를 판단한다(S1615). 즉 현재 단말에 있는 HAL 모듈(343)의 버전이 업데이트 할 모듈 버전 보다 하위 버전인 경우에만 업데이트가 이루어지도록 한다. The
S1615 판단 결과 상위 버전이 아닌 경우, HAL 모듈(343)의 업데이트가 불필요한 경우이므로 임시 모듈 정보 파일 즉 업데이트 대상 모듈 정보 파일을 삭제하고 해당 모듈의 업데이트를 종료한다. If it is determined that the S1615 is not the higher version, since the update of the
S1615 판단 결과 상위 버전인 경우, 즉 HAL 모듈(343)의 업데이트가 결정되면 모듈 업데이터(349)는 업데이트 대상 모듈 바이너리를 획득한다(S1617). 즉 업데이터 대상 모듈의 임시 모듈 바이너리를 획득한다. 정상적으로 임시 모듈 바이너리를 획득하면 'MH_infInstall(M_Char *name, M_Char *path') API'를 호출(S1619)하고 HAL 모듈(343)은 상위 버전의 HAL 모듈(343)을 설치(S1621)하고 결과 값을 모듈 업데이터(349)에게 전달한다(S1623).If it is determined that the S1615 is the higher version, that is, if the update of the
모듈 업데이터(349)는 HAL 모듈(343)로부터 정상적으로 HAL 모듈설치 결과를 수신하면 업데이트 대상 모듈 정보 파일 즉 임시 모듈 정보 파일을 삭제한다(S1625). 그리고 'MH_infInstall' 함수의 반환값이 1인 경우 단말을 재부팅한다(S1627).When the
이때, 모듈 업데이트를 위해 상위 버전의 모듈은 임시 파일 형태로 EFS에 저장하고 정상적으로 저장이 완료되면 하위 버전의 모듈을 삭제하고 상위 버전의 모듈을 설치하게 된다. 따라서 모듈 업데이트 시에 EFS 바이너리에 상위 버전 모듈의 크기만큼의 용량이 확보 되어야 한다. 도 23은 메모리 저장 공간이 부족한 경우의 처리 과정을 나타낸다. At this time, the module of the higher version is stored in the EFS in the form of a temporary file to update the module, and when the saving is completed normally, the module of the lower version is deleted and the higher version module is installed. Therefore, at the time of module update, the capacity of the higher version module should be secured in the EFS binary. 23 shows a processing process when the memory storage space is insufficient.
도 23은 본 발명의 제9 실시예에 따른 모듈 업데이트 과정을 나타낸 흐름도이다. 23 is a flowchart illustrating a module update process according to a ninth embodiment of the present invention.
도 23에 보인 바와 같이, 모듈 업데이트 서버(351)로부터 업데이트 대상 모듈 정보를 획득(S1701)하면 모듈 업데이터(349)는 모듈 사이즈를 체크한다(S1703). 그리고 모듈 사이즈만큼의 EFS 바이너리 용량이 확보되는지를 확인한다(S1705). As shown in FIG. 23, when obtaining update target module information from the module update server 351 (S1701), the
EFS 바이너리에 모듈 다운로드 공간이 확보되지 않은 경우, 모듈 업데이터(349)는 사용자에게 컨텐츠를 삭제하여 저장공간을 확보할지 여부를 확인하는 다이얼로그를 출력한다(S1709). If the module download space is not secured in the EFS binary, the
이때, 사용자가 '아니오'를 선택(S1711)한 경우 절차를 종료한다. At this time, if the user selects 'No' (S1711), the procedure ends.
그러나 사용자가 "예"를 선택(S1711)한 경우 모듈 업데이터(349)는 컨텐츠 삭제를 위해 삭제 가능한 어플리케이션 리스트를 출력한다(S1713). However, if the user selects "Yes" (S1711), the
사용자는 어플리케이션 리스트에서 삭제할 어플리케이션을 선택해서 삭제 요청한다(S1715). The user selects an application to delete from the application list and requests deletion (S1715).
모듈 업데이터(349)는 삭제 요청된 어플리케이션 삭제 후 저장 공간 확보 여부를 체크한다(S1717). The
이때, 저장공간이 확보 되지 않은 경우 사용자에게 컨텐츠 삭제 여부 다이얼로그를 다시 출력하여 어플리케이션 삭제 처리를 반복한다(S1709, S1711, S1713, 1715, S1717). At this time, if the storage space is not secured, the application delete process is output again to the user and the application deletion process is repeated (S1709, S1711, S1713, 1715, and S1717).
그러나 저장 공간이 확보된 경우 모듈 다운로드를 계속한다. However, if space is available, module download continues.
또한, S1701 단계에서 EFS 바이너리 용량이 모듈 사이즈보다 크거나 같은 경우 및 어플리케이션 삭제를 통해 저장 공간을 확보한 경우, 모듈 업데이터(349)는 모듈 바이너리를 다운로드(S1719)하여 설치(S1721)함으로써 모듈 업데이트를 수행한다.In addition, when the EFS binary capacity is greater than or equal to the module size in step S1701 and when the storage space is secured through application deletion, the
한편, 모바일 플랫폼이 제공하는 기본적인 API 외에 동적으로 모듈을 추가하거나 갱신할 수 있는 모듈 개발 인터페이스가 정의된다. 모듈은 인터페이스라는 외부와 통신하는 통로를 가진다. 인터페이스란 "함수와, 변수로 이루어진 group에 이름, 버전을 부여하여 관리하는 단위"를 말한다. 인터페이스는 API를 추가/갱신하는데 있어서 기본 단위가 된다. Meanwhile, in addition to the basic API provided by the mobile platform, a module development interface for dynamically adding or updating a module is defined. The module has a passage for communicating with the outside called an interface. An interface is a "unit that assigns a name and version to a group of functions and variables." Interfaces are the basic unit for adding and updating APIs.
도 24는 본 발명의 실시예에 따른 모듈 개발 인터페이스 구성을 나타낸다. 24 illustrates a module development interface configuration according to an embodiment of the present invention.
도 24에 보인 바와 같이, 모듈 개발 인터페이스(401)는 모듈 엔트리 정의 API(403), 모듈 엔트리 리스트 정의 API(405), 모듈 초기화 API(407), 모듈 종료 API(409) 및 모듈 notify API(411)를 포함한다. As shown in FIG. 24, the
모듈 엔트리 정의 API(403)는 출력(Export)할 인터페이스의 엔트리(entry)를 정의한다. 모듈 개발 시 반드시 지정되어야 하는 항목으로서, 엔트리 정의에 필요한 항목은 인터페이스 구조체 포인터, 인터페이스 이름 및 인터페이스 버전(Major, Minor)을 포함한다. The module
모듈 엔트리 리스트 정의 API(405)는 정의한 모듈 엔트리의 리스트를 지정한다. 모듈에는 두 개 이상의 인터페이스 엔트리 정의가 가능하다. The module entry
모듈 초기화 API(407)는 모듈이 로딩될 때 한번 호출되어야 할 함수를 정의한다. 여기서 정의한 함수를 이용하여 모듈 개발자는 모듈이 사용되기 전 필요한 초기화를 수행할 수 있다. 선언되지 않으면, 로딩시 초기화 함수는 불리지 않는다.The
모듈 종료 API(409)는 모듈이 메모리에서 해제될 때 한번 불려져야 될 함수를 정의한다. 여기서 정의한 함수를 이용하여 모듈 개발자는 모듈이 종료되기 전 필요한 조치(예, 리소스 해제)를 할 수 있다. 선언되지 않으면 모듈 언로딩 시 종료 함수는 불리지 않는다.The
모듈 notify API(411)는 모듈을 사용하는 어플리케이션이 구동/종료될 때 모듈에게 어플리케이션이 구동/종료되었음을 알려주는 함수를 정의한다. 여기서 정의한 함수를 이용하여 모듈 개발자는 모듈을 사용하는 어플리케이션이 구동/종료되었을 때 필요한 조치를 할 수 있다. 선언되지 않으면 모듈 notify 함수는 불리지 않는다. The module notify
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다. The embodiments of the present invention described above are not only implemented by the apparatus and method but may be implemented through a program for realizing the function corresponding to the configuration of the embodiment of the present invention or a recording medium on which the program is recorded, The embodiments can be easily implemented by those skilled in the art from the description of the embodiments described above.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.Although the embodiments of the present invention have been described in detail above, the scope of the present invention is not limited thereto, and various modifications and improvements of those skilled in the art using the basic concepts of the present invention defined in the following claims are also provided. It belongs to the scope of rights.
도 1은 종래의 모바일 플랫폼 구조이다.1 is a conventional mobile platform structure.
도 2는 종래 모바일 플랫폼의 바이너리 구조를 나타낸다.2 illustrates a binary structure of a conventional mobile platform.
도 3a는 종래 모바일 플랫폼의 패키지 종류를 나타내고, 도 3b는 패키지 상호 관계를 나타낸다. Figure 3a shows the package type of the conventional mobile platform, Figure 3b shows the package interrelationship.
도 4는 본 발명의 실시예에 따른 모바일 플랫폼의 기능 별로 모듈화된 구조를 나타낸 개념도이다.4 is a conceptual diagram illustrating a modular structure for each function of a mobile platform according to an embodiment of the present invention.
도 5는 본 발명의 실시예에 따른 모바일 플랫폼의 구성도이다. 5 is a block diagram of a mobile platform according to an embodiment of the present invention.
도 6은 본 발명의 실시예에 따른 모듈 관리 및 업데이트를 위한 구성을 나타낸다. 6 shows a configuration for module management and updating according to an embodiment of the present invention.
도 7은 본 발명의 실시예에 따른 모바일 플랫폼 구동 과정을 나타낸 흐름도이다. 7 is a flowchart illustrating a process of driving a mobile platform according to an embodiment of the present invention.
도 8은 본 발명의 실시예에 따른 HAL 인터페이스 제공 과정을 나타낸다.8 illustrates a process of providing a HAL interface according to an embodiment of the present invention.
도 9는 본 발명의 실시예에 따른 모듈 매니저 초기화 과정을 나타낸다. 9 illustrates a module manager initialization process according to an embodiment of the present invention.
도 10은 본 발명의 실시예에 따른 모듈 정보 테이블 갱신 과정을 나타낸다. 10 illustrates a module information table update process according to an embodiment of the present invention.
도 11은 본 발명의 실시예에 따른 모듈 로딩 과정을 나타낸다.11 illustrates a module loading process according to an embodiment of the present invention.
도 12는 본 발명의 실시예에 따른 모듈 언로딩 과정을 나타낸다. 12 illustrates a module unloading process according to an embodiment of the present invention.
도 13은 본 발명의 실시예에 따른 어플리케이션에 의한 Java Class 참조 과정을 나타낸다. 13 illustrates a Java class reference process by an application according to an embodiment of the present invention.
도 14는 본 발명의 실시예에 따른 어플리케이션에 의한 C API 호출 과정을 나타낸다. 14 illustrates a C API call process by an application according to an embodiment of the present invention.
도 15는 본 발명의 제1 실시예에 따른 모듈 업데이트 과정을 나타낸 순서도이다.15 is a flowchart illustrating a module update process according to the first embodiment of the present invention.
도 16은 본 발명의 제2 실시예에 따른 모듈 업데이트 과정을 나타낸 흐름도이다. 16 is a flowchart illustrating a module update process according to a second embodiment of the present invention.
도 17은 본 발명의 제3 실시예에 따른 모듈 업데이트 과정을 나타낸 흐름도이다. 17 is a flowchart illustrating a module update process according to a third embodiment of the present invention.
도 18은 본 발명의 제4 실시예에 따른 모듈 업데이트 과정을 나타낸 흐름도이다. 18 is a flowchart illustrating a module update process according to a fourth embodiment of the present invention.
도 19는 본 발명의 제5 실시예에 따른 모듈 업데이트 과정을 나타낸 흐름도이다. 19 is a flowchart illustrating a module update process according to a fifth embodiment of the present invention.
도 20은 본 발명의 제6 실시예에 따른 모듈 업데이트 과정을 나타낸 흐름도이다. 20 is a flowchart illustrating a module update process according to a sixth embodiment of the present invention.
도 21은 본 발명의 제7 실시예에 따른 모듈 업데이트 과정을 나타낸다. 21 illustrates a module update process according to a seventh embodiment of the present invention.
도 22는 본 발명의 제8 실시예에 따른 모듈 업데이트 과정을 나타낸 흐름도이다. 22 is a flowchart illustrating a module update process according to an eighth embodiment of the present invention.
도 23은 본 발명의 제9 실시예에 따른 모듈 업데이트 과정을 나타낸 흐름도이다. 23 is a flowchart illustrating a module update process according to a ninth embodiment of the present invention.
도 24는 본 발명의 실시예에 따른 모듈 개발 인터페이스 구성을 나타낸다. 24 illustrates a module development interface configuration according to an embodiment of the present invention.
Claims (27)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020090024115A KR101064737B1 (en) | 2009-03-20 | 2009-03-20 | Mobile communication terminal equipped with a mobile platform that is managed and updated in the form of a module, a method for operating the mobile platform, a module management method, and a module update method |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020090024115A KR101064737B1 (en) | 2009-03-20 | 2009-03-20 | Mobile communication terminal equipped with a mobile platform that is managed and updated in the form of a module, a method for operating the mobile platform, a module management method, and a module update method |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| KR20100105210A true KR20100105210A (en) | 2010-09-29 |
| KR101064737B1 KR101064737B1 (en) | 2011-09-16 |
Family
ID=43009375
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020090024115A Active KR101064737B1 (en) | 2009-03-20 | 2009-03-20 | Mobile communication terminal equipped with a mobile platform that is managed and updated in the form of a module, a method for operating the mobile platform, a module management method, and a module update method |
Country Status (1)
| Country | Link |
|---|---|
| KR (1) | KR101064737B1 (en) |
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101224382B1 (en) * | 2011-06-24 | 2013-01-21 | 주식회사 안랩 | Update apparatus and method |
| WO2013066938A1 (en) * | 2011-10-31 | 2013-05-10 | Nokia Corporation | Wireless programming |
| KR101410356B1 (en) * | 2012-01-31 | 2014-07-01 | 이달수 | Template providing system for setting addition functions |
| WO2015174609A1 (en) * | 2014-05-15 | 2015-11-19 | 에스케이플래닛 주식회사 | Method for updating library, and terminal and system therefor |
| US9307347B2 (en) | 2012-06-01 | 2016-04-05 | Nokia Technologies Oy | Wireless programming |
| US9369959B2 (en) | 2011-10-31 | 2016-06-14 | Nokia Technologies Oy | Wirelessly transferring data to a packaged electronic device |
| US11238151B2 (en) | 2018-10-31 | 2022-02-01 | Korea Internet & Security Agency | Method and apparatus for patching binary having vulnerability |
| WO2024128401A1 (en) * | 2022-12-13 | 2024-06-20 | 쿠팡 주식회사 | Electronic device and information provision method thereof |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101629565B1 (en) * | 2014-09-30 | 2016-06-14 | 주식회사 엘지유플러스 | Event Application Control System, Event Management Server and Method, Mobile and Event Practicing Method |
| KR102519132B1 (en) * | 2020-09-18 | 2023-04-07 | 한국전자기술연구원 | System and method for operating self-growing software based on microservice |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101016649B1 (en) * | 2003-11-27 | 2011-02-25 | 주식회사 케이티 | Automatic reinstallation method and system of mobile platform application |
| KR100767785B1 (en) | 2005-06-22 | 2007-10-18 | (주)에이티솔루션 | Application update system for mobile terminal |
| KR20070109310A (en) * | 2006-05-10 | 2007-11-15 | 엘지전자 주식회사 | Mobile communication terminal and memory control method and software module update method |
| KR20080037450A (en) * | 2006-10-26 | 2008-04-30 | 웹싱크 주식회사 | Update system and method of software execution module |
-
2009
- 2009-03-20 KR KR1020090024115A patent/KR101064737B1/en active Active
Cited By (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101224382B1 (en) * | 2011-06-24 | 2013-01-21 | 주식회사 안랩 | Update apparatus and method |
| WO2012177080A3 (en) * | 2011-06-24 | 2013-04-04 | Ahnlab, Inc. | Update apparatus and method |
| WO2013066938A1 (en) * | 2011-10-31 | 2013-05-10 | Nokia Corporation | Wireless programming |
| US9369959B2 (en) | 2011-10-31 | 2016-06-14 | Nokia Technologies Oy | Wirelessly transferring data to a packaged electronic device |
| USRE47394E1 (en) | 2011-10-31 | 2019-05-14 | Wsou Investments, Llc | Wirelessly transferring data to a packaged electronic device |
| KR101410356B1 (en) * | 2012-01-31 | 2014-07-01 | 이달수 | Template providing system for setting addition functions |
| US9307347B2 (en) | 2012-06-01 | 2016-04-05 | Nokia Technologies Oy | Wireless programming |
| WO2015174609A1 (en) * | 2014-05-15 | 2015-11-19 | 에스케이플래닛 주식회사 | Method for updating library, and terminal and system therefor |
| US11238151B2 (en) | 2018-10-31 | 2022-02-01 | Korea Internet & Security Agency | Method and apparatus for patching binary having vulnerability |
| WO2024128401A1 (en) * | 2022-12-13 | 2024-06-20 | 쿠팡 주식회사 | Electronic device and information provision method thereof |
Also Published As
| Publication number | Publication date |
|---|---|
| KR101064737B1 (en) | 2011-09-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR101064737B1 (en) | Mobile communication terminal equipped with a mobile platform that is managed and updated in the form of a module, a method for operating the mobile platform, a module management method, and a module update method | |
| CN106227579B (en) | Docker container construction method and Docker management console | |
| EP3974962A1 (en) | Method, apparatus, electronic device, readable storage medium and program for deploying application | |
| US9779111B2 (en) | Method and system for configuration of virtualized software applications | |
| JP6192534B2 (en) | Virtual application extension point | |
| JP5294892B2 (en) | Image forming apparatus, apparatus, control method, and program | |
| CN101425017B (en) | Installation method and system of updated software for server components | |
| US10810017B2 (en) | Systems and methods for handling firmware driver dependencies in host operating systems while applying updates from bootable image file | |
| US11016785B2 (en) | Method and system for mirror image package preparation and application operation | |
| KR102702525B1 (en) | Method and device for creating a mirror image file, and computer-readable storage medium | |
| EP3267308B1 (en) | Application loading method and device | |
| US20170046151A1 (en) | System and method for adding and storing groups of firmware default settings | |
| US10268628B2 (en) | Method for extracting BIOS attributes for BIOS management and system therefor | |
| US20140237463A1 (en) | Dynamically generate and execute a context-specific patch installation procedure on a computing system | |
| US10216510B2 (en) | Silent upgrade of software with dependencies | |
| US11269676B2 (en) | Managed virtual appliances | |
| US9916149B2 (en) | Information processing apparatus, control method for information processing apparatus, and storage medium of program for executing control method | |
| US11900089B2 (en) | Automatically configuring and deploying a software operator in a distributed computing environment from a package | |
| US20240394030A1 (en) | Deriving a container from a package set | |
| CN114385251A (en) | Operating system booting method, system, terminal and storage medium based on memory | |
| CN116685946A (en) | Reloading of updated shared libraries without stopping application execution | |
| US11340882B2 (en) | Systems and methods for enforcing update policies while applying updates from bootable image file | |
| US20200150945A1 (en) | Systems and methods for support of selective processor microcode updates | |
| US9983862B2 (en) | Systems and methods for download and installation of drivers for unmanaged information handling resources | |
| CN113050962A (en) | Mobile service upgrading method, device and terminal |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A201 | Request for examination | ||
| PA0109 | Patent application |
St.27 status event code: A-0-1-A10-A12-nap-PA0109 |
|
| PA0201 | Request for examination |
St.27 status event code: A-1-2-D10-D11-exm-PA0201 |
|
| N231 | Notification of change of applicant | ||
| PN2301 | Change of applicant |
St.27 status event code: A-3-3-R10-R13-asn-PN2301 St.27 status event code: A-3-3-R10-R11-asn-PN2301 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-3-3-R10-R13-asn-PN2301 St.27 status event code: A-3-3-R10-R11-asn-PN2301 |
|
| PG1501 | Laying open of application |
St.27 status event code: A-1-1-Q10-Q12-nap-PG1501 |
|
| E902 | Notification of reason for refusal | ||
| PE0902 | Notice of grounds for rejection |
St.27 status event code: A-1-2-D10-D21-exm-PE0902 |
|
| P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
| P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
| E701 | Decision to grant or registration of patent right | ||
| PE0701 | Decision of registration |
St.27 status event code: A-1-2-D10-D22-exm-PE0701 |
|
| GRNT | Written decision to grant | ||
| PR0701 | Registration of establishment |
St.27 status event code: A-2-4-F10-F11-exm-PR0701 |
|
| PR1002 | Payment of registration fee |
St.27 status event code: A-2-2-U10-U11-oth-PR1002 Fee payment year number: 1 |
|
| PG1601 | Publication of registration |
St.27 status event code: A-4-4-Q10-Q13-nap-PG1601 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| FPAY | Annual fee payment |
Payment date: 20140901 Year of fee payment: 4 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 4 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 5 |
|
| FPAY | Annual fee payment |
Payment date: 20160901 Year of fee payment: 6 |
|
| P22-X000 | Classification modified |
St.27 status event code: A-4-4-P10-P22-nap-X000 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 6 |
|
| P22-X000 | Classification modified |
St.27 status event code: A-4-4-P10-P22-nap-X000 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 7 |
|
| FPAY | Annual fee payment |
Payment date: 20180903 Year of fee payment: 8 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 8 |
|
| FPAY | Annual fee payment |
Payment date: 20190807 Year of fee payment: 9 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 9 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 10 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 11 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 12 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 13 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 14 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 15 |
|
| U11 | Full renewal or maintenance fee paid |
Free format text: ST27 STATUS EVENT CODE: A-4-4-U10-U11-OTH-PR1001 (AS PROVIDED BY THE NATIONAL OFFICE) Year of fee payment: 15 |