KR102124803B1 - 델타 파일을 생성하는 장치 및 방법과, 그 델타 파일을 이용하여 펌웨어를 업그레이드하는 수신 단말 및 그 업그레이드 방법 - Google Patents

델타 파일을 생성하는 장치 및 방법과, 그 델타 파일을 이용하여 펌웨어를 업그레이드하는 수신 단말 및 그 업그레이드 방법 Download PDF

Info

Publication number
KR102124803B1
KR102124803B1 KR1020130086973A KR20130086973A KR102124803B1 KR 102124803 B1 KR102124803 B1 KR 102124803B1 KR 1020130086973 A KR1020130086973 A KR 1020130086973A KR 20130086973 A KR20130086973 A KR 20130086973A KR 102124803 B1 KR102124803 B1 KR 102124803B1
Authority
KR
South Korea
Prior art keywords
data
unit
file
information
instructions
Prior art date
Application number
KR1020130086973A
Other languages
English (en)
Other versions
KR20150011701A (ko
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
Application filed by 엘지전자 주식회사 filed Critical 엘지전자 주식회사
Priority to KR1020130086973A priority Critical patent/KR102124803B1/ko
Publication of KR20150011701A publication Critical patent/KR20150011701A/ko
Application granted granted Critical
Publication of KR102124803B1 publication Critical patent/KR102124803B1/ko

Links

Images

Classifications

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

Abstract

본 발명은 델타 파일을 생성하는 장치 및 방법과, 그 델타 파일을 이용하여 펌웨어를 업그레이드하는 수신 단말 및 그 업그레이드 방법을 제공한다. 이를 위해 본 발명에서는 구 버전 파일과 신 버전 파일을 비교하여 인스트럭션 및 데이터 별로, 각각 새로운 것인지, 삭제된 것인지, 동일한 것인지 또는 얼라인된 것인지 여부를 판별한다. 그리고 그 판별된 정보와, 새로운 추가된 인스트럭션과 데이터들, 그리고 인스트럭션들과 데이터들이 얼라인된 정보를 포함하는 델타 파일을 생성한다. 그리고 상기 델타 파일을 수신하는 단말은 상기 판별 정보를 조회하여 새로운 인스트럭션과 데이터들을 구 버전 파일에 추가하고, 얼라인 정보에 따라 각 함수별, 데이터 유닛 별로 인스트럭션 및 데이터를 얼라인한다.
이에 따라 본 발명은 델타 파일의 크기를 크게 줄일 수 있으며, 따라서 펌웨어 업그레이드에 소요되는 시간 및 메모리를 감소시킬 수 있다는 효과가 있다.

Description

델타 파일을 생성하는 장치 및 방법과, 그 델타 파일을 이용하여 펌웨어를 업그레이드하는 수신 단말 및 그 업그레이드 방법{APPARATUS AND METHOD FOR GENERATING DELTA FILE, AND RECEIVING TERMINAL FOR UPGRADING FIRMWARE USING THE DELTA FILE AND UPGRADING METHOD THEREOF}
본 발명은 코드 섹션(code section)과 데이터 섹션(data section)으로 구성되는 바이너리(binary) 파일의 FOTA(Firmware upgrade Over The Air)에 대한 것이다.
델타 파일(delta file)이라는 것은, 구 버전 파일과 신 버전의 파일로부터 차이가 있는 부분만을 취합한 데이터를 말한다. 이러한 델타 파일을 사용하면 필요한 데이터의 양을 크게 줄일 수 있으므로, 프로그램이나 파일의 업그레이드시에는 델타 파일이 통상적으로 사용된다.
그런데 이러한 델타 파일을 생성하는 기존의 방법은, 단순히 구 버전 파일과 신 버전 파일의 각 부분을 비교하여 구 버전 파일과 다른 신 버전 파일의 부분들을 추출하고, 이를 취합하는 것이다. 예를 들어, ELF(Executeable and Linking Format)을 이용하는 펌웨어(Firmware) 파일의 경우 코드 섹션과 데이터 유닛 섹션을 포함하여 구성되므로, 펌웨어 파일의 델타 파일은 구 버전 파일과 신 버전 파일의 코드 섹션 및 데이터 섹션의 차이점들로 구성된다. 여기서 코드 섹션은 다수의 함수들을 포함하고 있는 부분을 말하며, 데이터 섹션은 다수의 데이터 유닛들을 포함하고 있는 부분을 말한다.
따라서 기존의 펌웨어 델타 파일은, 구 버전 파일에서 변경 또는 새로 추가된 함수와 데이터 유닛들로 구성된다. 이를 위해 기존의 델타 파일 생성 방법은, 신 버전 파일의 함수와 데이터 유닛들을 구 버전 파일의 함수 및 데이터 유닛들과 각각 비교하는 과정을 거친다. 여기서 구 버전 파일에서 변경된 함수 및 데이터 유닛의 식별은 통상적으로 각 함수나 데이터 유닛의 크기(size)를 비교하는 방법이 사용된다.
그런데 펌웨어 파일을 업그레이드하는 경우 완전히 새로운 함수나 데이터 유닛을 추가하는 경우도 있으나, 기존의 함수를 구성하는 인스트럭션들의 일부 또는 데이터 유닛을 구성하는 데이터들의 일부를 조금 수정하거나 변경하는 경우가 훨씬 많다. 하지만 기존의 펌웨어 델타 파일 생성 방법의 경우, 상술한 바와 같이 단순히 크기 등을 비교하여 차이가 있는 경우 해당 함수 또는 데이터 유닛을 추출하였다.
따라서 통상적인 델타 파일 생성 방법은, 함수를 구성하는 인스트럭션 일부만이 변경되거나, 또는 데이터 유닛을 구성하는 일부 데이터가 소량 변경되는 경우에도 함수 또는 데이터 유닛 자체를 추출하였으므로 델타 파일의 크기가 불필요하게 크다는 문제점이 있다. 그리고 이처럼 불필요하게 델타 파일의 크기가 커짐에 따라 더 넓은 전송 대역을 필요로 하고, 수신 단말 역시 업그레이드에 소요되는 시간 및 메모리가 많아진다는 문제점이 있다.
본 발명의 목적은, 보다 작은 크기를 가지는 델타 파일을 생성할 수 있는 장치 및 방법을 제공함에 있다.
본 발명의 다른 목적은, 수신 단말의 펌웨어 업그레이드에 소요되는 시간 및 메모리를 감소시킬 수 있는 장치 및 방법을 제공함에 있다.
상술한 목적을 달성하기 위한 본 발명의 실시 예에 따른 델타 파일 생성 장치는, 구 버전 펌웨어 파일과 신 버전 펌웨어 파일로부터 버전 업그레이드에 따라 새로 추가된 함수 및 데이터 유닛을 식별하는 식별부와, 상기 두 펌웨어 파일이 공통으로 사용하는 함수 및 데이터 유닛들을 인스트럭션 또는 데이터별로 비교하여 변경된 부분을 판별하고, 그 판별 결과를 포함하는 변경 정보를 생성하는 판별부와, 상기 변경 정보와 상기 새로 추가된 함수 및 데이터 유닛으로 델타 파일을 생성하는 델타 파일 생성부를 포함하는 것을 특징으로 한다.
또한 본 발명의 실시 예에 따른 델타 파일 생성 방법은, 구 버전 펌웨어 파일과 신 버전 펌웨어 파일을 비교하여 새로 추가된 함수 및 데이터 유닛을 식별하는 단계와, 상기 두 펌웨어 파일이 공통으로 사용하는 함수 및 데이터 유닛들을 인스트럭션 또는 데이터별로 비교하여 변경된 부분을 판별하고 그 판별 결과를 포함하는 변경 정보를 생성하는 단계와, 상기 변경 정보 및, 상기 새로 추가된 함수 및 데이터 유닛으로 델타 파일을 생성하는 델타 파일 생성부를 포함하는 것을 특징으로 한다.
또한 상기 판별 결과는, 해당 인스트럭션 또는 데이터를 새로 추가된 것, 삭제된 것, 그 순서가 변경된 것, 또는 버전 업그레이드 전후에 동일한 것 중 어느 하나로 판별한 것임을 특징으로 한다.
또한 상기 변경 정보는, 새로 추가된 인스트럭션 및 데이터와, 상기 판별 결과 및 순서가 변경된 인스트럭션 및 데이터의 얼라인 정보임을 특징으로 한다.
또한 상기 얼라인 정보는, 상기 인스트럭션 또는 데이터들이 버전 업그레이드에 의해 변경된 순서에 따른 인덱스 번호임을 특징으로 한다.
또한 본 발명의 실시 예에 따른 델타 파일을 이용하여 펌웨어를 업그레이드 하는 수신 단말은, 상기 델타 파일을 수신하는 수신부와, 수신된 델타 파일로부터 상기 얼라인 정보와 상기 판별 정보, 그리고 상기 새로운 함수와 인스트럭션 및 데이터 유닛과 데이터들을 추출하는 추출부와, 상기 판별 정보에 따라 구 버전 펌웨어 파일에 상기 새로운 함수 및 데이터 유닛들을 추가하고, 상기 판별 정보에 따른 함수 및 데이터 유닛에 인스트럭션 또는 데이터들을 추가 및 상기 얼라인 정보에 따라 인스트럭션 또는 데이터들의 얼라인을 수행하는 업그레이드부와, 상기 구 버전 펌웨어 파일을 상기 업그레이드부에 입력하고, 업그레이드가 완료된 파일로 상기 구 버전 펌웨어 파일을 대체하는 제어부를 포함하는 것을 특징으로 한다.
또한 상기 판별 정보는, 버전 업그레이드로 인해 삭제된 함수 또는 인스트럭션 및 데이터 유닛 또는 데이터를 판별하기 위한 정보를 더 포함하며, 상기 업그레이드부는, 상기 삭제된 함수 또는 인스트럭션이나 데이터 유닛 또는 데이터를 상기 판별 정보에 따라 판별하여, 상기 구 버전 펌웨어 파일에서 삭제하는 것을 특징으로 한다.
또한 본 발명의 실시 예에 따른 델타 파일을 이용하여 수신 단말이 펌웨어를 업그레이드하는 방법은, 델타 파일을 수신하는 단계와, 수신된 델타 파일로부터 상기 얼라인 정보와 상기 판별 정보, 그리고 상기 새로운 함수와 인스트럭션 및 데이터 유닛과 데이터들을 추출하는 단계와, 상기 판별 정보를 조회하여 구 버전 펌웨어 파일에 새로운 함수 및 데이터 유닛들을 추가하는 단계와, 상기 판별 정보에 따라, 지정된 함수 또는 데이터 유닛에, 새로운 인스트럭션 또는 데이터들을 추가하거나 인스트럭션 또는 데이터들을 얼라인하는 단계와, 상기 구 버전 펌웨어 파일을 업그레이드가 완료된 파일로 대체하는 단계를 포함하는 것을 특징으로 한다.
따라서 본 발명은 인스트럭션 및 데이터 별로 구 버전 파일과 신 버전 파일을 비교하여, 순서가 변경된 인스트럭션 및 데이터들의 얼라인 정보와 새로 추가된 인스트럭션 및 데이터들로 델타 파일을 생성함으로써, 델타 파일의 크기를 감소시킬 수 있도록 하는 효과가 있다.
또한 본 발명은 그 크기가 감소된 델타 파일을 이용함으로써, 수신 단말의 펌웨어 업그레이드에 소요되는 시간 및 메모리를 감소시킬 수 있는 효과가 있다.
도 1은 본 발명의 실시 예에 따라 델타 파일을 생성하는 장치의 구성도,
도 2는 본 발명의 실시 예에 따라 델타 파일을 생성하는 과정의 흐름도,
도 3은 이러한 본 발명의 실시 예에 따라 생성되는 인스트럭션별 판별 정보의 예를 도시한 예시도,
도 4는 본 발명의 실시 예에 따른 델타 파일이 업그레이드 서버에서 수신 단말로 전송되는 예를 도시한 예시도,
도 5는 본 발명의 실시 예에 따른 델타 파일을 이용하여 펌웨어를 업그레이드하는 수신 단말의 구성도,
도 6은 본 발명의 실시 예에 따라 수신 단말이 델타 파일을 이용하여 펌웨어를 업그레이드하는 과정의 흐름도.
본 명세서에서 사용되는 기술적 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 명세서에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "구성된다." 또는 "포함한다." 등의 용어는 명세서상에 기재된 여러 구성 요소들, 또는 여러 단계를 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 명세서에 개시된 기술을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 명세서에 개시된 기술의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
이하, 첨부된 도면을 참조하여 본 명세서에 개시된 실시 예들을 상세히 설명하도록 한다. 또한 본 발명에 대한 이하의 설명에서 '함수'라 함은 특정 동작을 수행하는 일련의 인스트럭션들의 집합을 의미한다. 그리고 '심볼'이라 함은 메모리 상에 주소를 가지는 모든 것, 즉 일련의 인스트럭션들(함수)을 의미할 수도 있고, 특정 변수 또는 메모리에 저장된 특정 데이터를 의미할 수도 있다. 또한 '심볼 테이블'이라 함은 각각의 심볼에 해당되는 메모리의 영역을 지정한 메모리맵, 즉 각 심볼에 해당되는 데이터들이 저장된 메모리의 주소 정보를 의미한다.
그리고 '데이터 유닛'이라 함은 각 심볼을 구성하는 데이터들의 집합을 의미한다. 그리고 '데이터'라 함은 상기 데이터 유닛을 구성하는 각각의 데이터들을 의미한다. 그리고 '코드 섹션'이라 함은 펌웨어 파일에 포함된 각 함수들과, 각 함수를 구성하는 인스트럭션들을 포함하는 펌웨어 파일의 부분을 의미한다. 그리고 '데이터 섹션'이라 함은 펌웨어 파일에 포함된 각 데이터 유닛들과, 각 데이터 유닛을 구성하는 데이터들을 포함하는 펌웨어 파일의 부분을 의미한다.
먼저 본 발명의 완전한 이해를 돕기 위해, 본 발명의 기본 원리를 설명하면, 본 발명에서는 구 버전 펌웨어 파일과 신 버전 펌웨어 파일을 비교하여 인스트럭션(instruction) 및 데이터 별로, 각각 새로운 것인지, 삭제된 것인지, 동일한 것인지 또는 얼라인(align)된 것인지 여부를 판별한다. 그리고 그 판별된 정보와, 새로운 추가된 인스트럭션과 데이터들, 그리고 인스트럭션들과 데이터들이 얼라인된 정보를 포함하는 델타 파일을 생성한다. 그리고 상기 델타 파일을 수신하는 단말은 상기 판별 정보를 조회하여 새로운 인스트럭션과 데이터들을 구 버전 펌웨어 파일에 추가하고, 얼라인 정보에 따라 각 함수별, 데이터 유닛 별로 인스트럭션 및 데이터를 얼라인한다.
도 1은 이러한 본 발명의 실시 예에 따라 델타 파일을 생성하는 장치의 구성을 도시한 도면이다.
도 1을 참조하여 살펴보면, 본 발명의 실시 예에 따른 델타 파일 생성 장치는 입력부(100), 인덱싱부(110), 식별부(120), 버퍼링부(130), 판별부(140), 저장부(150), 델타 파일 생성부(160)를 포함하여 구성된다.
여기서 입력부(100)는 구 버전 펌웨어 파일(이하 구 버전 파일)과 신 버전 펌웨어 파일(이하 신 버전 파일)이 입력되면 각 파일을 코드 섹션과 데이터 섹션으로 분리한다. 그리고 분리된 각 코드 섹션과 데이터 섹션을 인덱싱부(110)에 입력한다.
인덱싱부(110)는 입력된 코드 섹션과 데이터 섹션에 포함된 정보들을 인덱싱(Indexing)한다. 인덱싱부(110)는 코드 섹션과 데이터 섹션을 따로 분리하여 인덱싱할 수 있는데 이를 위해 인덱싱부(110)는 제1 인덱싱부(112)와 제2 인덱싱부(114)를 포함하여 구성될 수 있다.
여기서 제1 인덱싱부(112)는 코드 섹션에 포함된 정보들을 인덱싱한다. 즉, 제1 인덱싱부(112)는 입력부(100)로부터 구 버전 파일과 신 버전 파일의 코드 섹션들을 입력받고, 각 코드 섹션에 포함된 함수들을 인덱싱한다. 그리고 제1 인덱싱부(112)는 각 함수를 구성하는 인스트럭션들을 각각의 함수 별로 인덱싱한다.
그리고 제2 인덱싱부(114)는 데이터 섹션에 포함된 정보들을 인덱싱한다. 즉, 제2 인덱싱부(114)는 입력부(100)로부터 구 버전 파일과 신 버전 파일의 데이터 섹션들을 입력받고, 각 데이터 섹션에 포함된 데이터 유닛들을 인덱싱한다. 그리고 제2 인덱싱부(114)는 각 데이터 유닛을 구성하는 데이터들을 각각의 데이터 유닛 별로 인덱싱한다.
인덱싱부(110)는 각 함수별, 각 함수의 인스트럭션 별, 그리고 각 데이터 유닛별, 각 데이터 유닛의 데이터 별로 인덱싱이 완료되면, 인덱싱된 함수들과 데이터 유닛들을 식별부(120)에 입력한다. 그러면 식별부(120)는 입력된 함수들과 데이터 유닛들을 식별하여 신 버전 파일에서 새로 추가된 것들과 그렇지 않은 것들을 구분한다.
식별부(120)는 함수들을 식별하기 위한 함수 식별부(122)와 데이터 유닛들을 식별하기 위한 데이터 유닛 식별부(124)를 포함하여 구성된다. 여기서 함수 식별부(122)는 구 버전 파일과 신 버전 파일의 심볼 테이블로부터 각각 함수 리스트를 추출하여 구 버전 파일에 포함된 함수들과 신 버전 파일에 포함된 함수들을 비교한다. 이를 통해 함수 식별부(122)는 신 버전 파일에서 새로 추가된 함수와, 구 버전 파일과 신 버전 파일이 공통으로 사용하는 함수(이하 공통 함수)를 식별한다. 그리고 새로 추가된 함수들을 추출하여 버퍼링부(130)에 입력한다. 그리고 구 버전 파일과 신 버전 파일의 공통 함수들을 판별부(140)에 입력한다.
그리고 식별부(120)의 데이터 유닛 식별부(124)는 구 버전 파일과 신 버전 파일의 심볼 테이블로부터 각각 데이터 유닛 리스트를 추출하여 구 버전 파일에 포함된 데이터 유닛들과 신 버전 파일에 포함된 데이터 유닛들을 비교한다. 이를 통해 데이터 유닛 식별부(124)는 신 버전 파일에서 새로 추가된 데이터 유닛과, 구 버전 파일과 신 버전 파일이 공통으로 사용하는 데이터 유닛(이하 공통 데이터 유닛)을 식별한다. 그리고 새로 추가된 데이터 유닛들을 추출하여 버퍼링부(130)에 입력한다. 그리고 구 버전 파일과 신 버전 파일의 공통 데이터 유닛들을 판별부(140)에 입력한다.
버퍼링부(130)는 식별부(120)로부터 신 버전에서 새로 추가된 함수 및 데이터 유닛들을 입력받는다. 그리고 버퍼링부(130)는 새로 추가된 함수들을 함수 버퍼(132)에 저장하고, 새로 추가된 데이터 유닛들을 데이터 유닛 버퍼(134)에 저장한다. 즉, 버퍼링부(130)는 함수 버퍼(132)에 새로 추가된 함수를 구성하는 인스트럭션들을 저장하고, 데이터 유닛 버퍼(134)에 새로 추가된 데이터 유닛을 구성하는 데이터들을 저장한다. 그리고 버퍼링부(130)는 저장부(150)의 요청이 있는 경우 새로운 함수를 구성하는 인스트럭션들 및 새로운 데이터 유닛을 구성하는 데이터들을 저장부(150)에 입력한다.
판별부(140)는, 함수 식별부(122)로부터 입력된 구 버전 파일과 신 버전 파일의 공통 함수들로부터 각각의 함수별로 그 차이를 판별한다. 이를 위해 판별부(140)는 신 버전 파일의 각 함수와, 이에 대응되는 구 버전 파일의 함수를 선택하여, 선택된 두 함수의 크기를 비교하는 방법으로 차이가 있는지 여부를 판별할 수 있다. 또는 판별부(140)는 신 버전 파일의 각 함수마다 대응되는 구 버전 파일의 함수를, 해당 함수를 구성하는 인스트럭션별로 비교하여 차이가 있는지 여부를 판별할 수 있다.
그리고 판별부(140)는 해당 함수에 버전 업그레이드로 인해 신 버전 파일에 새로운 인스트럭션이 추가되었는지 여부 및, 구 버전 파일의 함수에서 삭제된 인스트럭션이 있는지 여부를 판별한다. 그리고 판별부(140)는 인스트럭션들의 인덱싱 정보를 이용하여 해당 함수를 구성하는 인스트럭션들의 순서가 버전 업그레이드로 인해 신 버전 파일에서 변경되었는지 여부를 판별한다.
그리고 판별부(140)는 해당 함수에 대해 상기 판별된 결과를 포함하는 인스트럭션별 판별 정보를 생성한다. 이 인스트럭션별 판별 정보는 신 버전 파일의 해당 함수를 구성하는 각 인스트럭션이, 새로 추가된 것인지 또는 순서가 변경(align)된 것인지에 대한 정보를 포함한다. 그리고 판별부(140)는 버전 업그레이드 전후 그 순서가 변경되지 않은, 즉, 구 버전 파일과 신 버전 파일에서 동일한 인스트럭션의 경우, 해당 인스트럭션이 동일한 것임을 표시하는 정보를 판별 정보에 포함시킬 수 있다.
예를 들어 판별부(140)는 새로 추가된 인스트럭션의 경우 "11"로, 순서가 변경된 인스트럭션의 경우 "01"로, 그리고 동일한 인스트럭션의 경우 "10"으로 표시할 수 있다. 그리고 버전 업그레이드로 인해 삭제된 인스트럭션의 경우 "00"으로 표시된 인스트럭션별 판별 정보를 생성할 수 있다. 그리고 판별부(140)는 이러한 인스트럭션별 판별 정보를 구 버전 파일과 신 버전 파일의 모든 공통 함수들에 대해 생성한다.
그리고 판별부(140)는 구 버전 파일과 신 버전 파일에 포함된 모든 함수들을 비교하여 버전 업그레이드로 인해 신 버전 파일에 새로 추가되거나 변경된 함수 또는 구 버전 파일에서 삭제된 함수를 판별한다. 그리고 판별부(140)는 구 버전 파일과 신 버전 파일의 대응되는 함수들을 서로 비교하여 그 내용이 변경되었는지 여부를 판별한다.
판별부(140)는 함수들을 서로 비교하여 새로운 인스트럭션이 추가되거나, 인스트럭션들의 순서가 변경된 경우 내용이 변경된 함수로 판단할 수 있다. 여기서 판별부(140)는 대응되는 함수들의 인스트럭션별 판별 정보를 서로 비교하여 내용의 변경 여부를 판별하거나, 대응되는 함수들의 크기를 서로 비교하여 내용의 변경 여부를 판별할 수 있다. 그리고 판별부(140)는 각 함수별로 그 판별 결과를 포함하는 함수별 판별 정보를 생성한다.
이 함수별 판별 정보에는 새로 추가되거나 변경되지 않은 함수들 중, 버전 업그레이드로 인해 삭제되지 않은 함수들은 구 버전 파일과 신 버전 파일에서 동일한 함수임을 표시하는 정보가 포함될 수 있다. 예를 들어 판별부(140)는 버전 업그레이드로 인해 추가된 함수의 경우 "11"로, 내용이 변경된 함수의 경우 "01"로, 동일한 함수의 경우에는 "10"으로, 그리고 버전 업그레이드로 인해 삭제된 함수의 경우 "00"으로 표시된 함수별 판별 정보를 생성할 수 있다.
또한 판별부(140)는 데이터 유닛 식별부(124)로부터 입력된 구 버전 파일과 신 버전 파일의 공통 데이터 유닛들로부터 각각의 데이터 유닛별로 그 차이를 판별한다. 이를 위해 판별부(140)는 신 버전 파일의 각 데이터 유닛과, 이에 대응되는 구 버전 파일의 데이터 유닛을 선택하여, 선택된 두 데이터 유닛의 크기를 비교하는 방법으로 차이가 있는지 여부를 판별할 수 있다. 또는 판별부(140)는 신 버전 파일의 각 데이터 유닛마다 대응되는 구 버전 파일의 데이터 유닛을, 해당 데이터 유닛을 구성하는 데이터별로 비교하여 차이가 있는지 여부를 판별할 수 있다.
그리고 판별부(140)는 해당 데이터 유닛에 버전 업그레이드로 인해 신 버전 파일에서 해당 데이터 유닛에 새로운 데이터가 추가되었는지 여부 및, 구 버전 파일의 데이터 유닛에서 삭제된 데이터 있는지 여부를 판별한다. 그리고 판별부(140)는 데이터들의 인덱싱 정보를 이용하여 해당 데이터 유닛을 구성하는 데이터들의 순서가 신 버전 파일에서 변경되었는지 여부를 판별한다.
그리고 판별부(140)는 해당 데이터 유닛에 대해 상기 판별된 결과를 포함하는 데이터별 판별 정보를 생성한다. 이 데이터별 판별 정보는 신 버전 파일의 해당 데이터 유닛을 구성하는 각 데이터가, 새로 추가된 것인지 또는 순서가 변경된 것인지에 대한 정보를 포함한다. 그리고 판별부(140)는 버전 업그레이드 전후 그 순서가 변경되지 않은, 즉, 구 버전 파일과 신 버전 파일에서 동일한 데이터의 경우, 해당 데이터가 동일한 것임을 표시하는 정보를 판별 정보에 포함시킬 수 있다.
예를 들어 판별부(140)는 새로 추가된 데이터의 경우 "11"로, 순서가 변경된 데이터의 경우 "01"로, 그리고 동일한 데이터의 경우 "10"으로 표시할 수 있다. 그리고 버전 업그레이드로 인해 삭제된 데이터의 경우 "00"으로 표시된 데이터별 판별 정보를 생성할 수 있다. 판별부(140)는 이러한 데이터별 판별 정보를 구 버전 파일과 신 버전 파일의 모든 공통 데이터 유닛들에 대해 생성한다.
그리고 판별부(140)는 구 버전 파일과 신 버전 파일에 포함된 모든 데이터 유닛들을 비교하여 신 버전 파일에 새로 추가되거나 변경된 데이터 유닛 또는 구 버전 파일에서 삭제된 데이터 유닛을 판별한다. 판별부(140)는 구 버전 파일과 신 버전 파일의 대응되는 데이터 유닛들을 서로 비교하여 그 내용이 변경되었는지 여부를 판별한다.
판별부(140)는 데이터 유닛들을 서로 비교하여 새로운 데이터가 추가되거나, 데이터들의 순서가 변경된 경우 내용이 변경된 데이터 유닛으로 판단할 수 있다. 여기서 판별부(140)는 대응되는 데이터 유닛들의 데이터별 판별 정보를 서로 비교하여 내용의 변경 여부를 판별하거나, 대응되는 데이터 유닛들의 크기를 서로 비교하여 내용의 변경 여부를 판별할 수 있다. 그리고 판별부(140)는 각 데이터 유닛별로 그 판별 결과를 포함하는 데이터 유닛별 판별 정보를 생성한다.
이 데이터 유닛별 판별 정보에는 새로 추가되거나 변경되지 않은 데이터 유닛들 중, 버전 업그레이드로 인해 삭제되지 않은 데이터 유닛들은 구 버전 파일과 신 버전 파일에서 동일한 데이터 유닛임을 표시하는 정보가 포함될 수 있다. 예를 들어 판별부(140)는 버전 업그레이드로 인해 추가된 데이터 유닛의 경우 "11"로, 내용이 변경된 데이터 유닛의 경우 "01"로, 동일한 데이터 유닛의 경우에는 "10"으로, 그리고 버전 업그레이드로 인해 삭제된 데이터 유닛의 경우 "00"으로 표시된 데이터 유닛별 판별 정보를 생성할 수 있다.
그리고 판별부(140)는 상기 함수별 판별 정보와 인스트럭션별 판별 정보, 그리고 데이터 유닛별 판별 정보와 데이터별 판별 정보를 저장부(150)에 입력한다. 그리고 판별부(140)는 인스트럭션별 판별 정보를 참조하여, 신 버전 파일에서 새로 추가된 인스트럭션들을 저장부(150)에 입력한다. 그리고 판별부(140)는 데이터별 판별 정보를 참조하여, 신 버전 파일에서 새로 추가된 데이터들을 저장부(150)에 입력한다.
그리고 판별부(140)는 인스트럭션별 판별 정보를 참조하여, 신 버전 파일에서 그 순서가 변경된 인스트럭션들로부터 얼라인(align) 정보를 생성한다. 여기서 얼라인 정보라는 것은 해당 인스트럭션의 변경된 순서에 대한 정보를 말하는 것이다. 이러한 얼라인 정보는 해당 인스트럭션의 변경된 인덱스 번호에 대한 정보가 될 수 있다. 즉, 예를 들어 어떤 함수의 'write'라는 인스트럭션의 인덱스 번호가, 구 버전 파일에서는 5번이었으나 신 버전 파일에서는 6번으로 변경된 경우, 얼라인 정보는 변경된 해당 인스트럭션의 변경된 인덱스 번호인 '6'이 될 수 있다. 판별부(140)는 이러한 얼라인 정보를, 순서가 변경된 각 인스트럭션별로 생성하고 이를 저장부(150)에 입력한다.
그리고 판별부(140)는 데이터별 판별 정보를 참조하여, 신 버전 파일에서 그 순서가 변경된 데이터들로부터 얼라인 정보를 생성한다. 그리고 판별부(140)는 생성된 각 데이터별 얼라인 정보를 상기 각 인스트럭션별 얼라인 정보와 함께 저장부(150)에 입력한다.
따라서 인스트럭션 또는 데이터의 순서가 변경된 함수 및 데이터 유닛은, 함수별 판별 정보 및 데이터 유닛별 판별 정보에 버전 업그레이드로 인해 내용이 변경되었음이 표시된다. 그리고 그 함수 또는 데이터 유닛에 대한 인스트럭션별 판별 정보 및 데이터 유닛별 판별 정보에는 그 함수 또는 데이터 유닛을 구성하는 각 인스트럭션 및 데이터들별로, 동일한 것인지, 새로 추가된 것인지, 또는 순서가 변경된 것인지 아니면 삭제된 것인지 여부가 표시된다. 그리고 판별 정보에서 순서가 변경된 것으로 표시된 인스트럭션 또는 데이터에 대해서는 얼라인 정보, 즉 버전 업그레이드로 인해 변경된 순서에 대한 인덱스 번호를 포함하는 정보가 생성된다.
저장부(150)는 판별 정보 저장부(154)와 인스트럭션 저장부(152), 그리고 얼라인 정보 저장부(156)를 포함하여 구성된다. 여기서 판별 정보 저장부(154)는 판별부(140)로부터 입력되는 판별 정보들을 저장한다. 그리고 인스트럭션 저장부(152)는 판별부(140)로부터 입력되는 인스트럭션들 및 데이터들을 저장한다. 그리고 얼라인 정보 저장부(156)는 데이터별 및 인스트럭션별 얼라인 정보들을 저장한다.
그리고 저장부(150)는 버퍼링부(130)에 새로운 함수 및 새로운 데이터 유닛들의 입력을 요청한다. 그러면 버퍼링부(130)는 함수 버퍼(132)에 저장된 인스트럭션들을 저장부(150)에 입력한다. 그리고 버퍼링부(130)는 데이터 유닛 버퍼(134)에 저장된 데이터들을 저장부(150)에 입력한다.
저장부(150)는 버퍼링부(130)로부터 입력되는 인스트럭션들 및 데이터들, 그리고 판별부(140)로부터 입력되는 인스트럭럭션들 및 데이터들을 인스트럭션 저장부(152)에 저장한다. 따라서 인스트럭션 저장부(152)에는 신 버전 파일에서 새로 추가된 함수 및 새로 추가된 데이터 유닛과, 각 공통 함수별로 새로 추가된 인스트럭션들 및 데이터들이 저장된다.
그리고 저장부(150)는 판별부(140)로부터 입력되는 얼라인 정보들을 얼라인 정보 저장부(156)에 입력한다. 따라서 얼라인 정보 저장부(156)에는 구 버전 파일과 신 버전 파일의 각 공통 함수를 구성하는 인스트럭션들 중 그 순서가 변경된 인스트럭션들의 얼라인 정보가 저장된다. 또한 구 버전 파일과 신 버전 파일의 각 공통 데이터 유닛을 구성하는 데이터들 중 그 순서가 변경된 데이터들의 얼라인 정보가 저장된다.
그리고 저장부(150)는 판별부(140)로부터 입력되는 판별 정보들을 판별 정보 저장부(154)에 저장한다. 따라서 판별 정보 저장부(154)에는 함수별 판별 정보와 인스트럭션별 판별 정보, 그리고 데이터 유닛별 판별 정보와 데이터별 판별 정보가 저장된다.
그리고 델타 파일 생성부(160)는 저장부(150)에 저장된 정보들을 이용하여 델타 파일을 생성한다. 델타 파일 생성부(160)의 코드 섹션 생성부(162)는 인스트럭션 저장부(152)에 저장된 인스트럭션들을 로드한다. 여기서 로드된 인스트럭션들은 새로 추가된 함수을 구성하는 인스트럭션들 및, 구 버전 파일과 신 버전 파일의 공통 함수를 구성하는 인스트럭션들 중 새로 추가된 인스트럭션들을 포함한다.
그리고 코드 섹션 생성부(162)는 얼라인 정보 저장부(156)로부터, 인스트럭션들의 얼라인 정보를 로드한다. 그리고 코드 섹션 생성부(162)는 판별 정보 저장부(154)로부터 함수별 판별 정보와 인스트럭션별 판별 정보를 로드한다. 그리고 코드 섹션 생성부(162)는 저장부(150)로부터 로드한 정보들을 이용하여 델타 파일의 코드 섹션을 생성한다.
그리고 델타 파일 생성부(160)의 데이터 섹션 생성부(164)는 인스트럭션 저장부(152)에 저장된 데이터들을 로드한다. 여기서 로드된 데이터들은 새로 추가된 데이터 유닛을 구성하는 데이터들 및, 구 버전 파일과 신 버전 파일의 공통 데이터 유닛을 구성하는 데이터들 중 새로 추가된 데이터들을 포함한다.
그리고 데이터 섹션 생성부(164)는 얼라인 정보 저장부(156)로부터, 데이터들의 얼라인 정보를 로드한다. 그리고 코드 섹션 생성부(162)는 판별 정보 저장부(154)로부터 데이터 유닛별 판별 정보와 데이터별 판별 정보를 로드한다. 그리고 코드 섹션 생성부(162)는 저장부(150)로부터 로드한 정보들을 이용하여 델타 파일의 데이터 섹션을 생성한다. 그리고 델타 파일 생성부(160)는 코드 섹션과 데이터 섹션을 합하여 델타 파일을 생성한다.
따라서 본 발명의 실시 예에 따른 델타 파일 생성 장치는, 인스트럭션 및 데이터 별로 구 버전 파일과 신 버전 파일의 차이를 판별하고, 그 판별 결과와 신 버전 파일에서 새로 추가된 인스트럭션 및 데이터, 그리고 인스트럭션 및 데이터들의 얼라인 정보로 델타 파일을 생성함으로써 그 크기를 크게 줄일 수 있다.
도 2는 본 발명의 실시 예에 따라 델타 파일을 생성하는 과정의 흐름을 도시한 도면이다.
도 2를 참조하여 살펴보면, 델타 파일의 생성이 시작되면, 입력부(100)는 구 버전 파일과 신 버전 파일의 코드 섹션과 데이터 섹션을 각각 분리한다(S200). 그리고 이를 인덱싱부(110)에 입력한다. 그리고 인덱싱부(110)는 코드 섹션에 포함된 각 함수들 및 각 함수를 구성하는 인스트럭션들을 인덱싱한다(S202). 그리고 데이터 섹션에 포함된 각 데이터 유닛들 및 각 데이터 유닛을 구성하는 데이터들을 인덱싱한다(S202).
그리고 인덱싱된 각 함수들 및 각 데이터 유닛들은 식별부(120)를 통해 새로 추가된 것과 그렇지 않은 것이 식별된다(S204). 이를 위해 식별부(120)는 구 버전 파일과 신 버전 파일로부터 각각 심볼 테이블을 로드하고, 로드된 각 심볼 테이블로부터 함수 리스트와 데이터 유닛 리스트를 추출한다. 그리고 추출된 구 버전 파일의 함수 리스트와 신 버전 파일의 함수 리스트를 비교하여 새로 추가된 함수 및 데이터 유닛과, 신 버전 파일과 구 버전 파일이 공통으로 사용하는 함수 및 데이터 유닛을 식별한다. 그리고 식별부(120)는 새로운 함수 및 데이터 유닛을 버퍼링부(130)로 입력하여 저장한다. 그리고 식별부(120)는 신 버전 파일과 구 버전 파일이 공통으로 사용하는 함수 및 데이터 유닛을 판별부(140)에 입력한다.
그러면 판별부(140)는 입력된 함수 및 데이터 유닛들을, 각 함수를 구성하는 인스트럭션별로 또는 각 데이터 유닛을 구성하는 데이터별로 그 차이를 판별한다(S206). 즉, 판별부(140)는 구 버전 파일과 신 버전 파일의 각 인스트럭션 및 데이터를 비교하여, 버전 업그레이드에 의해 새로 추가된 것인지, 또는 순서 변경, 즉 얼라인된 것인지 여부와, 버전 업그레이드에 의해 구 버전 파일에서 삭제된 것인지, 및 버전 업그레이드와 상관없이 동일한 것인지 여부를 판별한다.
그리고 판별부(140)는 S206단계의 판별 결과를 포함하는 판별 정보를 생성한다(S208). 여기서 상기 판별 정보는 2bit의 정보가 될 수 있다. 예를 들어 버전 업그레이드에 의해 새로 추가된 인스트럭션 및 데이터는 '00'으로, 순서 변경, 즉 얼라인된 인스트럭션 및 데이터는 '01'로 표현될 수 있다. 그리고 버전 업그레이드에 의해 구 버전 파일에서 삭제된 인스트럭션 및 데이터는 '00'으로 표현될 수 있으며, 버전 업그레이드에 상관없이 구 버전 파일과 신 버전 파일이 동일하게 사용되는 인스트럭션 및 데이터는 '10'으로 표현될 수 있다. 판별부(140)는 이러한 판별 정보를 각각의 함수별, 데이터 유닛별로, 그리고 해당 함수 및 데이터 유닛을 구성하는 인스트럭션별, 데이터별로 각각 생성한다.
도 3은 이러한 본 발명의 실시 예에 따라 인스트럭션별 판별 정보를 생성하는 예를 도시한 도면이다.
도 3을 참조하여 살펴보면, 도 3의 (a)는 구 버전 파일의 특정 함수를 구성하는 인스트럭션들을 도시하고 있으며, 도 3의 (b)는 상기 함수에 대응되는 신 버전 파일의 함수를 구성하는 인스트럭션들을 도시하고 있다. 그리고 도 3의 (c)는 본 발명의 실시 예에 따른 인스트럭션별 판별 정보 및 얼라인 정보를 보이고 있다.
우선 도 3의 (b)를 살펴보면, 인덱스 번호 '5'인 인스트럭션(350) 은 인덱스 번호 '6'으로, 인덱스 번호'6'인 인스트럭션(352)은 인덱스 번호 '5'로 얼라인된 것을 알 수 있다. 그리고 인덱스 번호 '9'인 인스트럭션(356)은 인덱스 번호'8'로 얼라인된 것을 알 수 있다. 그리고 인덱스 번호 '8'인 인스트럭션(354)과 인덱스 번호 'a'인 인스트럭션(358)은 신 버전 파일에서 새로 추가된 것임을 알 수 있다. 여기서 'AlignedIndex'의 값이 '-1'인 경우는 새로 추가된 인스트럭션임을 의미한다.
이에 따라 해당 함수의 인스트럭션별 판별 정보들을 도시하고 있는 도 3의 (c)를 살펴보면, 이러한 내용이 표시되어 있는 것을 알 수 있다. 즉, 얼라인된 인스트럭션 5번(350), 인스트럭션 6번(352)은 판별 정보('01')를 통해 각각 얼라인된 인스트럭션임이 표시된다. 그리고 이러한 판별 정보에 따라 인스트럭션 5번(350), 6번(352)에는 각각 얼라인된 인덱스 번호, 즉 얼라인 정보 '6', '5'가 생성된다.
이러한 판별 정보에 따라 구 버전 파일의 인스트럭션들은 버전 업그레이드를 통해 얼라인된다. 이에 따라 인스트럭션 5번(350)과 인스트럭션 6번(352)은 구 버전 파일에서 인덱스 번호 6번(302)과 인덱스 번호 5번(300)으로 순서가 변경된다.
또한 신 버전 파일에서 새로 추가된 인스트럭션 8번(354)은 새로 추가된 인스트럭션이다(판별정보 : 11). 따라서 인스트럭션 8번(354)은 인스트럭션 저장부(152)에 저장되고, 버전 업그레이드시에 구 버전 파일의 인덱스 번호 '8'에 새로 추가된다. 그리고 인스트럭션 9번(356)의 얼라인 정보 '8'에 의해 인스트럭션 9번(356)은 인스트럭션 8번(304)으로 순서가 변경 된다. 그리고 신 버전 파일에서 인스트럭션 a번(358)은 인스트럭션 저장부(152)에 저장되고 버전 업그레이드시에 구 버전 파일의 인덱스 번호 'a'에 새로 추가된다.
이에 따라 본 발명의 실시 예에 따른 델타 파일은, 새로 추가된 인스트럭션 또는 데이터, 그리고 변경된 순서에 대한 인덱스 정보만으로 구성되므로 그 크기가 크게 줄어들 수 있다.
또한, 공통 함수 및 공통 데이터 유닛들의 인스트럭션별, 데이터별 판별 정보가 생성되면, 판별부(140)는 상기 S204단계에서 식별된, 버전 업그레이드로 인해 새로 추가된 함수 및 데이터 유닛들에 대한 함수별, 데이터 유닛별 판별 정보를 생성한다(S208).
판별부(140)는 신 버전 파일에 새로 추가된 함수 및 데이터 유닛들은 '11'로 판별 정보에 표시할 수 있다. 그리고 구 버전 파일과 신 버전 파일에 공통적으로 사용되나, 그 내용이 변경된 함수 또는 데이터 유닛들은 '01'로 판별 정보에 표시할 수 있다. 여기서 내용이 변경이라는 것은 인스트럭션 및 데이터의 순서가 변경되거나, 새로운 인스트럭션 및 데이터가 추가된 것을 말한다. 여기서 판별부(140)는 각 함수 및 데이터 유닛들의 내용이 변경되었는지 여부를 판단하기 위해 다양한 방법을 사용할 수 있다.
예를 들어 각 함수 또는 데이터 유닛 별로, 해당 함수 또는 데이터 유닛을 구성하는 인스트럭션들의 판별 정보 또는 데이터들의 판별 정보를 대응되는 함수끼리 또는 대응되는 데이터 유닛끼리 비교함으로써 내용의 변경 여부를 판단할 수 있다. 또는 판별부(140)는 단순하게 대응되는 함수끼리 또는 대응되는 데이터 유닛끼리 그 크기를 비교함으로써 내용의 변경이 발생하였는지 여부를 판단할 수 있다.
그리고 판별부(140)는 버전 업그레이드로 인해 구 버전 파일에서 삭제된 함수 또는 데이터 유닛들은 '00'으로 판별 정보에 표시할 수 있다. 그리고 버전 업그레이드와 상관없이 구 버전 파일과 신 버전 파일에서 동일하게 사용되는 함수 또는 데이터 유닛들은 '10'으로 판별 정보에 표시할 수 있다.
한편, 인스트럭션별 판별 정보와 데이터별 판별 정보, 그리고 함수별 판별 정보와 데이터별 판별 정보가 생성되면, 판별부(140)는 이들 판별 정보들을 저장부(150)에 입력한다. 그리고 판별부(140)는 각 인스트럭션별, 데이터별 판별 정보를 조회하여 신 버전 파일에서 새로 추가된 인스트럭션들 및 데이터들을 저장부(150)에 입력한다. 그리고 판별부(140)는 판별 정보를 조회하여 순서가 변경된 인스트럭션들 및 데이터들에 대한 얼라인 정보들을 저장부(150)에 입력한다.
그러면 저장부(150)는 입력된 정보들을 각각 분류하여 저장한다(S210). 저장부(150)는 버퍼링부(130)로부터 입력되는 인스트럭션들과 데이터들 및, 판별부(140)로부터 입력되는 인스트럭션들과 데이터들을 인스트럭션 저장부(152)에 저장한다. 그리고 저장부(150)는 판별부(140)로부터 입력되는 인스트럭션별 판별 정보와 데이터별 판별 정보, 그리고 함수별 판별 정보와 데이터별 판별 정보를 판별 정보 저장부(154)에 저장한다. 그리고 저장부(150)는 판별부(140)로부터 입력되는 인스트럭션별, 데이터별 얼라인 정보들을 얼라인 정보 저장부(156)에 저장한다.
그러면 코드 섹션 생성부(162) 및 데이터 섹션 생성부(164)는 각각 델타 파일의 코드 섹션과 데이터 섹션을 생성한다(S212). 코드 섹션 생성부(162)는 저장부(150)에 저장된 인스트럭션들 및 함수별 판별 정보와 인스트럭션별 판별 정보, 그리고 순서가 변경된 인스트럭션들에 대한 얼라인 정보를 이용하여 델타 파일의 코드 섹션을 생성한다.
그리고 데이터 섹션 생성부(164)는 저장부(150)에 저장된 데이터들 및 데이터 유닛별 판별 정보와 데이터별 판별 정보, 그리고 순서가 변경된 데이터들에 대한 얼라인 정보를 이용하여 델타 파일의 데이터 섹션을 생성한다.
그리고 델타 파일 생성부(160)는 생성된 코드 섹션 및 데이터 섹션을 통합하여 델타 파일을 생성한다(S214). 그리고 생성된 델타 파일은 무선 네트워크를 통해 수신 단말에 전달된다. 그리고 수신 단말은 상기 델타 파일을 이용하여 펌웨어의 업그레이드를 수행한다.
도 4는 본 발명의 실시 예에 따른 델타 파일이 업그레이드 서버에서 수신 단말로 전송되는 예를 도시한 도면이다.
도 4를 참조하여 살펴보면 업그레이드 서버(400)는 델타 파일 생성 장치(400)를 통해 본 발명의 실시 예에 따른 델타 파일을 생성한다. 그리고 업그레이드 서버(400)는 생성된 델타 파일을 무선 네트워크(404)를 통해 수신 단말(406)로 전송한다. 그러면 수신 단말(406)은 본 발명의 실시 예에 따른 델타 파일을 이용하여 펌웨어를 업그레이드 한다.
도 5는 이러한 본 발명의 실시 예에 따른 델타 파일을 이용하여 펌웨어를 업그레이드하는 수신 단말의 구성을 도시한 도면이다.
도 5를 참조하여 살펴보면, 본 발명의 실시 예에 따라 펌웨어를 업그레이드 하는 수신 단말은, 제어부(500)와 상기 제어부(500)에 각각 연결되는 수신부(502), 추출부(504), 업그레이드부(514), 그리고 저장부(512)를 포함하여 구성된다.
여기서 수신부(502)는 무선 네트워크를 통해 본 발명의 실시 예에 따른 델타 파일을 수신한다. 그리고 수신된 델타 파일을 제어부(500)에 입력한다.
추출부(504)는 제어부(500)로부터 입력된 델타 파일로부터 인스트럭션 및 데이터를 포함하는 인스트럭션 정보들과 인스트럭션별, 데이터별 얼라인 정보들, 그리고 판별 정보들을 추출한다.
여기서 얼라인 정보들이라는 것은 버전 업그레이드로 인해 순서가 변경된 인스트럭션 및 데이터들의 변경된 순서에 대한 인덱스 번호가 될 수 있다. 그리고 판별 정보들은 구 버전 파일과 신 버전 파일의 함수 및 데이터 유닛들을 각각 비교한 함수별 판별 정보 및 데이터 유닛별 판별 정보를 포함한다. 그리고 구 버전 파일과 신 버전 파일의 대응되는 함수별 또는 데이터 유닛별로, 각 함수 또는 데이터 유닛을 구성하는 인스트럭션들 및 데이터들을 비교한 인스트럭션별 판별 정보 및 데이터별 판별 정보를 포함한다.
그리고 추출부(504)는 추출된 인스트럭션 정보들과 얼라인 정보들, 그리고 판별 정보들을 각각 인스트럭션 정보 저장부(506), 얼라인 정보 저장부(508), 그리고 판별 정보 저장부(510)에 저장한다. 그리고 제어부(500)가 요청하는 정보를 제어부(500)에 입력한다.
저장부(512)는 수신 단말의 업그레이드에 필요한 프로그램 및 버전 업그레이드의 대상이 되는 펌웨어 파일인 구 버전 파일을 저장한다. 그리고 제어부(500)의 제어에 따라 펌웨어의 업그레이드가 완료되면, 구 버전의 펌웨어 파일을 업그레이드된 펌웨어 파일로 대체한다.
업그레이드부(514)는 제어부(500)로부터 입력받은 구 버전 파일의 인덱싱을 수행한다. 이를 위해 업그레이드부(514)는 인덱싱부(516)를 포함한다. 그리고 인덱싱부(516)는 제어부(500)로부터 입력된 구 버전 파일을 각 함수별, 데이터 유닛별로, 그리고 각 함수를 구성하는 인스트럭션별 및 각 데이터 유닛을 구성하는 데이터별로 인덱싱을 수행한다.
그리고 업그레이드부(514)는 제어부(500)의 제어에 의해 새로 추가된 함수 및 데이터 유닛에 따른 인스트럭션들과 데이터들을 입력받는다. 그리고 업그레이드부(514)는 제어부(500)의 제어에 따라, 입력된 인스트럭션들 및 데이터들을 이용하여, 새로운 함수 및 새로운 데이터 유닛을 구 버전 파일에 추가한다.
그리고 업그레이드부(514)는 제어부(500)로부터 특정 함수 또는 데이터 유닛에 새로 추가된 인스트럭션 및 데이터들을 입력받는다. 그리고 업그레이드부(514)는 제어부(500)의 제어에 따라 지정된 함수 또는 데이터 유닛에 인스트럭션 또는 데이터를 추가한다. 그리고 업그레이드부(514)는 제어부(500)의 제어에 따라, 지정된 함수 또는 데이터 유닛을 구성하는 인스트럭션들 또는 데이터들을 얼라인한다.
제어부(500)는 수신부(502)를 통해 입력된 델타 파일을 추출부(504)에 입력하고, 추출부(504)를 제어하여 상기 델타 파일로부터 인스트럭션 정보와 얼라인 정보, 그리고 판별 정보들을 추출한다. 그리고 저장부(512)로부터 구 버전 파일을 로드하여 이를 업그레이드부(514)에 입력한다.
그리고 제어부(500)는 추출부(504)로부터 함수별 판별 정보 및 데이터 유닛 판별 정보를 로드하여 버전 업그레이드로 인해 새로 추가된 함수 또는 데이터 유닛을 식별한다. 그리고 제어부(500)는 새로 추가된 함수 또는 데이터 유닛에 해당되는 인스트럭션 및 데이터들을 추출부(504)에 요청한다. 그리고 제어부(500)는 추출부(504)로부터 출력되는 인스트럭션 및 데이터들을 업그레이드부(514)에 입력한다. 그리고 제어부(500)는 업그레이드부(514)를 제어하여 입력된 인스트럭션 및 데이터를 기반으로 새로운 함수 및 데이터 유닛을 생성하고 이를 구 버전 펌웨어 파일에 추가한다.
그리고 제어부(500)는 인스트럭션 판별 정보 또는 데이터별 판별 정보를 로드하여, 얼라인된 인스트럭션 또는 데이터가 포함된 함수와 데이터 유닛을 식별한다. 그리고 제어부(500)는 인스트럭션들의 얼라인 정보 또는 데이터들의 얼라인 정보를 추출부(504)에 요청한다. 그리고 제어부(500)는 추출부(504)로부터 출력되는 얼라인 정보들을 업그레이드부(514)에 입력한다. 그리고 제어부(500)는 업그레이드부(514)를 제어하여 얼라인 정보에 따라, 지정된 함수를 구성하는 인스트럭션들 또는 지정된 데이터 유닛을 구성하는 데이터들을 얼라인한다.
제어부(500)는 새로운 함수 및 데이터 유닛이 추가 및, 특정 함수들 또는 데이터 유닛들의 인스트럭션 또는 데이터의 순서가 변경된 펌웨어 파일을 업그레이드가 완료된 신 버전 펌웨어 파일로 저장부(512)에 입력한다. 그리고 제어부(500)는 저장부(512)를 제어하여 구 버전 펌웨어 파일을 신 버전 펌웨어 파일로 대체한다.
이에 따라 본 발명의 실시 예에 따른 수신 단말은 버전 업그레이드로 인한 펌웨어 파일간의 차이 표시를 포함하는 판별 정보와, 새로 추가된 인스트럭션과 데이터들 및, 순서가 변경된 인스트럭션과 데이터들의 얼라인 정보만으로 구성된 델타 파일로 펌웨어 업그레이드를 수행할 수 있다. 여기서 판별 정보는 버전 업그레이드로 인해 새로 추가 또는 변경된 함수 및 데이터 유닛을 표시한 정보와, 삭제된 함수 및 데이터 유닛을 표시한 정보를 말한다. 그리고 얼라인 정보는 순서가 변경된 인스트럭션 및 데이터들의 변경된 순서에 대한 인덱스 정보를 포함한다.
도 6은 본 발명의 실시 예에 따라 수신 단말이 델타 파일을 이용하여 펌웨어를 업그레이드하는 과정의 흐름을 도시한 도면이다.
도 6을 참조하여 살펴보면, 수신부(502)가 본 발명의 실시 예에 따른 델타 파일을 수신하면(S600), 수신부(502)는 수신된 델타 파일을 제어부(500)에 입력한다. 그러면 제어부(500)는 펌웨어 업그레이드 대상이 되는 파일을 저장부(512)에서 로드하여 이를 업그레이드부(514)로 입력한다(S602).
그리고 제어부(500)는 업그레이드부(514)를 제어하여 선택된 펌웨어 파일을 각 함수별로, 데이터 유닛별로 인덱싱한다. 또한 제어부(500)는 각 함수를 구성하는 인스트럭션별로, 그리고 각 데이터 유닛을 구성하는 데이터별로 선택된 펌웨어 파일의 인덱싱을 수행한다(S604). 그리고 제어부(500)는 수신된 델타 파일을 추출부(504)에 입력한다.
추출부(504)는 입력된 델타 파일로부터 인스트럭션 정보, 얼라인 정보 그리고 판별 정보를 추출한다(S606). 여기서 인스트럭션 정보는 델타 파일에 포함된 인스트럭션들 및 데이터들을 포함한다. 그리고 얼라인 정보들은 특정 인스트럭션들 및 데이터들의 변경된 순서에 대한 정보를 포함한다. 그리고 판별 정보는 각 함수나 인스트럭션별로, 또는 각 데이터 유닛이나 데이터별로 버전 업그레이드에 의해 새로 추가된 것인지, 변경된 것인지, 삭제된 것인지 또는 버전 업그레이드와 상관없이 동일한 것인지 여부를 표시하는 정보를 포함한다.
그리고 제어부(500)는 추출부(504)로부터 함수별 판별 정보들과 데이터 유닛별 판별 정보들을 로드하고 이를 조회한다(S608). 그리고 제어부(500)는 버전 업그레이드로 인해 구 버전 펌웨어 파일에 새로 추가된 함수 및 데이터 유닛들을 식별한다. 그리고 제어부(500)는 추출부(504)로부터 새로 추가된 함수 및 데이터 유닛들에 해당되는 인스트럭션 및 데이터들을 로드하고, 이를 업그레이드부(514)에 입력한다. 그러면 업그레이드부(514)는 입력된 인스트럭션 및 데이터들을 이용하여 새로운 함수 및 데이터 유닛을 생성하고 이를 구 버전 펌웨어 파일에 추가한다(S610).
그리고 제어부(500)는 인스트럭션별 판별 정보들 및 데이터별 판별 정보들을 추출부(504)로부터 로드한다. 그리고 제어부(500)는 추출부(504)로부터 버전 업그레이드로 인해 특정 함수 또는 데이터 유닛에 새로 추가된 인스트럭션 및 데이터들을 로드한다. 그리고 제어부(500)는 추출부(504)로부터 인스트럭션들 또는 데이터들의 얼라인 정보들을 로드한다.
그리고 제어부(500)는 판별 정보를 통해 내용이 변경된 함수 및 데이터 유닛을 식별한다. 그리고 제어부(500)는 내용이 변경된 함수 또는 데이터 유닛에, 인스트럭션 또는 데이터의 인덱스 번호에 따른 순서로 새로운 인스트럭션 또는 데이터를 추가한다. 또는 제어부(500)는 내용이 변경된 함수 및 데이터 유닛의 인스트럭션들 및 데이터들을 인덱스 번호에 따른 순서로 얼라인 정보에 따라 순서를 재배열(얼라인)한다(S612).
그리고 제어부(500)는 모든 함수 및 데이터 유닛에 대한 인스트럭션 또는 데이터의 추가나 얼라인이 종료되면 펌웨어의 업그레이드가 이루어진 것으로 판단한다. 그리고 제어부(500)는 업그레이드된 펌웨어 파일을 저장부(512)에 입력한다. 그러면 저장부(512)는 현재 저장된 펌웨어 파일 즉 구 버전 파일을 제어부(500)로부터 입력된 펌웨어 파일로 대체한다(S614). 이에 따라 수신 단말의 펌웨어는 새로운 버전의 펌웨어 파일로 업그레이드된다.
한편 상술한 본 발명의 설명에서는 구체적인 실시 예에 관해 설명하였으나, 여러 가지 변형이 본 발명의 범위에서 벗어나지 않고 실시할 수 있다. 특히 본 발명의 실시 예에서는 구 버전 파일과 신 버전 파일의 함수 및 데이터 유닛을 비교하여 버전 업그레이드로 인해 삭제된 함수 또는 데이터 유닛을 판별하는 것을 식별하고 이를 판별 정보에 포함시키는 것을 언급하였다. 따라서 수신 단말의 펌웨어 업그레이드 시에 수신 단말의 제어부가 위 판별 정보를 조회하면 구버전 파일에서 삭제될 함수 또는 데이터 유닛을 식별할 수 있는 것은 당연하고, 또한 이들을 삭제할 수 있음은 당연하다.
또한 본 발명에서는 판별 정보에 구 버전 파일과 신 버전 파일에서 공통으로 사용하는 함수 또는 데이터 유닛에서도 버전 업그레이드로 인해 삭제될 인스트럭션 또는 데이터에 대한 정보가 포함된다. 따라서 본 발명의 상술한 설명에서는 이에 대해 자세히 언급하지는 않았으나, 인스트럭션별 또는 데이터별로 구버전 파일에서 삭제될 것들을 판별하고 이를 삭제할 수 있음은 물론이다.
그러므로 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서 본 발명에 개시된 실시 예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시 예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석 되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100 : 입력부 110 : 인덱싱부
112 : 제1 인덱싱부 114 : 제2 인덱싱부
120 : 식별부 122 : 함수 식별부
124 : 데이터 유닛 식별부 130 : 버퍼링부
132 : 함수 버퍼 134 : 데이터 유닛 버퍼
140 : 판별부 150 : 저장부
152 : 인스트럭션 저장부 154 : 판별 정보 저장부
156 : 얼라인 정보 저장부 160 : 델타 파일 생성부
162 : 코드 섹션 생성부 164 : 데이터 섹션 생성부

Claims (16)

  1. 구 버전 펌웨어 파일과 신 버전 펌웨어 파일의 각 함수들 및 각 함수를 구성하는 인스트럭션들을 인덱싱하고, 상기 구 버전 펌웨어 파일과 신 버전 펌웨어 파일의 각 데이터 유닛 및 각 데이터 유닛을 구성하는 데이터들을 인덱싱하는 인덱싱부;
    구 버전 펌웨어 파일과 신 버전 펌웨어 파일로부터 버전 업그레이드에 따라 새로 추가된 함수 데이터 유닛을 식별하는 식별부;
    공통으로 사용하는 함수 및 데이터 유닛들을, 상기 인덱싱된 인스트럭션 또는 인덱싱된 데이터별로 비교하여, 변경된 인스트럭션 또는 데이터를 판별하고, 그 판별 결과를 포함하는 변경 정보를 생성하는 판별부; 및
    상기 변경 정보와 상기 새로 추가된 함수 및 데이터 유닛으로 델타 파일을 생성하는 델타 파일 생성부를 포함하는 것을 특징으로 하는 델타 파일 생성 장치.
  2. 제1항에 있어서, 상기 판별부는,
    상기 공통으로 사용하는 함수 및 데이터 유닛들을, 상기 인덱싱된 인스트럭션 또는 인덱싱된 데이터별로 비교하여, 새로 추가된 것, 삭제된 것, 그 순서가 변경된 것, 또는 버전 업그레이드 전후에 동일한 것 중 어느 하나로 판별하고,
    각 함수를 구성하는 인스트럭션 별 및, 각 데이터 유닛을 구성하는 데이터 별로 상기 판별 결과를 나타내는 판별 정보를 생성하는 것을 특징으로 하는 델타 파일 생성 장치.
  3. 삭제
  4. 삭제
  5. 제1항에 있어서, 상기 식별부는,
    상기 구 버전 펌웨어 파일과 신 버전 펌웨어 파일의 심볼 리스트로부터 함수 리스트 및 데이터 유닛 리스트를 추출하고, 추출된 리스트들을 각각 비교하여 버전 업그레이드를 통해 새로 추가된 함수 및 데이터 유닛을 식별하는 것을 특징으로 하는 델타 파일 생성 장치.
  6. 제5항에 있어서, 상기 판별부는,
    상기 구 버전 펌웨어 파일과 신 버전 펌웨어 파일의 함수 및 데이터 유닛의 크기를 비교하거나, 상기 함수 또는 데이터 유닛을 구성하는 인스트럭션 및 데이터들을 비교하여 내용이 변경되었는지 여부를 판별하는 것을 특징으로 하는 델타 파일 생성 장치.
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 새로운 함수와 인스트럭션 및 데이터 유닛과 데이터들, 그리고 인스트럭션 및 데이터들의 얼라인(align) 정보와, 버전 업그레이드로 인해 변경된 인스트럭션 및 데이터들을 판별하기 위한 판별 정보를 포함하는 델타 파일을 이용하여 펌웨어를 업그레이드하는 수신 단말에 있어서,
    상기 델타 파일을 수신하는 수신부;
    수신된 델타 파일로부터 상기 얼라인 정보와 상기 판별 정보, 그리고 상기 새로운 함수와 인스트럭션 및 데이터 유닛과 데이터들을 추출하는 추출부;
    상기 판별 정보에 따라 구 버전 펌웨어 파일에 상기 새로운 함수 및 데이터 유닛들을 추가하고, 상기 판별 정보에 따른 함수 및 데이터 유닛에 인스트럭션 또는 데이터들을 추가 및 상기 얼라인 정보에 따라 인스트럭션 또는 데이터들의 얼라인을 수행하는 업그레이드부; 및,
    상기 구 버전 펌웨어 파일을 상기 업그레이드부에 입력하고, 업그레이드가 완료된 파일로 상기 구 버전 펌웨어 파일을 대체하는 제어부를 포함하며,
    상기 판별 정보는,
    구 버전 펌웨어 파일과 신 버전 펌웨어 파일에서 공통으로 사용하는 함수를 구성하는 인스트럭션들 또는 상기 구 버전 펌웨어 파일과 신 버전 펌웨어 파일에서 공통으로 사용하는 데이터 유닛을 구성하는 데이터들 각각별로, 새로 추가된 것, 삭제된 것, 그 순서가 변경된 것, 또는 버전 업그레이드 전후에 동일한 것 중 어느 하나로 판별한 정보이며,
    상기 인스트럭션 및 데이터들의 얼라인 정보는,
    상기 공통으로 사용하는 함수 또는 데이터 유닛들을 구성하는 인스트럭션들 또는 데이터들 중 상기 버전 업그레이드에 따라 순서가 변경된 인스트럭션 또는 데이터들의 변경된 순서에 대응하는 인덱스 정보임을 특징으로 하는 수신 단말.
  13. 제12항에 있어서, 상기 업그레이드부는,
    상기 삭제된 함수 또는 인스트럭션이나 데이터 유닛 또는 데이터를 상기 판별 정보에 따라 판별하여, 상기 구 버전 펌웨어 파일에서 삭제하는 것을 특징으로 하는 수신 단말.
  14. 삭제
  15. 삭제
  16. 삭제
KR1020130086973A 2013-07-23 2013-07-23 델타 파일을 생성하는 장치 및 방법과, 그 델타 파일을 이용하여 펌웨어를 업그레이드하는 수신 단말 및 그 업그레이드 방법 KR102124803B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130086973A KR102124803B1 (ko) 2013-07-23 2013-07-23 델타 파일을 생성하는 장치 및 방법과, 그 델타 파일을 이용하여 펌웨어를 업그레이드하는 수신 단말 및 그 업그레이드 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130086973A KR102124803B1 (ko) 2013-07-23 2013-07-23 델타 파일을 생성하는 장치 및 방법과, 그 델타 파일을 이용하여 펌웨어를 업그레이드하는 수신 단말 및 그 업그레이드 방법

Publications (2)

Publication Number Publication Date
KR20150011701A KR20150011701A (ko) 2015-02-02
KR102124803B1 true KR102124803B1 (ko) 2020-06-22

Family

ID=52488044

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130086973A KR102124803B1 (ko) 2013-07-23 2013-07-23 델타 파일을 생성하는 장치 및 방법과, 그 델타 파일을 이용하여 펌웨어를 업그레이드하는 수신 단말 및 그 업그레이드 방법

Country Status (1)

Country Link
KR (1) KR102124803B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200089490A (ko) 2019-01-17 2020-07-27 삼성전자주식회사 펌웨어 업데이트 방법 및 이를 수행하는 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009146404A (ja) * 2007-12-14 2009-07-02 Iti Scotland Ltd 動的コード更新
KR101132875B1 (ko) 2003-06-20 2012-04-03 이노패스 소프트웨어, 아이엔시. 차이 파일 발생에 사용되는 소프트웨어 처리 방법 및 장치

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890464B2 (en) * 2003-06-20 2011-02-15 Innopath Software, Inc. Processing software images and generating difference files
KR100520192B1 (ko) * 2003-10-28 2005-10-10 주식회사 팬택 이동통신단말기의 소프트웨어 변경방법
KR20120069123A (ko) * 2010-12-20 2012-06-28 삼성전자주식회사 포타 서비스 제공 방법 및 시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101132875B1 (ko) 2003-06-20 2012-04-03 이노패스 소프트웨어, 아이엔시. 차이 파일 발생에 사용되는 소프트웨어 처리 방법 및 장치
JP2009146404A (ja) * 2007-12-14 2009-07-02 Iti Scotland Ltd 動的コード更新

Also Published As

Publication number Publication date
KR20150011701A (ko) 2015-02-02

Similar Documents

Publication Publication Date Title
US9646030B2 (en) Computer-readable medium storing program and version control method
US8719237B2 (en) Method and apparatus for deleting duplicate data
US10887171B2 (en) Routing configuration method of view files, storage medium, terminal device and apparatus
US10102217B2 (en) Non-transitory computer-readable recording medium having stored therein data dividing program, data dividing apparatus, and data dividing method
CN108536745B (zh) 基于Shell的数据表提取方法、终端、设备及存储介质
CN105893075A (zh) 应用程序的更新方法及装置
CN104820676B (zh) 一种判断版本号大小的方法及装置
CN106919624B (zh) 提高网页加载速度的方法及装置
CN103473076A (zh) 一种代码版本的发布方法及系统
CN104036187A (zh) 计算机病毒类型确定方法及其系统
KR101520671B1 (ko) 실행코드 유사도 분석 시스템 및 방법
US9971793B2 (en) Database management system and database management method
US20160154851A1 (en) Computing device, storage medium, and data search method
CN109564613B (zh) 签名创建设备、签名创建方法、记录签名创建程序的记录介质、以及软件确定系统
CN111984666B (zh) 数据库访问方法、装置、计算机可读存储介质和计算机设备
JP4960417B2 (ja) 可変長のデータ断片の開始・終了オフセットを決定する方法及び装置
US9465694B2 (en) Method and apparatus for recovering partition based on file system metadata
KR101525984B1 (ko) 파일 이름을 규칙에 따라 설정하는 문서 관리 장치 및 방법
US20080196009A1 (en) Apparatus and method for componentizing legacy system
US9213759B2 (en) System, apparatus, and method for executing a query including boolean and conditional expressions
KR101403356B1 (ko) 데이터 압축 장치, 데이터 압축 방법 및 그 방법을 위한 컴퓨터 판독 가능한 기록 매체
KR102124803B1 (ko) 델타 파일을 생성하는 장치 및 방법과, 그 델타 파일을 이용하여 펌웨어를 업그레이드하는 수신 단말 및 그 업그레이드 방법
JP2009093556A (ja) インデクス構築方法、文書検索装置及びインデクス構築プログラム
KR20150123603A (ko) 데이터베이스 관리 방법 및 데이터베이스 관리 시스템
CN104978355B (zh) 一种cpio文件的操作方法及装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant