KR20090004715A - 분할 압축 기반 무선 펌웨어 업그레이드 방법 및 시스템 - Google Patents

분할 압축 기반 무선 펌웨어 업그레이드 방법 및 시스템 Download PDF

Info

Publication number
KR20090004715A
KR20090004715A KR1020080064440A KR20080064440A KR20090004715A KR 20090004715 A KR20090004715 A KR 20090004715A KR 1020080064440 A KR1020080064440 A KR 1020080064440A KR 20080064440 A KR20080064440 A KR 20080064440A KR 20090004715 A KR20090004715 A KR 20090004715A
Authority
KR
South Korea
Prior art keywords
component
mobile device
memory
image
object file
Prior art date
Application number
KR1020080064440A
Other languages
English (en)
Inventor
수드히르 쿠마 페디레디
바니 부다티
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/773,918 external-priority patent/US20080117991A1/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20090004715A publication Critical patent/KR20090004715A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 모바일 장치에서 사용하기 위한 이미지 제공 방법에 있어서, 모바일 장치에서 사용하기 위한 적어도 하나 이상의 코드와 적어도 하나 이상의 데이터를 포함하는 오브젝트 파일을 선택하는 과정과, 오브젝트 파일로부터 구성요소(components)를 생성하는 과정과, 선택된 구성요소가 논리 블록보다 더 큰지 결정하는 과정과, 선택된 구성요소가 논리 블록보다 더 큰지에 대한 결정의 응답에 따라 선택된 구성요소를 모듈로 분할하는 과정과, 적어도 하나 이상의 구성요소와 모듈을 위해 특정 어드레스를 확립하는 과정과, 각 특정 어드레스를 포함하는 업데이트된 메모리 배치(layout)를 생성하는 과정을 포함한다.
모바일 장치, 구성요소, FOTA, 분할 압축

Description

분할 압축 기반 무선 펌웨어 업그레이드 방법 및 시스템{METHOD AND SYSTEM FOR PARTITIONING COMPRESSION-BASED FIRMWARE OVER THE AIR}
본 발명은 모바일 장치에 관한 것으로서, 특히 모바일 장치에서 무선으로 펌웨어를 업그레이드하기 위한 방법 및 시스템에 관한 것이다.
모바일 장치는 메모리에 저장된 실행 가능한 명령어와 실행 불가능한 데이터 형태의 소프트웨어를 포함한다. 예를 들면 소프트웨어는 무선 네트워크를 통한 통신, 호 대기 및 호 발신과 같은 호 핸들링, 주소록과 일정 관리와 같은 다양한 기능들을 수행하기 위한 능력을 모바일 장치로 제공한다.
그러나, 사용자가 한번 모바일 장치를 가지면 부가적인 소프트웨어를 제공하거나 모바일 장치에 이미 설치된 소프트웨어를 수정하기는 어렵다. 이 문제를 해결하기 위해 무선 네트워크를 통해 모바일 장치의 소프트웨어 업데이트를 제공하는 서비스를 가능하게 하는 무선 펌웨어 업그레이드(FOTA: Firmware Over The Air)가 개발되었다. 그러한 업데이트는 모바일 장치에 이미 존재하는 소프트웨어에 부가적인 기능을 제공할 수 있으며, 기존의 소프트웨어의 버그 픽스(bug fix)를 제공할 수 있다. 그러나, 현재 FOTA와 같은 업데이트 동작을 사용하는 모바일 장치에 소프 트웨어를 전송하는 방법은 문제점이 있다.
본 발명은 모바일 장치에서 무선 펌웨어 업그레이드를 위한 이미지 제공 방법과 이미지 업데이트 방법 및 이미지 제공 시스템을 제공하고자 한다.
이를 달성하기 위한 본 발명의 일 형태에 따르면, 모바일 장치에서 사용하기 위한 이미지 제공 방법에 있어서, 상기 모바일 장치에서 사용하기 위한 적어도 하나 이상의 코드와 적어도 하나 이상의 데이터를 포함하는 오브젝트 파일을 선택하는 과정과, 상기 오브젝트 파일로부터 구성요소(components)를 생성하는 과정과, 상기 선택된 구성요소가 논리 블록보다 더 큰지 결정하는 과정과, 상기 선택된 구성요소가 논리 블록보다 더 큰지에 대한 결정의 응답에 따라 상기 선택된 구성요소를 모듈로 분할하는 과정과, 적어도 하나 이상의 상기 구성요소와 상기 모듈을 위해 특정 어드레스를 확립하는 과정과, 각 특정 어드레스를 포함하는 업데이트된 메모리 배치(layout)를 생성하는 과정을 포함함을 특징으로 한다.
본 발명의 다른 형태에 따르면, 모바일 장치에서 사용하기 위한 이미지 제공을 위한 시스템에 있어서, 모바일 장치에서 사용하기 위해 적어도 하나 이상의 코드와 적어도 하나 이상의 데이터를 포함하는 오브젝트 파일을 선택하며, 상기 오브젝트 파일로부터 구성요소를 생성하며, 선택된 하나의 상기 구성요소가 논리 블록보다 더 큰지 결정하며, 상기 선택된 구성요소가 상기 논리 블록보다 더 큰지에 대한 결정에 따라 선택된 구성요소를 모듈로 분할하는 이미지 생성 시스템과, 적어 도 하나 이상의 구성요소와 상기 선택된 구성요소의 모듈을 위한 특정 주소를 확립하며, 상기 특정 주소를 포함하는 메모리 배치(layout)를 생성하며, 메모리를 제공하기 위해 특정 주소에 대응되는 곳에 구성요소와 모듈을 로드하는 FOTA(firmware-over-the-air) 엔진을 포함하는 모바일 장치를 포함함을 특징으로 한다.
본 발명의 또 다른 형태에 따르면, 모바일 장치에서 사용하기 위한 이미지 업데이트 방법에 있어서, 상기 모바일 장치에서 사용하기 위한 적어도 하나 이상의 코드와 적어도 하나 이상의 데이터를 포함하는 오브젝트 파일을 선택하는 과정과, 상기 오브젝트 파일로부터 구성요소(components)를 생성하는 과정과, 상기 선택된 구성요소가 오리지널 오브젝트 파일에 기반한 메모리 배치(layout)에서 할당된 메모리 공간보다 더 큰지 결정하는 과정과, 상기 선택된 구성요소가 상기 할당된 메모리 공간보다 더 큰지에 대한 결정에 따라 선택된 구성요소를 모듈로 분할하는 과정과, 상기 오브젝트 파일과 오리지널 오프젝트 파일 간의 델타(delta)를 생성하는 과정과, 상기 델타와 오리지널 구성요소로부터 업데이트 된 구성요소와 업데이트 된 모듈 중 적어도 하나를 생성하는 과정과, 각 업데이트 된 구성요소와 각 업데이트 된 모듈을 위해 특정 어드레스를 확립하는 과정과, 각 특정 어드레스를 포함하는 업데이트된 메모리 배치를 생성하는 과정과, 업데이트된 이미지를 제공하기 위해 각 업데이트된 구성요소와 각 업데이트된 모듈을 그것에 대응되는 특정 주소에 로드하는 과정을 포함함을 특징으로 한다.
본 발명은 압축된 구성요소(compressed component)가 모바일 장치에 FOTA를 위해 제공되기 위해 생성된 경우, 압축된 구성요소를 더 작은 모듈(modules)로 분할하여 더 적은 읽기와 더 적은 쓰기를 수행하여 모바일 장치의 사용자에게 더 적은 FOTA 업데이트 시간과 더 빠른 엑세스(access)를 제공할 수 있으며, 새롭게 압축된 구성요소를 모듈로 분할하여 새롭게 압축된 구성요소 전부를 FOTA를 위해 전송하는데 비해, 오직 새롭게 압축된 구성요소에서 이전에 압축된 구성요소와 차이가 있는 부분만을 모바일 장치로 전송하여, FOTA의 업데이트 시간을 줄일 수 있는 효과가 있다.
이하 첨부된 도면을 참조하여 본 발명을 구성하는 장치 및 동작 방법을 본 발명의 실시 예를 참조하여 상세히 설명한다. 하기 설명에서는 구체적인 구성 소자 등과 같은 특정 사항들이 나타나고 있는데 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐 이러한 특정 사항들이 본 발명의 범위 내에서 소정의 변형이나 혹은 변경이 이루어질 수 있음은 이 기술분야에서 통상의 지식을 가진 자에게는 자명하다 할 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다.
무선 펌웨어 업그레이드(FOTA: Firmware Over The Air, 이하 FOTA라고 표시한다) 방법 및 시스템은 모바일 장치에서 사용하기 위한 압축된 이미지(image)를 제공한다. 본 발명의 실시 예에서는, 압축된 구성요소(compressed component)가 모바일 장치에 FOTA를 제공하기 위해 생성된 경우, 압축된 구성요소의 크기는 일반적 으로 플래쉬 메모리에 기록될 수 있는 최소한의 메모리 양인 논리 블록(logical block)의 크기와 비교된다. 왜냐하면 각 논리 블록보다 큰 압축된 구성요소는 저장되기 위한 복수의 쓰기(write)와 회수(retrieve)하기 위한 복수의 읽기(read)가 필요하기 때문이다. 본 발명은 본 발명의 특징에 따라 그러한 압축된 구성요소를 더 작은 모듈(modules)로 분할한다. 더 적은 읽기와 더 적은 쓰기는 모바일 장치의 사용자에게 더 짧은 FOTA 업데이트 시간과 압축된 구성요소와 모듈의 빠른 엑세스(access)를 제공한다. 압축된 구성요소와 모듈은 각각 특정 주소에 로드되고 압축 헤더는 각각의 특정 주소를 포함하여 생성된다. 상기 압축 헤더는 모바일 장치에 의해 압축된 구성요소나 모듈을 위치(locate)하고, 회수(retrieve)하고, 압축해제(decompress)하고, 실행(execute)하기 위해 참조하여 사용될 수 있다.
본 발명의 다른 실시 예에 따르면, 새롭게 압축된 구성요소의 크기는 압축 헤더에 명기된 이전에 압축된 구성요소를 위해 할당된 메모리 배치(layout)에 비교된다. 만약 새롭게 압축된 구성요소가 할당된 메모리 공간에 비해 너무 크면, 전체 압축된 구성요소를 다른 곳에 저장하고 할당된 메모리 공간은 사용하지 않는다. 그대신 새롭게 압축된 구성요소는 모듈들로 분할된다. 적어도 하나 이상의 모듈은 이전에 압축된 구성요소를 위해 할당된 메모리 공간에 저장될 수 있다. 본 발명은 새롭게 압축된 구성요소 전부를 FOTA 전송하는데 드는 상당한 시간을 소비하는 대신, 오직 새롭게 압축된 구성요소에서 이전에 압축된 구성요소와 차이가 있는 부분만을 모바일 장치로 FOTA를 위해 전송하여, 그로 인해 FOTA의 업데이트 시간을 줄인다. FOTA의 업데이트된 모듈은 모바일 장치로 전송된 이전에 압축된 구성요소와 이전에 압축된 구성요소에서 변경된 부분을 바탕으로 모바일 장치에서 생성된다. 상기 업데이트된 모듈은 이전에 압축된 구성요소를 위해 할당된 메모리 공간이 될 수 있는 몇몇의 특정 주소에 로드된다. 압축 헤더는 특정 주소를 포함하여 생성된다. 압축 헤더는 모바일 장치에 의해 압축된 구성요소 또는 모듈을 위치하고, 회수하고, 압축해제하고 실행하는데 참조하여 사용될 수 있다.
도 1은 본 발명의 실시 예에 따른 모바일 장치에서 사용하기 위한 이미지 제공 시스템의 블록 구성도이다. 이미지 제공 시스템(100)은 모바일 장치(102, 하기의 도 7-9에 상세히 설명)와, 이미지 생성 시스템(104)과, 모바일 장치(102)와 이미지 생성 시스템(104) 간의 통신을 수행하는 통신 네트워크(106)를 포함한다. 상기 이미지 제공 시스템(100)은 본 발명의 실시 예를 설명하기 위해 오직 하나의 모바일 장치와 하나의 이미지 생성 시스템과 하나의 통신 네트워크를 도시하지만, 이미지 제공 시스템(100)은 복수의 모바일 장치와 이미지 생성 시스템과 통신 네트워크를 포함할 수 있다.
통신 네트워크(106)는 무선 통신 네크워크, 공중 전화망(PSTN: Public Switched Telephone Network), 인터넷 또는 다른 네트워크나 그들의 조합일 수 있다. 통신 네트워크(106)는 중앙 집중형 네트워크와 애드 훅(ad hoc) 네트워크, CDMA(Code Division Multiple Access), GSM(Global System for Mobile communication), 직교주파수분할다중(OFDM: Orthogonal Frequency Division Multiplexing) 또는 유사한 통신 기술을 포함한 네트워크가 될 수 있다. 본 발명의 실시 예에서 통신 네트워크(106)는 패킷 기반 네트워크이지만 어떠한 전송 타입에 도 적용될 수 있다.
이미지 생성 시스템(104)(하기의 도 10에 상세히 도시함)은 실행 가능한 명령어 및/또는 데이터를 포함한 이미지를 제공하기 위한 기능을 제공한다. 상기 이미지는 통신 네트워크(106)를 통해 모바일 장치(102)로 전달된다. 모바일 장치(102)는 사용자에게 제공하는 기능에 이미지를 사용할 수 있고, 통신 네트워크(106)를 통해 다른 장치들과 통신한다. 상기 이미지는 다양한 기능과 데이터의 조합을 포함할 수 있다. 이미지 생성 시스템은 추가적인 기능과 버그 픽스를 위해이미지를 업데이트할 수 있다.
모바일 장치(102)는 통신 네트워크(106)와 통신하기 위한 무선 통신 시스템(108)을 포함한다. 모바일 장치(102)는 또한 DSP(Digital signal processor, 110)와, 메모리(112)와, 모바일 장치(102)에서 사용하기 위한 이미지를 제공하는데 사용되는 모바일 FOTA 엔진(114)을 포함한다. 이미지 생성 시스템(104)은 모바일 장치(102)로 전송하는 바이너리 이미지를 준비하기 위해 시스템 FOTA 엔진(116)을 사용할 수 있다. 이미지 생성 시스템(104)은 오브젝트 파일을 선택하고, 몇몇 오브젝트 파일을 모듈로 분할하고, 오브젝트 파일과 어떤 모듈로부터 구성요소를 생성하고, 모바일 장치로 구성요소와 어떤 모듈을 전송하는데 시스템 FOTA 엔진(116)을 사용할 수 있다. 모바일 장치(102)는 이미지의 명령을 실행하기 위해 DSP(110)를 사용할 수 있다. 모바일 장치(102)는 셀룰러 폰, PDA(Personal Digital Assistants), 랩톱 컴퓨터를 포함한 장치일 수 있다. 운영 체제는 DSP(110)에 의해 모바일 장치(102)를 제어하고 모바일 장치(102)의 사용자가 다양한 기능에 접속하 고 사용할 수 있도록 사용자 인터페이스를 제공한다.
비록 모바일 장치(102) 내의 모든 명령과 데이터가 바이너리 이미지(118)에 포함될 수는 없지만, 모바일 장치(102)의 메모리(112)는 모바일 장치(102) 내에 포함된 실행 가능한 명령과 데이터의 바이너리 이미지(118)를 포함한다. 본 발명의 실시 예에서 바이너리 이미지(118)는 이전에 모바일 장치(102)에 전송되기 위해 생성된 고정된(static) 관계에서의 명령과 데이터를 포함한 단일(monolithic) 이미지이다. 바이너리 이미지(118)는 오브젝트 파일(120)을 기반으로 이미지 생성 시스템(104)에 의해 초기 생성된다. "파일"이란 단어는 문서 파일, 스크립트 파일, 또는 소스에서의 코드, 어셈블리, 또는 다른 코딩이나 언어를 포함하는 객체의 어떤 타입을 표현할 수 있다. 소프트웨어 프로그램은 일반적으로 고 레벨 언어를 사용하여 작성되고(즉, 소스 코드), 파일로 저장되는 기계가 읽을 수 있는 언어로 변환된다(즉, 오브젝트 코드). 이미지 생성 시스템(104)은 다양한 코드의 조각들 사이의 유사성을 식별하기 위해 오브젝트 파일(120)에서 기계 언어 코드를 검사한다. 그리고 다른 지시가 없는 한, 이 유사성에 기반하여 구성요소를 생성한다. 구성요소는 단일 모듈이나 모듈들의 집합을 포함할 수 있다. 모듈은 이동가능한(relocatable) 오브젝트 파일일 수 있는 구성요소의 한 부분이 될 수 있다. 상기 구성요소는 모바일 장치(102)에서 주소록과 같은 특별한 기능을 구동하기 위한 명령이 될 수 있다.
상기 모바일 FOTA 엔진(114)은 이미지 생성 시스템(104)으로부터 수신한 바이너리 이미지(118)의 압축을 돕는 압축된 구성요소를 포함할 수 있다. 이미지 생성 시스템(104)은 모바일 FOTA 엔진(114)이 모바일 장치(102)에 바이너리 이미 지(118)를 저장하기에 필요한 메모리(112)의 양을 최소화하는 것을 가능하게 한다. 왜냐하면 모바일 장치(102)의 사용자는 음성 메시지, 문자 메시지, 사진, 이메일 그리고 메모리(112) 내에 접촉된 데이터를 저장할 수 있고, 바이너리 이미지(118)를 저장하기 위해 필요한 메모리의 양을 최소화하는 것은 사용자를 위해 더 많은 이용가능한 메모리를 제공한다.
바이너리 이미지(118)의 사용자는 모바일 장치(102)를 업데이트할 때 많은 문제를 만든다. 그 문제는 종종 모바일 장치(102)에 존재하는 바이너리 이미지(118)가 새로운 이미지가 되기 위해 업데이트될 때 발생하는 이미지 업데이트를 막는다. 이미지 업데이트가 발생할 때, 모바일 장치(102)의 바이너리 이미지(118)와 모바일 장치(102)로 전송된 새로운 이미지 간의 차이점은 두 이미지 사이의 이미지 델타(예를 들어 변화의 양)와 같은 것으로 조회된다. 그러한 문제의 예는 하기의 도 2와 도 4에 관련하여 논의된다.
도 2는 본 발명의 일 실시 예에 따른 바이너리 이미지(118)를 포함하는 메모리 블록을 도시한다. 도 2의 (a)를 참조하면, 바이너리 이미지(118)는 베이스 펌웨어(202)에 저장되며, 폰 구성요소(204), 웹 브라우저 구성요소(206), 미디어 플레이어 구성요소(208)를 포함한다. 상기 폰 구성요소(204), 웹 브라우저 구성요소(206), 미디어 플레이어 구성요소(208)는 오직 설명을 위한 예이다. 바이너리 이미지(118)는 바이너리 구성요소의 어떤 타입으로도 구성될 수 있다. 예를 들어 바이너리 이미지는 또한 주소록, 메시지, 달력, 게임을 위한 구성요소 및 그 결합이 될 수 있다. 상기 베이스 펌웨어(202)는 이미지 생성 시스템(104)에서 개발된다. 상기 구성요소(204, 206, 208)들은 오직 어떤 조합이나 명령과 데이터의 조직과 같은 것에 대한 설명을 위한 목적으로 도시된다. 도시된 바와 같이 바이너리 이미지(118)의 각 구성요소(204, 206, 208)들은 다음 구성요소에 인접한다.
도 2의 (b)에서 바이너리 이미지(118)는 플래쉬 메모리(210)에 저장되며, 폰 구성요소(204)와, 웹 브라우저 구성요소(206)과, 미디어 플레이어 구성요소(208)과 모바일 장치 이용 가능 메모리(212)를 포함한다. 상기 모바일 장치 이용 가능 메모리(212)는 차후의 바이너리 이미지(118)의 구성요소(204, 206, 208)의 확장을 위해 플래쉬 메모리(210)에 예약된다. 도 2의 (b)에서 구성요소(204, 206, 208)는 도 2의 (a)의 구성요소 (204, 206, 208)보다 더 작다. 왜냐하면 플래쉬 메모리(210)의 모바일 FOTA 엔진(114) 압축 구성요소는 모바일 장치(102)에 바이너리 이미지(118)를 저장하는데 필요한 메모리의 양을 최소화되기 때문이다.
바이너리 이미지(118)는 명령과 데이터의 고정된 바이너리 표현이기 때문에, 바이너리 이미지(118)가 플래쉬 메모리(210)에 한번 저장되면 각 구성요소(204, 206, 208)의 위치는 고정적이다. 각 위치의 고정된 성질은 바이너리 이미지(118)의 업데이트를 어렵게 만든다. 왜냐하면 만약 미디어 플레이어 구성요소(208)보다 다른 어떤 구성요소가 넓으면, 업데이트되는 부분에 인접하여 저장될 수 있는 사용가능한 메모리가 없기 때문이다.
예를 들면, 폰 구성요소(204)는 바이너리 이미지(118)가 제공될 때 고정된 위치에 관련된다. 그러나 바이너리 이미지(118)의 업데이트로 인해 웹 브라우저 구성요소(206)가 저장된 시작 위치와 겹쳐지도록 폰 구성요소(204)가 이전의 위치를 넘어 확장될 수 있다. 웹 브라우저 구성요소(206) 위에 확장된 폰 구성요소(204)의 겹쳐진 부분으로 인해 웹 브라우저 구성요소(206)에 오류가 발생할 수 있다. 웹 브라우저 구성요소(206)에 의해 점유된 위치에서 폰 구성 요소(204)의 확장은 웹 브라우저 구성요소(206)가 확장된 폰 구성요소(204)의 마지막 위치를 넘는 새로운 위치에 그것이 완전히 다시 쓰여지는 것이 필요하다. 그러나, 웹 브라우저 구성요소(206)의 시작 위치의 쉬프팅은 미디어 플레이어 구성요소(208)에 의해 점유된 위치의 웹 브라우저 구성요소(206)의 종료 위치의 쉬프팅이 필요하다. 그러므로 폰 구성요소(204)의 확장은 웹 브라우저 구성요소(206)의 쉬프팅 뿐만 아니라 미디어 플레이어 구성요소(208)의 쉬프팅, 폰 구성요소(204)에 인접하게 저장되는 플래쉬 메모리(210) 내의 모든 다른 구성요소가 쉬프팅되는 결과가 벌어질 수 있다. 따라서 바이너리 이미지(118) 전체를 변경하여 전달하는 이러한 문제는 업데이트를 수행하는 동안 모바일 장치(102)의 운영에서 심각한 문제가 될 수 있다.
도 2의 (c)에서 바이너리 이미지(118)는 플래쉬 메모리(210)에 저장되며, 폰 구성요소(204)와, 웹 브라우져 구성요소(206)와, 미디어 플레이어 구성요소(208)와 폰 이용가능 메모리(218)와, 웹 브라우저 이용가능 메모리(216)와 미디어 플레이어 이용가능 메모리(218)를 포함한다. 플래쉬 메모리(210)에 로드되었을 때, 바이너리 이미지(118)는 다수의 부분으로 나눠진다(예를 들어 구성요소(204), 구성요소(206), 구성요소(208)). 그리고 각 부분은 이용 가능한 메모리의 블록에 할당된다(예를 들어 이용가능한 메모리(214), (216), (218)). 예를 들면, 폰 구성요소(204)에 폰 이용가능 메모리(214)가 있다. 도 2의 (b)로부터 모바일 장치 이용 가능 메모리(212)는 폰 이용가능 메모리(214), 웹 브라우저 이용가능 메모리(216), 미디어 플레이어 이용가능 메모리(218)의 세 개의 유사한 메모리 부분으로 나누어진다. 이용가능 메모리 부분은 전체 바이너리 이미지(118)를 다시 쓰는 것이 필요없이 구성요소(204, 206, 208)의 일부 확장을 위해 허락된다.
이러한 구성요소 사이에 이용가능한 메모리를 놓는 방법은 어떤 상황에서는 적당하나, 업데이트가 구성요소를 위해 예약된 것보다 더 많은 이용가능한 메모리가 필요할 때와 같은 다른 상황에서는 모든 전달된 문제를 반드시 해결하지 못한다. 예를 들면 오직 바이너리 이미지(118)의 작은 양이 업데이트 되었을 때조차 플래쉬 메모리(210)에서 거의 전체의 바이너리 이미지(118)를 다시 쓰게 되는 업데이트와 버그픽스로 인해, 몇몇 이용가능한 메모리가 비교적 빨리 오버플로우 될 수 있다. 종종 바이너리 이미지(118)에 의해 소프트웨어를 표현하기 위한 적은 이용가능한 유연성이 있을 수 있다. 바이너리 이미지(118)는 이미지 생성 시스템(104)을 이용하여 모바일 장치(102)의 외부에서 생성되고, 바이너리 이미지(118)가 완료될 때 모바일 장치(102)로 전송된다. 상대적으로 간단한 모바일 장치(102)의 운영 시스템과 바이너리 이미지(118)의 사용 때문에, 기능의 추가 및 버그 픽스와 같은 업데이트는 전체 바이너리 이미지(118)가 수정되어 모바일 장치(102)로 전송되는 것이 필요할 수 있다. 이것은 종종 많은 이유로 실행하기 힘들다. 그것은 시간기간의 길이를 위한 고객의 대역폭을 사용하기에 비실용적일 뿐만 아니라, 정부의 규칙은 업데이트에서 취할 수 있는 시간의 양을 제한할 수 있다. 예를 들면, 정부에서 명령된 911 제한에서 업데이트는 5분 이상 소요되지 않아야 할 필요가 있다. 그래서 기존의 모바일 장치(102)의 바이너리 이미지(118)의 큰 부분의 업데이트는 종종 실행할 수 없다.
본 발명의 실시 예에 따른 방법은 플래쉬 메모리(210)의 오직 하나의 논리 블록에 적합한 더 작은 모듈들로 분할된 구성요소에 의한 이 업데이트 문제를 해결한다. 만약 모바일 FOTA 엔진(114)이 하나의 논리 블록보다 큰 크기로 폰 구성요소(204)를 압축하면, 폰 구성요소(204)는 하나 이상의 논리 블록에 저장되어야 한다. 하나 이상의 논리 블록에 폰 구성요소(204)를 저장하는 것은 만약 폰 구성요소(204)의 작은 부분조차 이어서 수정되었으면, 폰 구성요소(204)가 저장된 복수의 논리 블록 각각이 업데이트되는 것을 의미한다. 복수의 논리 블록의 업데이트는 하나의 논리 블록의 업데이트보다 더 많은 업데이트 시간이 필요하고 더 많은 처리되는 자원을 소모한다.
그러므로, 하나의 논리 블록보다 더 큰 크기로 압축된 구성요소는 하나의 논리 블록보다 더 작은 모듈로 분할될 수 있다. 예를 들면, 모바일 FOTA 엔진(114)이 플래쉬 메모리(210)를 위해 폰 구성요소(204)를 압축할 때, 폰 구성요소(204)는 16K, 또는 하나의 논리 블록보다 더 크다. 그러므로 폰 구성요소(204)는 도 2의 (a)에 도시된 폰 코드 모듈(220)과 폰 데이터 모듈(222)과 같은 모듈로 분할된다. 상기 폰 코드 모듈(220)과 상기 폰 데이터 모듈(222)은 폰 구성요소(204)가 다른 모듈들로 분할될 수 있고, 다른 어떤 구성요소도 모듈들로 분할될 수 있음을 보여주기 위한 예로서 도시된 것이다.
도 2의 (d)를 참조하면, 바이너리 이미지(118)는 플래쉬 메모리(210)에 저 장되며, 웹 브라우저 구성요소(206)와 미디어 플레이어 구성요소(208)와, 웹 브라우저 이용가능 메모리(216)와, 미디어 플레이어 이용가능 메모리(218)와 폰 코드 모듈(220)과 폰 데이터 모듈(222)과 코드 이용가능 메모리(224)와 데이터 이용가능 메모리(226)를 포함한다. 폰 코드 모듈(22)과 코드 이용가능 메모리(224)는 폰 구성요소(204)보다 더 작기 때문에, 폰 코드 모듈(22)과 코드 이용가능 메모리(224)는 모두 오직 하나의 논리 블록에 쓰여 질 수 있다. 마찬가지로, 폰 데이터 모듈(222)과 데이터 이용가능 메모리(226)는 폰 구성요소(204)보다 더 작기 때문에, 폰 데이터 모듈(222)과 데이터 이용가능 메모리(226)는 모두 오직 하나의 논리 블록에 쓰여 질 수 있다. 오직 폰 코드 모듈(22)에 영향을 미치는 폰 구성요소(204)에 대한 이후의 어떤 변경에는 오직 폰 코드 모듈(220)에 저장된 플래쉬 메모리(210)의 논리 블록의 업데이트만 필요하고, 폰 데이터 모듈(222)에 저장된 플래쉬 메모리(210)의 논리 블록의 업데이트는 필요하지 않다. 플래쉬 메모리(210)의 더 적은 논리 블록의 업데이트에는 더 적은 업데이트 시간이 필요하고 더 적은 자원의 처리가 소요된다.
메모리 배치(memory layout)는 각 구성요소와 각 모듈을 위해 특정 주소에 각각 대응되도록 정의되어 생성된다. 예를 들면, 베이스 펌웨어(202)에서 폰 코드 모듈(220)은 베이스 어드레스 228에서 베이스 어드레스 230 사이에 저장되고, 폰 데이터 모듈(222)은 베이스 어드레스 230에서 베이스 어드레스 232 사이에 저장된다. 마찬가지로 웹 브라우저 구성요소(206)는 베이스 어드레스 232에서 베이스 어드레스 234 사이에 저장되고 미디어 구성요소(208)는 베이스 어드레스 234에서 베 이스 어드레스 236 사이에 저장된다. 폰 코드 모듈(220)은 베이스 어드레스 228에서 베이스 어드레스 230까지 저장되기 때문에 폰 코드 모듈(220)의 길이는 238이다. 마찬가지로 폰 데이터 모듈(222)의 길이는 240이고, 웹 브라우저 구성요소(206)의 길이는 242이고, 미디어 플레이어 구성요소(208)의 길이는 244이다. 또 다른 예에서, 폰 코드 모듈(220)은 플래쉬 어드레스 248의 플래쉬 메모리(210)의 길이 246에 할당되고, 폰 데이터 모듈(222)은 플래쉬 어드레스 252의 플래쉬 메모리(210)의 길이 250에 할당되고, 웹 브라우저 구성요소(206)는 플래쉬 어드레스 256의 플래쉬 메모리(210)의 길이 254에 할당되고, 미디어 플레이어 구성요소(208)는 플래쉬 어드레스 260의 플래쉬 메모리(210)의 길이 258에 할당된다.
도 3은 본 발명의 실시 예에 따른 압축 헤더의 블록 구성도이다. 모바일 FOTA 엔진(114)이 플래쉬 메모리(210)를 위해 바이너리 이미지(118)를 압축할 때, 모바일 FOTA 엔진(114)은 메모리 배치의 기능으로 압축 헤더(302)를 생성한다. 상기 압축 헤더(302)는 각 구성요소와 각 모듈을 특정 주소들에 각각 대응되도록 정의한다. 모바일 FOTA 엔진(114)은 각 구성요소를 압축하고 플래쉬 메모리(210)에 각 구성요소를 로드한다. 압축 헤더(302)는 베이스 펌웨어(202)로부터 구성요소를 식별하기 위한 데이터와 플래쉬 메모리(210)에 로드된 각 구성요소를 식별하기 위한 데이터를 포함한다. 상기 압축 헤더(320)는 구성요소/모듈(304) 칼럼과, 베이스 어드레스(306) 칼럼과, 베이스 길이(308) 칼럼과, 플래쉬 어드레스(310) 칼럼과, 플래쉬 길이(312) 칼럼을 포함한다. 예를 들면, 폰 코드 모듈(220)은 베이스 펌웨어(202)에서 베이스 어드레스 228, 길이 238과 플래쉬 어드레스 248의 플래쉬 메모 리(210)에 할당된 길이 246과 함께 압축 헤더(302)의 목록에 오른다. 어떤 구성요소나 모듈은 상기 구성요소나 모듈에 대응되는 베이스 어드레스(306)를 참조하여 베이스 펌웨어(202)에 위치할 수 있다. 또한 어떤 구성요소나 모듈은 베이스 어드레스(306)에 대응되고 상기 구성요소나 모듈을 위한 베이스 길이(308)에 대응되는 참조에 의해 베이스 펌웨어(202)로부터 그 전체로 회수(retrieve)될 수 있다. 마찬가지로, 어떤 구성요소나 모듈은 구성요소나 모듈을 위한 플래쉬 어드레스(310)에 대응되는 참조에 의해 플래쉬 메모리(210)에 위치할 수 있다. 동일하게 어떤 구성요소나 모듈을 위해 할당된 플래쉬 메모리(210)의 양은 상기 구성요소나 모듈을 위한 베이스 길이(308)에 대응되는 참조에 의해 결정될 수 있다.
상기 압축 헤더(302)의 각 칼럼(304-312)들은 예로서 도시된 것으로서, 압축 헤더(302)는 다양한 숫자나 타입의 칼럼을 포함할 수 있다. 비록 압축 헤더의 목록에 있는 모듈과 구성요소가 베이스 펌웨어에 저장된 모듈과 구성요소와 같은 순서 및 플래쉬 메모리(210)에 저장된 모듈과 구성요소와 같은 순서로 목록에 있어도, 압축 헤더(302)의 사용은 모듈과 구성요소가 어떤 순서에 의해 저장될 수 있도록 유연성을 제공한다. 이 유연성은 도 4에 도시된 바와 같이 구성요소와 모듈의 더 효율적인 저장을 가능하게 한다.
도 4는 본 발명의 다른 실시 예에 따른 이미지를 포함하는 메모리 블록의 블록 구성도이다. 도 4의 (a)를 참조하면 바이너리 이미지(118)는 오리지널 베이스 펌웨어(402)에 저장되며, 폰 구성요소(204)와, 웹 브라우저 구성요소(206)와, 미디어 플레이어 구성요소(208)를 포함한다. 상기 오리지널 베이스 펌웨어(202)는 이미 지 생성 시스템(104)에서 개발된다. 구성요소(204, 206, 208)들은 설명을 위한 목적으로 도시된 것으로서 명령과 데이터의 결합이나 조합으로서 제공될 수 있다. 각 구성요소(204, 206, 208)들은 도시된 바와 같이 다음 구성요소에 인접한다.
도 4의 (b)를 참조하면, 바이너리 이미지(118)는 베이스 펌웨어(202)에 저장되며, 폰 구성요소(204)와, 웹 브라우저 구성요소(206)와, 미디어 플레이어 구성요소(208)과 폰 델타(Phone delta)(404)를 포함한다. 상기 폰 델타(404)는 오리지널 베이스 펌웨어(402)의 오리지널 바이너리 이미지와 모바일 장치(102)로 전송된 베이스 펌웨어(202)의 새로운 이미지 사이의 차이이다. 예를 들면, 웹 브라우저 구성요소(206)와 미디어 플레이어 구성요소(208)는 오리지널 베이스 펌웨어(402)로부터 베이스 펌웨어(202)로 변화하지 않는다.
그러나, 폰 구성요소(204)는 오리지널 베이스 펌웨어(402)로부터 베이스 펌웨어(402)로 변화하기 때문에, 이미지 생성 시스템(104)은 이러한 폰 델타(404)의 변화를 식별하고 수집한다. 왜냐하면 폰 델타(404)는 오리지널 바이너리 이미지와 모바일 장치(102)로 전송된 바이너리 이미지(118) 사이의 모든 변화를 포함하기 때문에, 이미지 생성 시스템(104)은 모바일 장치(102)의 이미지를 업데이트 하기 위해 폰 델타(404)를 모바일 장치(102)에 전송할 수 있다. 그러므로 이미지 생성 시스템(104)은 모바일 장치에 전체 바이너리 이미지(118)나 수정된 전체 폰 구성요소(204)를 모바일 장치(102)에 전송할 필요가 없다. 오직 폰 델타(404)의 전송에 의해 이미지 생성 시스템(104)은 오리지널 바이너리 이미지 전체를 전송하는데 필요한 긴 시간이나 수정된 폰 구성요소(204)를 전송하는데 필요한 시간을 위해 고객 의 대역폭을 이용하지 않는다. 이미지 델타의 크기에 의한 처리에는 미국 출원된 특허(공개번호: 20070132774, 명칭: "System and Method for a Patch Minimization Tool")에 상세히 기재된 최소화 방법을 사용할 수 있다.
도 4의 (c)를 참조하면, 바이너리 이미지(118)는 플래쉬 메모리(210)에 저장되며, 폰 구성요소(204)와, 웹 브라우저 구성요소(206)와, 미디어 플레이어 구성요소(208)와, 폰 이용가능 메모리(214)와, 웹 브라우저 이용가능 메모리(216)와, 미디어 플레이어 이용가능 메모리(218)를 포함한다. 플래쉬 메모리(210)에 로드될 때, 바이너리 이미지(118)는 다수의 부분으로 분할되고(예를 들면, 구성요소(204, 206, 208)), 각 부분은 이용가능한 메모리 블록에 할당된다(예를 들면, 이용가능 메모리(214, 216, 218)). 예를 들면, 폰 이용가능 메모리(214)는 폰 구성요소(204)에 인접하여 뒤따른다. 도 4의 (c)의 구성요소(204, 206, 208)들은 도 4의 (b)의 구성요소(204, 206, 208)들보다 더 작다. 왜냐하면 모바일 FOTA 엔진(114)은 모바일 장치(102)에 바이너리 이미지(118)를 저장하기 위해 필요한 메모리의 양을 최소화하기 위해 플래쉬 메모리(210)에 구성요소를 압축하기 때문이다. 상기 이용가능 메모리 부분은 전체 바이너리 이미지(118)의 재생산이 필요없이 구성요소(204, 206, 208)들의 얼마간의 확장을 위해 허락된다.
구성요소들 사이에 이용가능 메모리를 배치하는 방법은 몇몇 상황에서 실행될 수 있으나, 업데이트가 구성요소를 위해 예약된 것보다 더 많은 이용가능 메모리가 필요할 경우와 같은 상황에서의 문제는 해결할 수 없다. 예를 들면 폰 구성요소(204)의 업데이트는 확장된 폰 구성요소(204)가 이용가능 메모리(214)에 오버플 로우되는 원인이 될 수 있다. 만약 확장된 폰 구성요소(204)조차 폰 이용가능 메모리(214)의 매우 작은 메모리 양에 의해 오버플로우되면, 확장된 폰 구성요소는 폰 구성요소(204)와 폰 이용가능 메모리(214)가 저장된 플래쉬 메모리(210)의 큰 메모리 갭을 떠나, 폰 구성요소(204)와 폰 이용가능 메모리(214)가 저장된 위치와 다른 위치에 저장되는 것이 필요할 수 있다. 그러한 메모리 갭은 음성 메시지, 텍스트 메시지, 이메일, 교신과 같은 데이터를 저장하기 위한 더 많은 양의 메모리를 억세스하는 모바일 장치(102)의 사용자에게 제공하기 위한 압축을 위한 카운터를 실행한다.
다른 방안으로, 확장된 폰 구성요소(204)의 부분이 폰 구성요소(204)와 폰 이용가능 메모리(214)가 저장된 곳에 저장되면, 확장된 폰 구성요소(204)의 나머지는 어딘가 다른 곳에 저장되어야 한다. 확장된 폰 구성요소(204)의 주요 부분과 확장된 폰 구성요소(204)의 나머지 부분 둘 다를 위해 필요한 이러한 분할된 저장공간은 확장된 폰 구성요소(204)가 실행될 때 개별적으로 회수되고 결합 된다. 이러한 필요성은 더 많은 회복 시간과 확장된 폰 구성요소(204)의 사용 처리를 위한 부분의 결합 시간을 더하고, 그것에 의해 사용자 응답이 지연되고 모바일 장치(102)의 사용자 만족도가 감소한다.
본 발명의 실시 예는 더 작은 모듈로 확장된 구성요소를 분할하기 위한 압축 헤더(302)의 사용에 의해 이러한 업데이트 문제를 해결한다. 그러한 결과로 초래된 모듈은 플래쉬 메모리(210)에 이전에 할당된 메모리에 적합할 수 있다. 예를 들면, 모바일 FOTA 엔진(114)은 확장된 웹 브라우저 구성요소(206)를 하나의 크기 로 압축한다. 그리고 압축 헤더(302)에 규정된 웹 브라우저 구성요소(206)와 웹 브라우저 이용가능 메모리(216)를 위해 할당된 플래쉬 메모리의 길이 254의 크기와 비교한다. 만약 압축 헤더(302)가 확장된 웹 브라우저(206)가 플래쉬 메모리(210)의 길이 254에 전체가 저장될 수 있음을 지시한다면, 모바일 FOTA 엔진(114)은 확장된 웹 브라우저(206)를 압축 헤더(302)에 규정된 바와 같이 플래쉬 어드레스 256에 로드한다.
그러나, 그것이 할당된 메모리 공간보다 더 큰 크기로 압축된 구성요소는 할당된 메모리 공간보다 더 작을 수 있는 모듈들 중의 최소 하나에 의하여 더 작은 모듈로 분할될 수 있다. 예를 들면, 모바일 FOTA 엔진(114)이 플래쉬 메모리(210)를 위해 확장된 폰 구성요소(204)를 압축할 때, 확장된 폰 구성요소(204)는 폰 구성요소(204)와 폰 이용가능 메모리(214)를 위해 할당된 플래쉬 메모리(210)의 길이 406 보다 더 크다. 그러므로 폰 구성요소(204)는 도 4의 (a)에 도시된 폰 코드 모듈(220)과 폰 데이터 모듈(222)로 분할된다. 폰 코드 모듈(220)과 폰 데이터 모듈(222)은 오직 예로서 도시되며, 폰 구성요소(204)는 다른 모듈로 분할될 수 있으며, 어떠한 구성요소도 모듈들로 분할될 수 있다.
도 4의 (d)를 참조하면, 바이너리 이미지(118)는 플래쉬 메모리(210)에 저장되며, 웹 브라우저 구성요소(206)와, 미디어 플레이어 구성요소(208)와, 웹 브라우저 이용가능 메모리(216)와, 미디어 플레이어 이용가능 메모리(218)와, 폰 코드 모듈(220)과, 폰 데이터 모듈(222)과, 코드 이용가능 메모리(224)와, 데이터 이용가능 메모리(226)를 포함한다. 폰 코드 모듈(220)과 코드 이용가능 메모리(224)는 확장된 폰 구성요소(204)보다 더 작기 때문에, 폰 코드 모듈(220)과 코드 이용가능 메모리(224)는 폰 구성요소(204)와 폰 이용가능 메모리(214)를 위해 할당된 플래쉬 메모리(210)의 길이 406에 둘 다 쓰여 질 수 있다. 폰 데이터 모듈(222)과 데이터 이용가능 메모리(226)는 폰 코드 모듈(220)이나 코드 이용가능 메모리(224)에 인접하여 저장될 필요는 없다. 그러므로 폰 데이터 모듈(222)과 데이터 이용가능 메모리(226)는 플래쉬 메모리(210)의 다른 곳에 압축 헤더(302)에 기록된 폰 데이터 모듈(222)을 위해 할당된 플래쉬 어드레스 408과 길이 410에 저장될 수 있다. 압축 헤더(302)의 사용은 모듈과 구성요소가 베이스 펌웨어(202)에 저장되는 것과 다른 순서로 모듈과 구성요소가 플래쉬 메모리(210)에 저장되는 것을 가능하게 한다.
결론적으로, 폰 구성요소(204)와 폰 이용가능 메모리(214)를 위한 이용가능 메모리 공간은 확장된 폰 구성요소(204)가 폰 구성요소(204)와 그것의 폰 이용가능 메모리(214)를 위해 할당된 플래쉬 메모리(210)의 길이 406 보다 더 크게 될 때 더 큰 메모리 갭이 되지 않는다. 게다가 오직 폰 코드 모듈(220)에 영향을 주는 폰 구성요소(204)의 어떤 후속의 변경은 오직 폰 코드 모듈(220)만의 업데이트가 필요하고, 폰 데이터 모듈(222)의 업데이트는 필요하지 않다. 플래쉬 메모리(210)의 더 적은 모듈의 업데이트는 더 적은 업데이트 시간이 필요하고 더 적은 처리 자원을 소비한다.
도 5는 본 발명의 일 실시 예에 따른 모바일 장치를 이용한 이미지 제공 방법의 동작 흐름도이다. 상기 방법에 의해 이미지 생성 시스템(104)이 모바일 장치(102)로 바이너리 이미지(118)를 제공한다.
502단계에서 이미지 생성 시스템은 모바일 장치에서 사용하기 위한 적어도 하나 이상의 코드와 적어도 하나 이상의 데이터를 포함하는 오브젝트 파일을 선택한다. 예를 들면 이미지 생성 시스템(104)의 사용자는 모바일 장치(102)를 위해 바이너리 이미지(118)를 제공하는데 사용되는 오브젝트 파일(120)을 식별하기 위한 데이터에 참가한다. 상기 식별된 오브젝트 파일(120)은 폰 구성요소(204)와, 웹 브라우저 구성요소(206)와 미디어 플레이어 구성요소(208)를 위한 오브젝트 파일을 포함할 수 있다. 상기 식별된 오브젝트 파일은 하나의 예이며, 폰 북이나, 메시징, 달력, 게임을 위한 구성요소와 같은 다양한 타입을 포함할 수 있다.
504단계에서 이미지 생성 시스템은 오브젝트 파일(120)로부터 구성요소를 생성한다. 예를 들면 이미지 생성 시스템(104)은 폰 구성요소(204)와 웹 브라우저 구성요소(206)와, 미디어 플레이어 구성요소(208)를 오브젝트 파일(120)로부터 생성한다. 상기 오브젝트 파일(120)은 기계언어(machine language)로 제공된다. 각 구성요소는 모듈들의 집합일 수 있다. 각 모듈은 다시 위치(relocatable)할 수 있는 오브젝트이며, 집합은 저장 파일(archive)로 미리 정의될 수 있다. 예를 들면, 저장 파일은 *.a 또는 *.lib의 명칭을 가질 수 있고, 복수의 모듈을 포함하는 라이브러리가 될 수 있으며, 상기 라이브러리는 그 자체가 구성요소로서 식별될 수 있다. 구성요소는 사용자에 의해 제공된 정의나, 기본 정의, 또는 사용자에 의해 제공된 정의와 기본 정의의 조합에 기반할 수 있다. 예를 들면 기본 정의는 단일 구성요소로 결합된 어떤 Non-라이브러리 파일과 함께, 단일 라이브러리나 다른 정의된 집합으로서의, 관련된 모듈의 집합으로서 구성요소를 정의할 수 있다. 따라서, 두 개의 라이브러리와 복수의 Non-라이브러리 파일이 있다면, 세 개의 구성요소가 된다. 이미지 생성 시스템(104)의 사용자는 어떤 적용할 수 있는 기본 정의를 무시할 수 있는 구성요소의 정의를 제공할 수 있다. 예를 들면, 사용자는 복수의 라이브러리를 하나의 구성요소로 결합할 수 있으며, 복수의 구성요소로 라이브러리를 나눌 수 있다. 사용자 정의와 기본 정의는 사용자 정의된 특정 구성요소와 기본 정의에 따라 정의된 다른 구성요소와 함께 혼합될 수 있다.
506단계에서 이미지 생성 시스템은 구성요소가 논리 블록보다 더 큰지 결정한다. 예를 들면, 이미지 생성 시스템(104)은 폰 구성요소(204)가 플래쉬 메모리(210)의 논리 블록 16k보다 더 큰지 결정한다. 만약 이미지 생성 시스템(104)이 폰 구성요소(204)가 메모리 16k보다 더 큰 것으로 결정하면, 508단계로 진행한다. 만약 이미지 생성 시스템(104)이 폰 구성요소(204)가 메모리 16k보다 더 크지 않은 것으로 결정하면 510단계로 진행한다.
508단계에서 이미지 생성 시스템은 구성요소를 모듈로 분할한다. 예를 들면, 이미지 생성 시스템(104)은 폰 코드 모듈(220)과 폰 데이터 모듈(222)을 생성하는 폰 구성요소(204)를 위해 대응되는 오브젝트 파일(120)로 분할한다. 상기 오브젝트 파일(120)은 메모리의 어드레스 맵을 통해서 지역에 퍼진 다수의 분리된 코드와 데이터로 바이너리 이미지의 부분들의 분할을 사용자에게 가능하게 한다. 프로세서(182)는 분할된 오브젝트 파일(120)에 기반하여 폰 코드 모듈(220)과 같은 모듈을 생성하기 위해 폰 구성요소(204)와 같은 구성요소를 분할한다. 상기 프로세서(182)는 구성요소로 오브젝트 파일(120)을 분할하는 또 다른 과정을 부를 수 있 다. 오브젝트 파일의 분할을 위해 사용될 수 있는 방법은 미국 특허 출원(공개번호: 20070130565, 명칭:"System and Method for a Pseudo DLL Linker")에 상세히 기재된다.
510단계에서 이미지 생성 시스템은 구성요소와 모듈을 모바일 장치로 전송한다. 예를 들면, 이미지 생성 시스템(104)은 웹 브라우져 구성요소(206)와, 미디어 플레이어 구성요소(208)와, 폰 코드 모듈(220)과 폰 데이터 모듈(222)을 모바일 장치(102)로 전송한다.
512단계에서 모바일 FOTA 엔진(114)은 구성요소와 모듈들을 위해 특정 어드레스를 확립한다. 예를 들면, 모바일 FOTA 엔진(114)은 폰 코드 모듈(220)을 위해 플래쉬 어드레스 248을 확립한다. 상기 어드레스는 파일이나 구성요소나 특정 메모리 공간의 모듈의 로딩을 관리하는 메모리 구조와 어떤 파일의 검사에 의해 결정될 수 있다. 각 어드레스는 차후의 업데이트로 인해 변경된 양을 최소화하도록 선택될 수 있다. 예를 들면, 빈번한 업데이트가 필요한 구성요소는 드물게 업데이트되는 구성요소보다 업데이트 확장을 위한 더 많은 공간을 가지기 위해 그것이 허락될 주소가 주어질 수 있다. 상기 주소 결정은 구성요소를 위해 하드웨어에서 이용가능한 주소의 범위를 정의한다. 예를 들면, 만약 메모리의 특정 양이 이후의 업데이트를 위해 예약되면, 주소의 범위는 다른 구성요소를 저장할 수 있는 예약된 메모리를 만들기 위해 정의될 수 있다.
514단계에서, 모바일 FOTA 엔진(114)은 각각의 특정 주소를 포함하는 메모리 배치를 생성한다. 예를 들면, 모바일 FOTA 엔진(114)은 폰 코드 모듈(220)과, 폰 데이터 모듈(224)과, 웹 브라우저 구성요소(206)와 미디어 플레이어 구성요소(208)를 위한 특정 주소를 포함한 압축 헤더(302)를 생성한다.
516단계에서, 모바일 FOTA 엔진(114)은 바이너리 이미지를 제공하기 위해 구성요소와 어떤 모듈들을 대응되는 특정 주소에 로드한다. 예를 들면, 모바일 FOTA 엔진(114)은 폰 코드 모듈(220)을 플래쉬 어드레스 248에 로드한다.
518단계에서, 모바일 FOTA 엔진(114)은 하나 또는 그 이상의 구성요소 및/또는 모듈을 실행하기 위해 메모리 배치를 사용한다. 예를 들면, 모바일 FOTA 엔진(114)은 플래쉬 메모리(248)에 폰 코드 모듈(220)을 위치(locate)하고, 해제(retrieve)하고, 압축 해제(decompress)하고, 실행(execute)하기 위해 압축 헤더(302)를 사용한다.
도 6은 본 발명의 다른 실시 예에 따른 모바일 장치에서 사용하기 위한 이미지 업데이트 방법의 동작 흐름도이다. 상기 방법은 이미지 생성 시스템(104)이 모바일 장치(102)에서 바이너리 이미지(118)의 업데이트를 가능하게 한다.
602단계에서, 이미지 생성 시스템은 모바일 장치가 사용하기 위한 적어도 하나 이상의 코드와 적어도 하나 이상의 데이터를 포함하는 오브젝트 파일을 선택한다. 예를 들면, 이미지 생성 시스템(104)의 사용자는 모바일 장치(102)의 바이너리 이미지(118)를 업데이트하는데 사용되는 오브젝트 파일(120)을 식별하기 위한 데이터에 참가한다. 상기 식별된 오브젝트 파일(120)은 폰 구성요소(204)와, 웹 브라우저 구성요소(206)와 미디어 플레이어 구성요소(208)를 위한 오브젝트 파일을 포함할 수 있다.
604단계에서 이미지 생성 시스템은 오브젝트 파일(120)로부터 구성요소를 생성한다. 예를 들면, 이미지 생성 시스템(104)은 폰 구성요소(204)와 웹 브라우저 구성요소(206)와 미디어 플레이어 구성요소(208)를 오브젝트 파일(120)로부터 생성한다. 상기 오브젝트 파일(120)은 기계언어로 제공된다.
606단계에서 이미지 생성 시스템은 구성요소가 오리지널 오브젝트 파일에 기반한 메모리 배치에 할당된 메모리 공간보다 더 큰지 결정한다. 예를 들면, 이미지 생성 시스템(104)은 폰 구성요소(204)가 오리지널 압축 헤더에 규정된 폰 구성요소(204)와 그것의 폰 이용가능 메모리(214)를 위해 원래 할당된 플래쉬 메모리(210)의 길이(406)보다 더 큰지 결정한다. 만약 이미지 생성 시스템(104)에서 구성요소가 오리지널 압축 헤더에 규정된 할당된 메모리 공간보다 더 크지 않는 것으로 결정하면, 610단계로 진행한다. 만약 이미지 생성 시스템(104)에서 구성요소가 오리지널 압축 헤더에 규정된 할당된 메모리 공간보다 더 큰 것으로 결정하면, 608단계로 진행한다.
608단계에서 이미지 생성 시스템은 구성요소를 모듈로 분할한다. 예를 들면, 이미지 생성 시스템(104)은 폰 코드 모듈(220)과 폰 데이터 모듈(222)을 생성하는 폰 구성요소(204)를 위해 대응되는 오브젝트 파일(120)로 분할한다.
610단계에서 이미지 생성 시스템은 오브젝트 파일과 오리지널 오브젝트 파일 사이의 델타를 생성한다. 예를 들면, 이미지 생성 시스템(104)은 오리지널 베이스 펌웨어(402)의 오리지널 구성요소와 오리지널 모듈을 베이스 펌웨어(202)의 새로운 구성요소와 새로운 모듈과 비교하기 위해 오리지널 압축 헤더의 베이스 어드 레스(306)와 베이스 길이(308)를 참조한다. 이 비교는 오리지널 오브젝트 파일과 오직 구성요소로 변경이 규정된 오브젝트 파일(120) 간의 델타를 생성할 수 있고, 모듈들은 폰 구성요소(204)로 변경되고 상기 변경은 폰 델타(404)로 식별된다.
612단계에서 이미지 생성 시스템은 델타와 관련된 구성요소와 모듈을 모바일 장치(102)로 전송한다. 예를 들면, 이미지 생성 시스템(104)은 모바일 장치(102)로 폰 델타(404)를 전송한다.
614단계에서 모바일 FOTA 엔진(114)은 델타와 오리지널 구성요소로부터 적어도 하나 이상의 업데이트된 구성요소와 업데이트된 모듈을 생성한다. 예를 들면, 모바일 FOTA 엔진(114)은 폰 델타(404)와 오리지널 폰 코드 모듈로부터 업데이트된 폰 코드 모듈(220)을 생성한다.
616단계에서 모바일 FOTA 엔진(114)은 각각의 업데이트된 구성요소와 각각의 업데이트된 모듈을 위해 특정 주소를 확립한다. 예를 들면, 모바일 FOTA 엔진(114)은 업데이트된 폰 코드 모듈(220)을 위해 플래쉬 어드레스(248)를 확립한다.
618단계에서 모바일 FOTA 엔진(114)은 각각의 특정 주소를 포함하는 메모리 배치를 생성한다. 예를 들면, 모바일 FOTA 엔진(114)은 폰 코드 모듈(220)과, 폰 데이터 모듈(224)과, 웹 브라우저 구성요소(206)와 미디어 플레이어 구성요소(208)를 위한 특정 주소를 포함한 압축 헤더(302)를 생성한다.
620단계에서, 모바일 FOTA 엔진(114)은 각각의 업데이트된 구성요소와 각각의 업데이트된 모듈을 그것의 대응되는 특정 주소에 바이너리 이미지를 업데이트하 기 위해 로드한다.
622단계에서 모바일 FOTA 엔진(114)은 하나 또는 그 이상의 업데이트된 구성요소와 업데이트 된 모듈을 실행하기 위해 메모리 배치(layout)를 사용한다. 예를 들면, 모바일 FOTA 엔진(114)은 플래쉬 어드레스(248)에 업데이트된 폰 코드 모듈(220)을 위치하고, 회수하고, 압축해제하고, 실행하기 위해 압축 헤더(302)를 사용한다.
도 7은 모바일 장치(102)를 포함한 무선 통신 시스템을 나타낸 예시도이다. 도 7은 본 발명의 일 실시 예를 따른 FOTA 방법을 위한 모바일 장치(102)를 도시한다. 그러나 모바일 장치(102)는 이러한 실시 예로만 한정되지 않으며, 모바일 폰, 페이저(pager), PDA(Personal Digital Assistant), 포터블 컴퓨터(Portable computer), 타블렛 컴퓨터(tablet computer), 랩톱 컴퓨터(laptop computer), 디지털 카메라, 디지털 뮤직 플레이어, 디지털 계산기, 키 없는 입장을 위한 전자 키를 포함하는 다양한 형태의 전자 장치가 될 수 있다. 많은 적절한 모바일 장치는 이러한 기능의 전부 또는 몇몇이 결합 된다. 본 발명의 실시 예에서 모바일 장치(102)는 노트북이나 타블렛 컴퓨터와 같은 일반적인 목적의 컴퓨터 장치가 아니라, 오히려 모바일 폰, 페이저 또는 PDA와 같은 특별한 목적의 통신 장치이다.
모바일 장치(102)는 디스플레이(702)와 사용자의 입력을 위한 터치 인식부 또는 터치 인식 키(704)를 포함한다. 모바일 장치(102)는 사용자의 선택을 위한 옵션이 존재할 수 있으며, 사용자의 작동을 위한 컨트롤 및/또는 사용자의 지시를 표시하기 위한 커서나 다른 지시물을 포함할 수 있다. 모바일 장치(102)는 모바일 장 치의 실행을 제어하기 위한 다양한 파라미터 값이나 다이얼 번호를 포함한 사용자를 위한 데이터 엔트리를 더 허락할 수 있다. 모바일 장치(102)는 사용자의 명령에 대한 응답으로 하나 또는 더 많은 소프트웨어 또는 펌웨어 어플리케이션을 더 실행할 수 있다. 이러한 어플리케이션은 사용자와의 상호작용에 대한 응답으로 다양한 기능을 수행하기 위해 모바일 장치(102)를 제어할 수 있다.
모바일 장치(102)에 의해 실행될 수 있는 다양한 어플리케이션 중 하나는 웹 페이지를 보여주기 위한 디스플레이(702)가 가능한 웹 브라우저이다. 상기 웹 페이지는 셀 타워(706)와, 무선 네트워크 엑세스 노드 또는 또 다른 무선 통신 네트워크나 시스템과의 무선 통신을 통해 얻어진다. 상기 셀 타워(706)(또는 무선 네트워크 엑세스 노드)는 인터넷과 같은 통신 네트워크(106)와 연결된다. 무선 링크와 무선 네트워크를 통해, 모바일 장치(102)는 컨텐츠 서버(708)와 같은 다양한 서버의 정보에 접속한다. 상기 컨텐츠 서버(708)는 디스플레이(702)에 보일 수 있는 내용을 제공한다.
도 8은 모바일 장치(102)의 블록 구성도이다. 모바일 장치(102)는 DSP(110)와 메모리(112)를 포함한다. 모바일 장치(102)는 안테나&전단부(806)과, RF 송수신부(808)와, 아날로그 기저대역 처리부(810)와 마이크로폰(812)과, 이어폰 스피커(814)와, 헤드셋 포트(816)와, 입출력(I/O) 인터페이스(818)와, 착탈식 메모리 카드(820)와, USB(Universal serial bus) 포트(822)와, 적외선 포트(824)와, 진동기(826)와, 키패드(828)와, 터치 인식 부를 가진 터치스크린 LCD(liquid crystal display)(830)와, 터치 스크린/LCD 제어기(832)와, CCD(charge-coupled device) 카 메라(834)와, 카메라 제어기(836)와, GPS(global positioning system) 센서(838)와, 모바일 FOTA 엔진(114)을 더 포함한다.
상기 DSP(110)나 어떤 다른 형태의 제어기나 중앙 처리 장치는 임베이디드 소프트웨어 또는 메모리(112)에 저장된 펌웨어에 따라 모바일 장치(102)의 다양한 구성요소를 제어하기 위해 동작한다. 임베이디드 소프트웨어나 펌웨어에 더하여, DSP(110)는 메모리에 저장된 다른 어플리케이션이나, 착탈식 메모리 카드(820)처럼 휴대용 데이터 저장 매체에 저장된 정보를 통해 이용 가능하게 된 다른 어플리케이션이나 유무선 네트워크 통신을 통한 어플리케이션을 실행할 수 있다. 어플리케이션 소프트웨어는 원하는 기능을 제공하기 위한 DSP(110)를 형성하는 기계가 읽을 수 있는 명령들의 컴파일된 집합을 포함할 수 있다. 또는 어플리케이션 소프트웨어는 인터프리터나 컴파일러에 의해 DSP(110)를 간접적으로 형성되어 처리되는 하이-레벨 소프트웨어 명령일 수 있다.
상기 안테나&전단부(806)는 모바일 장치(102)가 휴대폰 네트워크나 어떤 다른 이용가능한 무선 통신 네트워크와 정보를 송수신하기 위해 무선 신호와 전자 신호의 변환을 제공할 수 있다. 상기 RF 송수신기(808)는 주파수 쉬프팅과, 베이스밴드로 수신한 RF신호의 변환과 RF신호로 베이스밴드 전송 신호의 변환을 제공한다. 상기 아날로그 기저대역 처리부(810)는 채널 균등화와 수신한 신호로부터 정보를 추출하기 위한 신호 복조를 제공할 수 있다. 또한 전송 신호를 생성하기 위해 정보를 변조할 수 있다. 그리고 오디오 신호를 위해 아날로그 필터링을 제공할 수 있다. 그것을 종료하기 위해, 아날로그 기저대역 처리부(810)는 휴대폰으로서 사용되 는 모바일 장치(102)에서 사용가능한 내장된 마이크로폰(812)과 이어폰 스피커(814)에 연결하기 위한 포트를 가질 수 있다. 상기 아날로그 기저대역 처리부(810)는 헤드셋이나 스피커로 형성된 핸즈-프리 마이크로폰과 연결을 위한 포트를 더 포함할 수 있다.
상기 DSP(110)는 아날로그 기저대역 처리부(810)를 통해 무선 네트워크와 디지털 통신을 할 수 있다. 본 발명의 실시 예에서 이러한 디지털 통신은 인터넷 연결을 제공할 수 있고, 사용자에게 인터넷의 컨텐츠에 접속할 수 있게 한다. 그리고 이메일이나 텍스트 메시지를 송수신할 수 있게 한다. 상기 메모리(112)와 착탈식 메모리 카드(820)는 DSP(110)의 동작을 형성하기 위한 소프트웨어와 데이터를 제공할 수 있다. 인터페이스는 USB 인터페이스(822)와 적외선 포트(824)가 될 수 있다. 상기 USB 인터페이스(822)는 모바일 장치(102)가 퍼스널 컴퓨터나 다른 컴퓨터 시스템과 정보를 교환하기 위한 주변기기로서의 기능을 가능하게 한다. 상기 적외선 포트(824)와 블루투스 인터페이스와 같은 다른 광학 포트 또는 IEEE 802.11 표준에 따르는 무선 인터페이스는 모바일 장치(102)가 다른 가까운 모바일 장치 및/또는 무선 베이스 스테이션과의 무선 통신을 가능하게 한다.
상기 입출력 인터페이스(818)는 모바일 장치(102)의 진동에 의해 반응되었을 경우 DSP(110)를 진동기(826)에 더 연결할 수 있다. 진동기(826)는 전화 수신이나, 새로운 문자 메시지, 약속 알림과 같은 다양한 이벤트에 사용자에게 무음으로 경고하기 위한 메커니즘을 제공할 수 있다.
상기 키패드(828)는 사용자에게 선택, 정보 접속, 모바일 장치로의 다른 방 법의 입력을 위한 메커니즘을 제공하기 위해 인터페이스(818)를 통해 DSP(110)에 연결된다. 또 다른 입력 메커니즘은 사용자에 문자 및/또는 그래픽을 디스플레이 할 수 있는 터치 스크린 LCD(830)가 될 수 있다. 상기 터치 스크린 LCD 제어기(832)는 DSP(110)를 터치 스크린 LCD(830)에 연결한다.
상기 CCD 카메라(834)는 모바일 장치(102)가 디지털 영상을 취하는 것을 가능하게 한다. 상기 DSP(110)는 카메라 제어기(836)를 통해 CCD 카메라(834)와 통신한다. GPS 센서(838)는 GPS 신호를 디코딩하기 위해 DSP(110)에 연결된다. 그것에 의해 모바일 장치(102)가 자신의 위치를 결정하는 것을 가능하게 한다. 본 발명의 실시 예에서 모바일 FOTA 엔진(114)은 펌웨어 구성요소, 하드웨어 구성요소, 또는 소프트웨어, 펌웨어 및/또는 하드웨어의 조합이 될 수 있다. 다양한 다른 주변기기는 또한 부가적인 기능을 제공하기 위해 포함될 수 있다(예를 들면 라디오와 텔레비전 수신).
도 9는 모바일 장치를 위한 일 예시 소프트웨어 구성을 나타내는 블록 구성도이다. DSP(110)는 소프트웨어 동작의 플랫폼을 제공하는 운영 체제 드라이버(904)를 실행한다. 운영 체제 시스템(드라이버)(904)은 어플리케이션 소프트웨어에 접속가능한 표준 인터페이스의 모바일 장치 하드웨어를 위한 드라이버를 제공한다. 운영 체제 시스템(904)은 모바일 장치에 실행되는 어플리케이션들 간의 전송을 제어하는 어플리케이션 관리 서비스(AMS: application management services)(906)를 포함한다. 또한 도 9는 웹 브라우져 어플리케이션(908)과, 미디어 플레이어 어플리케이션(910)과, 자바 애플릿(Java applets)(912)을 도시한다. 상기 웹 브라우 저 어플리케이션(908)은 모바일 장치(102)가 사용자에게 정보에 접속하고 링크를 선택하고 웹 페이지를 볼 수 있는 웹 브라우저를 실행할 수 있게 한다. 미디어 플레이어 어플리케이션(910)은 모바일 장치(102)가 오디오 또는 오디오비주얼 매체를 실행하고 해제할 수 있게 한다. 자바 애플릿(912)은 모바일 장치(102)가 게임, 유틸리티 및 다른 기능을 제공할 수 있게 한다.
도 10은 본 발명이 적용되는 일반적인 컴퓨터 시스템의 블록 구성도이다. 이미지 생성 시스템(104)은 어떤 일반적인 목적의 컴퓨터에서 그것이 위치한 곳에서의 필요한 업무 하중을 조정하기 위한 충분한 동작 파워, 메모리 자원, 네트워크 스루풋(throughput) 용량을 위한 도구가 될 수 있다. 도 10에 도시한 바와 같이 일반적인 목적의 컴퓨터 시스템은 본 명세서에서 개시하는 하나 또는 그 이상의 실행을 위해 적합하다. 이미지 생성 시스템(104)은 프로세서(CPU에 관련될 수 있는)(982) 포함한다. 프로세서(982)는 보조메모리(984)와, ROM(read only memory)(986)과, RAM(random access memory)(988)과, I/O(input/output)(990) 장치, 네트워크 연결 장치(992)와, 오브젝트 파일(120)을 포함하는 메모리 장치와 통신한다. 프로세서(982)는 하나 또는 그 이상의 CPU 칩으로서 실행될 수 있다.
보조기억장치(984)는 일반적으로 하나 또는 그 이상의 디스크 드라이버 또는 테이프 드라이버를 포함한다. 그리고 데이터의 비휘발성 저장을 위해 사용되고, 만약 RAM(988)이 모든 업무 데이터를 유지할 만큼 충분히 크지 않다면, 오버-플로우된 데이터의 저장장치로서 사용된다. 보조기억장치(984)는 프로그램이 실행을 위해 선택되었을 때, RAM(988)에 로드되는 오브젝트 파일(120)과 프로그램의 저장에 사용될 수 있다. ROM(986)은 명령과 프로그램을 실행하는 동안 읽는 데이터의 저장에 사용된다. ROM(986)은 일반적으로 보조기억장치의 큰 메모리 용량에 관련되는 작은 메모리 용량을 가진 비휘발성 메모리 장치이다. RAM(988)은 휘발성 데이터와 명령의 저장에 사용된다. ROM(986)과 RAM(988)의 엑세스는 일반적으로 보조기억장치(984)보다 더 빠르다.
I/O(990) 장치는 프린터와, 비디오 모니터와, LCD와, 터치 스크린 디스플레이와, 키보드와, 키패드와, 스위치와, 다이얼과, 마우스와, 트랙볼과, 음성 녹음기와, 카드리더기와, 종이 테이프 리더기, 또는 다른 알려진 입력 장치를 포함한다. 네트워크 연결 장치(992)는 모뎀, 모뎀 뱅크(modem banks), 이더넷 카드, USB 인터페이스 카드, 시리얼 인터페이스, 토큰링(token ring) 카드, FDDI(fiber distributed data interface) 카드, WLAN(wireless local area network) 카드, CDMA(code division multiple access) 및/또는 GSM(global system for mobile communications)과 같은 무선 송수신 카드, 그리고 알려진 네트워크 드라이브의 형태가 될 수 있다. 이러한 네트워크 연결 장치(992)는 프로세서(982)가 인터넷 또는 하나 이상의 인트라넷과의 통신을 수행할 수 있게 한다. 그러한 네트워크 연결과 함께 프로세서(982)는 본 발명의 실시 예에 따른 동작을 수행하는 동안에 네트워크로부터 오브젝트 파일(120)에 기반하는 이미지(116)를 포함하는 정보를 수신하거나 출력한다. 그러한 정보는 종종 프로세서(982)를 이용하여 실행될 수 있는 명령들의 시퀀스를 표현한다. 상기 프로세서(982)는 네트워크로부터 예를 들면 반송파(carrier wave)에 구체화된 컴퓨터 데이터 신호의 형태로 상기 명령들의 시퀀스 를 수신하거나 출력할 수 있다.
프로세서(982)를 사용하여 실행될 수 있는 데이터나 명령을 포함하는 그러한 정보는 컴퓨터 데이터 베이스밴드 신호 또는 반송파로 구체화된 신호의 형태로 네트워크로부터 수신되고 출력될 수 있다. 베이스밴드 신호나 반송파로 구체화된 신호는 네트워크 연결 장치(992)에서 생성된다. 네트워크 연결 장치(992)는 전기 도체의 표면이나, 광케이블, 도파관(waveguide), 광 섬유와 같은 광 매체, 또는 공기 중의 자유 공간을 통해 전파할 수 있다. 베이스밴드 신호 또는 반송파에 구체화된 신호에 포함된 정보는 정보를 처리하거나 생성하거나 정보를 송수신하기 위해 바람직하게 된 다른 시퀀스에 따라 정렬될 수 있다. 베이스밴드 신호나 반송파에 구체화된 신호 또는 현재 사용되거나 개발된 다른 타입의 신호는 해당 기술 분야의 잘 알려진 여러 방법을 따라 생성될 수 있는 송수신 매체에 관련된다.
프로세서(982)는 명령(instruction)과, 코드(code)와, 컴퓨터 프로그램과, 스크립트(script)를 실행한다. 그것은 하드 디스크, 플로피 디스크, 광 디스크, ROM(986), RAM(988), 또는 네트워크 연결 장치(992)로부터 엑세스할 수 있다.
상기와 같이 본 발명의 일 실시 예에 따른 분할 압축 기반 무선 펌웨어 업그레이드 방법 및 장치의 구성 및 동작이 이루어질 수 있으며, 한편 상기한 본 발명의 설명에서는 구체적인 실시 예에 관해 설명하였으나 여러 가지 변형이 본 발명의 범위를 벗어나지 않고 실시될 수 있다.
도 1은 본 발명의 실시 예에 따른 모바일 장치에서 사용하기 위한 이미지 제공을 위한 시스템의 블록 구성도
도 2는 본 발명의 일 실시 예에 따른 이미지를 포함한 메모리 블록의 블록 구성도
도 3은 본 발명의 실시 예에 따른 메모리 구조를 나타낸 예시도
도 4는 본 발명의 다른 실시 예에 따른 이미지를 포함하는 메모리 블록의 블록 구성도
도 5는 본 발명의 일 실시 예에 따른 모바일 장치에서 사용하기 위한 이미지 제공 방법의 흐름도
도 6은 본 발명의 다른 실시 예에 따른 모바일 장치에서 사용하기 위한 이미지 업데이트 방법의 흐름도
도 7은 무선 통신 시스템의 일 예시 구성을 나타내는 도면
도 8은 모바일 장치의 일 예시 블록 구성도
도 9는 모바일 장치를 위한 일 예시 소프트웨어 구성을 나타내는 블록 구성도
도 10은 본 발명이 적용되는 일반적인 컴퓨터 시스템의 블록 구성도

Claims (19)

  1. 무선 펌웨어 업그레이드를 위해 모바일 장치에서 사용하기 위한 이미지 제공 방법에 있어서,
    상기 모바일 장치에서 사용하기 위한 적어도 하나 이상의 코드와 적어도 하나 이상의 데이터를 포함하는 오브젝트 파일을 선택하는 과정과,
    상기 오브젝트 파일로부터 구성요소(components)를 생성하는 과정과,
    상기 선택된 구성요소가 논리 블록보다 더 큰지 결정하는 과정과,
    상기 선택된 구성요소가 논리 블록보다 더 큰지에 대한 결정에 따라 상기 선택된 구성요소를 모듈로 분할하는 과정과,
    적어도 하나 이상의 상기 구성요소와 상기 모듈을 위해 특정 어드레스를 확립하는 과정과,
    각 특정 어드레스를 포함하는 업데이트된 메모리 배치(layout)를 생성하는 과정을 포함함을 특징으로 하는 이미지 제공 방법.
  2. 제 1항에 있어서, 상기 오브젝트 파일은 기계 언어(machine language)로 제공되고, 상기 오브젝트 파일로부터 구성요소를 생성하는 것은 상기 오브젝트 파일을 압축하는 것을 포함함을 특징으로 하는 이미지 제공 방법.
  3. 제 1항에 있어서, 상기 선택된 구성요소의 위치를 결정하기 위해 상기 메모 리 배치를 사용하는 과정을 더 포함함을 특징으로 하는 이미지 제공 방법.
  4. 제 1항에 있어서, 상기 선택된 구성요소는 상기 모바일 장치에서 사용하기 위한 어플리케이션임을 특징으로 하는 이미지 제공 방법.
  5. 제 1항에 있어서, 상기 오브젝트 파일로부터 구성요소를 생성하는 것은,
    선택된 구성요소를 생성하기 위해 모듈을 그룹화하는 것을 포함함을 특징으로 하는 이미지 제공 방법.
  6. 제 1항에 있어서, 상기 메모리 배치에 저장된 정보를 이용하여 이미지를 업데이트하는 과정을 더 포함함을 특징으로 하는 이미지 제공 방법.
  7. 제 1항에 있어서, 상기 특정 어드레스를 확립하는 것은, 이미지 저장을 위한 플래쉬 메모리의 메모리 경계의 계산을 수행하는 것을 포함함을 특징으로 하는 이미지 제공 방법.
  8. 제 1항에 있어서, 상기 모바일 장치는 전화기, 이동 전화기, 무선 이동 장치, 페이져, PDA, 포터블 컴퓨터, 타블렛 컴퓨터, 랩톱 컴퓨터, 디지털 카메라, 디지털 음악 플레이어, 디지털 계산기, 전자키로 구성되는 그룹으로부터 선택되는 것을 특징으로 하는 이미지 제공 방법.
  9. 무선 펌웨어 업그레이드를 위해 모바일 장치에서 사용하기 위한 이미지 제공을 위한 시스템에 있어서,
    모바일 장치에서 사용하기 위해 적어도 하나 이상의 코드와 적어도 하나 이상의 데이터를 포함하는 오브젝트 파일을 선택하며, 상기 오브젝트 파일로부터 구성요소를 생성하며, 선택된 하나의 상기 구성요소가 논리 블록보다 더 큰지 결정하며, 상기 선택된 구성요소가 상기 논리 블록보다 더 큰지에 대한 결정에 따라 선택된 구성요소를 모듈로 분할하는 이미지 생성 시스템과,
    적어도 하나 이상의 구성요소와 상기 선택된 구성요소의 모듈을 위한 특정 주소를 확립하며, 상기 특정 주소를 포함하는 메모리 배치(layout)를 생성하며, 메모리를 제공하기 위해 특정 주소에 대응되는 곳에 구성요소와 모듈을 로드하는 FOTA(firmware-over-the-air) 엔진을 포함하는 모바일 장치를 포함함을 특징으로 하는 이미지 제공을 위한 시스템.
  10. 제 9항에 있어서, 상기 오브젝트 파일은 기계언어(machine language)로 제공되며, 상기 이미지 생성 시스템은 상기 선택된 구성요소를 모듈로 분할하기 위한 프로그램의 호를 수행하는 것을 특징으로 하는 이미지 제공을 위한 시스템.
  11. 제 9항에 있어서, 상기 모바일 장치에 구성요소와 모듈을 전송하기 위한 수단을 더 포함하는 이미지 제공을 위한 시스템.
  12. 무선 펌웨어 업그레이드를 위해 모바일 장치에서 사용하기 위한 이미지 업데이트 방법에 있어서,
    상기 모바일 장치에서 사용하기 위한 적어도 하나 이상의 코드와 적어도 하나 이상의 데이터를 포함하는 오브젝트 파일을 선택하는 과정과,
    상기 오브젝트 파일로부터 구성요소(components)를 생성하는 과정과,
    상기 선택된 구성요소가 오리지널 오브젝트 파일에 기반한 메모리 배치(layout)에서 할당된 메모리 공간보다 더 큰지 결정하는 과정과,
    상기 선택된 구성요소가 상기 할당된 메모리 공간보다 더 큰지에 대한 결정에 따라 선택된 구성요소를 모듈로 분할하는 과정과,
    상기 오브젝트 파일과 오리지널 오프젝트 파일 간의 델타(delta)를 생성하는 과정과,
    상기 델타와 오리지널 구성요소로부터 업데이트 된 구성요소와 업데이트 된 모듈 중 적어도 하나를 생성하는 과정과,
    각 업데이트 된 구성요소와 각 업데이트 된 모듈을 위해 특정 어드레스를 확립하는 과정과,
    각 특정 어드레스를 포함하는 업데이트된 메모리 배치를 생성하는 과정과,
    업데이트된 이미지를 제공하기 위해 각 업데이트된 구성요소와 각 업데이트된 모듈을 그것에 대응되는 특정 주소에 로드하는 과정을 포함함을 특징으로 하는 이미지 업데이트 방법.
  13. 제 12항에 있어서, 상기 오브젝트 파일은 기계언어(machine language)로 제공되고, 상기 오브젝트 파일과 오리지널 오브젝트 파일 사이의 델타를 생성하는 것은 기계언어 코드 분석을 포함함을 특징으로 하는 이미지 업데이트 방법.
  14. 제 12항에 있어서, 상기 구성요소를 생성하는 것은 오리지널 오브젝트 파일의 적어도 하나를 변경하는 것을 포함함을 특징으로 하는 이미지 업데이트 방법.
  15. 제 12항에 있어서, 상기 델타를 기반으로 업데이트된 이미지에서 변경된 오리지널 이미지에서 생성된 복수의 오리지널 구성요소를 식별하는 과정을 더 포함함을 특징으로 하는 이미지 업데이트 방법.
  16. 제 12항에 있어서, 상기 모바일 장치의 델타에 관련된 구성요소와 모듈을 전송하는 과정을 더 포함함을 특징으로 하는 이미지 업데이트 방법.
  17. 제 16항에 있어서, 상기 모바일 장치의 델타에 관련된 구성요소와 모듈을 전송하는 것은, 구성요소와 모듈이 대응되는 오리지널 구성요소와 대응되는 오리지널 모듈로부터 오직 달라진 부분만을 전송하는 것을 포함함을 특징으로 하는 이미지 업데이트 방법.
  18. 제 16항에 있어서, 상기 모바일 장치의 델타에 관련된 구성요소와 모듈을 전송하는 것은, 상기 구성요소와 모듈을 FOTA(firmware over the air) 프로세스를 이용하여 모바일 장치에 전송하는 것을 포함함을 특징으로 하는 이미지 업데이트 방법.
  19. 제 16항에 있어서, 상기 모바일 장치의 델타에 관련된 구성요소와 모듈을 전송하는 것은, 구성요소와 어떤 모듈을 무선 인터페이스를 통해 모바일 장치에 전송하는 것을 포함함을 특징으로 하는 이미지 업데이트 방법.
KR1020080064440A 2007-07-05 2008-07-03 분할 압축 기반 무선 펌웨어 업그레이드 방법 및 시스템 KR20090004715A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/773,918 2007-07-05
US11/773,918 US20080117991A1 (en) 2006-11-21 2007-07-05 Partitioning Compression-Based Firmware Over the Air

Publications (1)

Publication Number Publication Date
KR20090004715A true KR20090004715A (ko) 2009-01-12

Family

ID=40019280

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080064440A KR20090004715A (ko) 2007-07-05 2008-07-03 분할 압축 기반 무선 펌웨어 업그레이드 방법 및 시스템

Country Status (2)

Country Link
EP (1) EP2012230A1 (ko)
KR (1) KR20090004715A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100928713B1 (ko) * 2009-03-09 2009-11-27 웹싱크 주식회사 압축된 소프트웨어 이미지의 업데이트 방법 및 이를 수행하는 장치
KR20200045931A (ko) 2018-10-23 2020-05-06 주식회사 시옷 펌웨어 패키징 및 언패키징 방법
KR20200045928A (ko) 2018-10-23 2020-05-06 주식회사 시옷 저전력 무선네트워크를 이용한 펌웨어 업데이트 방법
KR20220017184A (ko) * 2020-08-04 2022-02-11 경북대학교 산학협력단 세그먼트의 분리 저장을 위한 코드 삽입 모듈 및 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120041582A (ko) * 2010-10-21 2012-05-02 삼성전자주식회사 스냅샷 이미지 분할 처리 장치 및 스냅샷 이미지 분할 처리 방법
US11416236B2 (en) * 2017-07-07 2022-08-16 Qualcomm Incorporated Over-the-air (OTA) updating of partially compressed firmware

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197600B2 (en) * 2001-02-16 2007-03-27 Broadcom Corporation Transferring data along with code for program overlays
US7080865B2 (en) 2003-07-31 2006-07-25 Raytheon Company Integrated operator workspace incorporated into a mobile computing vehicle
EP1569102B1 (en) * 2004-02-27 2010-04-28 Telefonaktiebolaget LM Ericsson (publ) Flash memory programming
EP1691282A1 (en) * 2005-02-11 2006-08-16 Biftone Corporation Build optimizer tool for efficient management of software builds for mobile devices

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100928713B1 (ko) * 2009-03-09 2009-11-27 웹싱크 주식회사 압축된 소프트웨어 이미지의 업데이트 방법 및 이를 수행하는 장치
KR20200045931A (ko) 2018-10-23 2020-05-06 주식회사 시옷 펌웨어 패키징 및 언패키징 방법
KR20200045928A (ko) 2018-10-23 2020-05-06 주식회사 시옷 저전력 무선네트워크를 이용한 펌웨어 업데이트 방법
KR20220017184A (ko) * 2020-08-04 2022-02-11 경북대학교 산학협력단 세그먼트의 분리 저장을 위한 코드 삽입 모듈 및 방법

Also Published As

Publication number Publication date
EP2012230A1 (en) 2009-01-07

Similar Documents

Publication Publication Date Title
US20080117991A1 (en) Partitioning Compression-Based Firmware Over the Air
US20080119178A1 (en) Allocating Compression-Based Firmware Over the Air
US7925634B2 (en) Data recovery method and system of mobile device
US9875109B2 (en) Method and apparatus for generating user adaptive application in mobile terminal
CN100579267C (zh) 表情符号调用方法和装置
US20060143578A1 (en) Maintenance of shortcut keys in a mobile device
KR20090004715A (ko) 분할 압축 기반 무선 펌웨어 업그레이드 방법 및 시스템
CN104375849A (zh) 加载内核的方法及装置
KR100943160B1 (ko) 이동 장치를 에뮬레이트하기 위한 방법 및 장치
US20080059958A1 (en) Update of Software in a Portable Radio Communication Equipment
AU2010287106B2 (en) System and device for data management, and method thereof
CN111857531A (zh) 移动终端及其文件显示方法
CN113342330A (zh) 前端工程生成方法及装置
KR101376322B1 (ko) 휴대 단말의 어플리케이션 설치 제어 방법, 이를 이용하는 휴대 단말 및 어플리케이션 제공 서버
CN111552531B (zh) 页面显示方法、装置、终端和存储介质
CN114416212A (zh) 移动端应用程序数据资源处理方法及装置
CN112445414B (zh) 数据处理方法及装置
US20080294851A1 (en) Method, apparatus, computer program product, and system for management of shared memory
KR100678081B1 (ko) 이동 통신 단말의 대용량 데이터파일 관리 방법
US7702890B2 (en) Information processing apparatus and program
CN114116072A (zh) 一种共享库的复用方法及电子设备
CN113157277B (zh) 一种主机文件处理方法及装置
CN111443903B (en) Method and device for acquiring software development file, electronic equipment and storage medium
KR20090011150A (ko) 애플리케이션 설치 시스템과 방법, 및 이에 이용되는이동통신 단말기
WO2008054132A1 (en) Terminal having platform library dynamic linking function and method of controlling the same

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination