[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR100849301B1 - Apparatus and method for efficient generation of delta files for over-the-air upgrades in a wireless network - Google Patents

Apparatus and method for efficient generation of delta files for over-the-air upgrades in a wireless network Download PDF

Info

Publication number
KR100849301B1
KR100849301B1 KR1020067024957A KR20067024957A KR100849301B1 KR 100849301 B1 KR100849301 B1 KR 100849301B1 KR 1020067024957 A KR1020067024957 A KR 1020067024957A KR 20067024957 A KR20067024957 A KR 20067024957A KR 100849301 B1 KR100849301 B1 KR 100849301B1
Authority
KR
South Korea
Prior art keywords
file
delta
segments
binary file
upgraded
Prior art date
Application number
KR1020067024957A
Other languages
Korean (ko)
Other versions
KR20070018093A (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
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020067024957A priority Critical patent/KR100849301B1/en
Publication of KR20070018093A publication Critical patent/KR20070018093A/en
Application granted granted Critical
Publication of KR100849301B1 publication Critical patent/KR100849301B1/en

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W24/00Supervisory, monitoring or testing arrangements
    • H04W24/02Arrangements for optimising operational condition

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

본 발명은 원본 바이너리 파일과 업그레이드된 바이너리 파일 사이의 차이들을 기반으로 하여 복합 델타 파일을 생성하는 방법 및 장치에 관한 것이다. 그러한 복합 델타 파일 생성 방법은 1) 원본 바이너리 파일을 크기 N인 다수의 제1 세그먼트들로 세그먼트화하는 단계; 2) 업그레이드된 바이너리 파일을 크기 N인 다수의 제2 세그먼트들로 세그먼트화하는 단계; 3) 원본 바이너리 파일로부터 나온 제1 세그먼트와 업그레이드된 바이너리 파일로부터 나온 제1 세그먼트 사이의 제1 세트의 차이들을 검출하는 단계; 및 4) 검출된 제1 세트의 차이들로부터 제1 델타 파일을 생성하는 단계를 포함한다. 그 방법은 4) 원본 바이너리 파일로부터 나온 제2 세그먼트와 업그레이드된 바이너리 파일로부터 나온 제2 세그먼트 사이의 제2 세트의 차이들을 검출하는 단계; 및 5) 검출된 제2 세트의 차이들로부터 제2 델타 파일을 생성하는 단계를 더 포함한다. 제1 및 제2 델타 파일들을 결합하여 복합 델타 파일을 생성한다.The present invention relates to a method and apparatus for generating a composite delta file based on differences between an original binary file and an upgraded binary file. Such a compound delta file creation method comprises the steps of: 1) segmenting an original binary file into a plurality of first segments of size N; 2) segmenting the upgraded binary file into a plurality of second segments of size N; 3) detecting a first set of differences between the first segment from the original binary file and the first segment from the upgraded binary file; And 4) generating a first delta file from the detected first set of differences. The method includes 4) detecting a second set of differences between the second segment from the original binary file and the second segment from the upgraded binary file; And 5) generating a second delta file from the detected second set of differences. Combine the first and second delta files to produce a composite delta file.

오버-더-에어 업그레이드, 델타 파일, 원본 바이너리 파일, 업그레이드된 바이너리 파일, 세그먼트, 세그먼트화 링커, 세그먼트화 델타 파일 생성기 Over-the-Air Upgrade, Delta Files, Original Binary Files, Upgraded Binary Files, Segments, Segmented Linkers, Segmented Delta Files Generator

Description

무선 네트워크에서의 오버-더-에어 업그레이드용 델타 파일의 효율적 생성 장치 및 방법{APPARATUS AND METHOD FOR EFFICIENT GENERATION OF DELTA FILES FOR OVER-THE-AIR UPGRADES IN A WIRELESS NETWORK}EFFECTIVE GENERATION AND METHOD FOR EFFECTIVE DELTA FILE FOR OVER- THE-AIR UPGRADE IN WIRELESS NETWORK

본 발명은 전반적으로 무선 통신에 관한 것으로, 좀더 상세하게는 무선 이동국의 오버-더-에어 업그레이드용 델타 파일을 효율적으로 생성하는 기법에 관한 것이다.The present invention relates generally to wireless communications, and more particularly to a technique for efficiently generating a delta file for over-the-air upgrade of a wireless mobile station.

무선 서비스 공급자와 무선 장비 제조자는 무선 장비와 서비스를 가능한 한 편의적이고 사용자 친화적이며 적정 가격의 것으로 되도록 하려고 부단히 노력하고 있다. 그러한 노력들 중의 중요한 한 가지 양태는 휴대 전화, 무선 개인 디지털 보조 기기(PDA), 무선 포켓용 컴퓨터, 양방향 페이저 등과 같은 무선 이동국은 물론고정 무선 단말의 오버-더-에어(over-the-air)(OTA) 업그레이드를 포함한다. 때로 펌웨어 오버-더-에어(FOTA) 업그레이드라고 불리는 오버-더-에어(OTA) 업그레이드는 이동국 사용자로 하여금 패치들을 포함한 업그레이드된 소프트웨어, 버그 픽스(bug fix), 및 무선 이동국에 저장된, 운영 시스템을 포함한 소프트웨어의 신규 버전을 다운로드 받아 설치할 수 있게끔 하는 상대적으로 새로운 절차이다.Wireless service providers and wireless equipment manufacturers are constantly working to make wireless equipment and services as convenient, user-friendly and affordable as possible. One important aspect of such efforts is the over-the-air of fixed wireless terminals as well as wireless mobile stations such as mobile phones, wireless personal digital assistants (PDAs), wireless handheld computers, two-way pagers, and the like. (OTA) Includes upgrades. Over-the-air (OTA) upgrades, sometimes called firmware over-the-air (FOTA) upgrades, allow mobile station users to upgrade operating systems stored in wireless mobile stations, including bug fixes, and upgraded software. This is a relatively new procedure that allows you to download and install a new version of the included software.

소프트웨어 업그레이드는 통상적으로 델타 파일의 형태로 이동국에 전달된다. 이동국은 원본 파일(또는 옛 파일)의 사본을 포함하고 있으므로, 그 원본 파일을 업그레이드된 파일(또는 새 파일)로 대체하는 것이 바람직하다. 그러나 많은 소프트웨어 프로그램들과 기타의 파일들이 매우 커서 전체의 업그레이드된 파일을 무선으로 전달하는 것이 설사 불가능하지 않다 할지라도 일반적으로는 비실용적이다. 그러한 문제점을 극복하기 위해, OTA 업그레이드 동작은 흔히 델타 파일을 사용한다. 그러한 델타 파일은 원본 파일과 업그레이드된 파일 사이의 차이들을 검출함으로써 생성된다. 이어서, 검출된 차이들을 사용하여 델타 파일을 생성하는데, 그 델타 파일은 원본 파일을 업그레이드된 파일로 변환하는데 사용될 수 있는 데이터와 명령들을 포함한다. 델타 파일을 무선 이동국에 전달할 때에, 델타 파일 내의 명령들이 실행되고, 델타 파일로부터 나온 데이터가 원본 파일을 수정(또는 패치)하는데 사용되며, 그럼으로써 이동국에서 원본 파일을 업그레이드된 파일로 변환하게 된다. 그러한 방법의 장점은 델타 파일이 전형적으로 원본 파일과 업그레이드된 파일의 그 어느 것보다도 훨씬 더 작다는 것이다.Software upgrades are typically delivered to mobile stations in the form of delta files. Since the mobile station contains a copy of the original file (or old file), it is desirable to replace the original file with the upgraded file (or new file). However, many software programs and other files are so large that they are generally impractical, even if it is not impossible to deliver the entire upgraded file over the air. To overcome that problem, OTA upgrade operations often use delta files. Such delta files are created by detecting differences between the original file and the upgraded file. The detected differences are then used to generate a delta file, which contains data and instructions that can be used to convert the original file into an upgraded file. When delivering a delta file to a wireless mobile station, instructions in the delta file are executed and the data from the delta file is used to modify (or patch) the original file, thereby converting the original file into an upgraded file at the mobile station. The advantage of such a method is that the delta file is typically much smaller than either the original file or the upgraded file.

델타 파일을 생성하는 많은 방법들이 존재한다. 하지만, 그 각각의 방법은 하나 이상의 심각한 단점들을 겪고 있다. Reichenberger에 의해 제안된, "그리디(greedy)" 알고리즘으로도 알려진 통상적인 델타 파일 생성 알고리즘은 이론적으로 가능한 최소의 크기인 델타 파일들을 생성하는데 적합하다. 하지만, 그러한 그리디 알고리즘은 델타 파일을 생성하는데 소요되는 시간 때문에 그 크기가 4메가바 이트(4Mb)보다 더 큰 어떠한 파일에도 사실상 사용될 수 없다. 그리디 알고리즘은 O(n2) 메모리와 실행 시간을 필요로 하는데, 여기서 n은 옛 파일과 새 파일의 합산 길이이다. n의 값이 큰 경우에는, 델타 파일의 생성을 완료하는데 여러 시간 또는 심지어 여러 날이 소요될 수 있다.There are many ways to generate delta files. However, each of these methods suffers from one or more serious disadvantages. The conventional delta file generation algorithm, also known as the "greedy" algorithm, proposed by Reichenberger is suitable for generating delta files of the smallest possible size theoretically. However, such a greedy algorithm cannot be used for virtually any file whose size is larger than 4 megabytes (4 Mb) because of the time it takes to create a delta file. The greedy algorithm requires O (n 2 ) memory and execution time, where n is the sum of the old and new files. If the value of n is large, it may take several hours or even days to complete the creation of the delta file.

또 다른 통상적인 델타 파일 생성 알고리즘은 Josh MacDonald에 의해 소개된 x델타이다. x델타 알고리즘은 선형 시간으로 실행되지만, 델타 파일 크기가 그리디 알고리즘보다 훨씬 더 크다. 그것은 무선 적용에 있어 문제점이 되는데, 왜냐하면 무선 서비스 공급자가 델타 파일 크기에 제한을 가할 수 있기 때문이다. 또한, 이동국에서 실행되는 델타 파일 적용 소프트웨어(예컨대, "패치 클라이언트")가 산만한 플래시 메모리 섹터 기록 패턴을 가지게 될 것이다. 그것은 패치 적용 시간의 증가로 귀결된다. 무선 서비스 공급자는 일반적으로 패치 적용 시간에도 엄격한 제한을 가한다(예컨대, 10분 미만). 산만한 플래시 메모리 섹터 기록 동작에 따른 부가의 문제점은 결과적으로 물리적 플래시 메모리 부분에 마모가 생기게 된다는 것이다. 주지된 바와 같이, 플래시 메모리는 제한된 삭제-기록 사이클을 갖는다(예컨대, 약 10,000).Another common delta file generation algorithm is the x delta introduced by Josh MacDonald. The x delta algorithm runs in linear time, but the delta file size is much larger than the greedy algorithm. It is a problem with wireless applications because wireless service providers may place restrictions on the delta file size. In addition, the delta file application software (eg, "patch client") running in the mobile station will have a distracting flash memory sector write pattern. It results in an increase in patch application time. Wireless service providers generally impose strict limits on patch application time (eg, less than 10 minutes). An additional problem with distracting flash memory sector write operations is that the wear of the physical flash memory portion will result. As noted, flash memory has a limited erase-write cycle (eg, about 10,000).

마지막으로, x델타 명령은 원본 파일로부터 업그레이드된 파일의 재구성이 제위치에서 일어나지 않음을 가정한다. 업그레이드된 파일은 옛 파일과는 별개이자 구별되는 것으로 가정된다. 재구성의 종료 시에, 옛 파일이 삭제되어 업그레이드된 파일만이 남게 된다. 따라서 업그레이드된 파일을 생성하는 동안, 이미지 파일의 2 배의 크기인 플래시 메모리 크기가 필요하다.Finally, the xdelta command assumes that reconstruction of the upgraded file from the original file does not occur in place. The upgraded file is assumed to be separate and distinct from the old file. At the end of the reconstruction, the old file is deleted, leaving only the upgraded file. Therefore, while creating an upgraded file, you need a flash memory size that is twice the size of an image file.

Kiem Phong Vo에 의해 제안된 vcdiff는 x델타 알고리즘과 유사한 또 다른 선형 시간 알고리즘이다. 그 결과, vcdiff 알고리즘은 x델타 알고리즘에 해를 주는 단점들과 유사한 단점들을 겪는다. 끝으로, Andrew Tridgell에 의해 소개된 rsync 알고리즘은 클라이언트와 서버 사이에 교환되는 트래픽의 양을 최소화시키도록 설계되어 있다. 하지만, rsync 알고리즘은 그 이외의 어느 것도 최적화시키지 못한다. 따라서 펌웨어 오버-더-에어(FOTA) 적용에 그것을 사용하는 것은 매우 제한적이다.The vcdiff proposed by Kiem Phong Vo is another linear time algorithm similar to the x delta algorithm. As a result, the vcdiff algorithm suffers from similar drawbacks that harm the x delta algorithm. Finally, the rsync algorithm introduced by Andrew Tridgell is designed to minimize the amount of traffic exchanged between client and server. However, the rsync algorithm does not optimize anything else. Therefore, its use in firmware over-the-air (FOTA) applications is very limited.

또한, 델타 파일을 생성하는 선행 기술의 알고리즘들은 통상의 링커 프로그램들이 원본 바이너리 파일과 업그레이드된 바이너리 파일을 생성하고, 그들로부터 델타 파일들을 생성하는 방식으로 인한 불리함 갖고 있다. 링커는 목적 파일들을 취하여 실행 가능 파일을 생성한다. 좀더 구체적으로, 링커는 메모리 맵 입력 파일로부터 하나 이상의 목적 파일들, 라이브러리들, 및 주소 상세들을 입력으로서 취하여 실행에 적합한 출력 파일을 생성한다. 하지만, 통상의 링커들에서는, 실행 가능 출력이 모놀리식(monolithic) 속성을 갖는다. 실행 가능 출력은 함수(function)들, 변수들 등의 결정적 순서화(deterministic ordering)를 갖지 못한다. 그러한 세부 항목들은 링커까지 완전히 방치된다.Also, prior art algorithms for generating delta files have disadvantages due to the way that conventional linker programs generate original binary files and upgraded binary files, and generate delta files from them. The linker takes the object files and creates an executable file. More specifically, the linker takes as input one or more object files, libraries, and address details from a memory map input file to produce an output file suitable for execution. However, in typical linkers, the executable output has a monolithic attribute. Executable output does not have deterministic ordering of functions, variables, etc. Such details are left completely up to the linker.

현재의 링커들은 목적 파일들을 선택함에 있어 전혀 순서를 갖지 않는다. 더욱이, 판독-기록 데이터("RW 데이터")가 모이는 순서도 정해져 있지 않다(즉, 랜덤임). ARM 마이크로프로세서 명령 세트와 같은 명령 세트들의 고유 속성으로 인해, 그들 명령에 대한 주소 참조들이 변경될 경우에 분기명령 인코딩, 점프 명령 인코딩, 및 함수(function) 호출 명령 인코딩이 변경된다. 새로운 소프트웨어 모듈들이 파일에 부가되거나 파일로부터 삭제될 경우(버그 픽스 등으로 인해), 실행 가능 출력은 점프 명령, 분기 명령, 및 함수(function) 호출 명령에 변경을 가하게 된다.Current linkers have no order in selecting object files. Moreover, the order in which the read-write data ("RW data") are collected is also not defined (ie, random). Due to the inherent nature of instruction sets, such as the ARM microprocessor instruction set, branch instruction encoding, jump instruction encoding, and function call instruction encoding change when the address references to those instructions change. When new software modules are added to or deleted from the file (due to bug fixes, etc.), the executable output changes the jump instruction, branch instruction, and function call instruction.

그러한 변경들은 인트라 모듈(intra-module) 참조로 인해 다시 다른 모듈들로 연속된다. 결과적으로, 그러한 연속되는 변경들은 전혀 다른 바이너리들(원본 바이너리 파일과 업그레이드된 바이너리 파일)을 생기게 한다. 그것은 원본 바이너리 파일과 업그레이드된 바이너리 파일 사이에 생성되는 델타 파일의 크기를 매우 커지게 한다. 따라서 기존의 링커들은 소프트웨어 코드에서의 참조의 공간 지역성(spatial locality)을 그대로 유지하지 않을 뿐만 아니라, 실제로 변경들을 연속시킨다. 그리하여, 소프트웨어에서의 상대적으로 작은 변경들이 실행 가능 출력에서의 큰 변경들로 귀결되게 된다. 그러한 특성들은 FOTA 적용을 위한 델타 파일들을 생성하는데 매우 부적당하다. Such changes are continued back to other modules due to the intra-module reference. As a result, such successive changes result in completely different binaries (original binary file and upgraded binary file). It makes the delta file generated between the original binary file and the upgraded binary file very large. Thus, existing linkers not only maintain the spatial locality of the references in the software code, but also actually continually change the changes. Thus, relatively small changes in the software result in large changes in the executable output. Such properties are very inadequate for generating delta files for FOTA applications.

따라서 당해 기술 분야에서는, 무선 이동국의 오버-더-에어 업그레이드를 수행하기 위한 델타 파일을 생성하는 개선된 장치 및 방법이 요구되고 있다. 특히, 델타 파일의 크기와 델타 파일을 생성하는데 소용되는 시간 사이의 최적의 균형 맞춤을 제공하는 델타 파일 생성 방법이 요구되고 있다. 좀더 구체적으로, 소프트웨어 파일에서의 작은 변경들이 최종의 실행 가능 출력에서의 큰 변경들로 연속되는 것을 방지하는 개선된 링커가 요구되고 있다.Accordingly, there is a need in the art for an improved apparatus and method for generating delta files for performing over-the-air upgrades of wireless mobile stations. In particular, there is a need for a delta file generation method that provides an optimal balance between the size of the delta file and the time spent generating the delta file. More specifically, there is a need for an improved linker that prevents small changes in the software file from continuing to large changes in the final executable output.

본 발명은 업그레이드된 파일과 원본 파일의 세그먼트들로부터 거의 선형 시간으로 델타 파일들을 생성하는 개선된 알고리즘을 제공한다. 그러한 알고리즘은 바이너리 코드(목적 코드)에 존재하는 참조의 공간 지역성도 이용한다. 또한, 본 발명은 그리디 파일(또는 또 다른 델타 알고리즘)을 기반으로 하여 선형 시간 및 공간으로 실행될 수 있다. 아울러, 본 발명은 다른 선행 기술의 알고리즘들에 비해 플래시 메모리 기록 동작들의 수를 줄이는 델타 파일들을 생성한다.The present invention provides an improved algorithm for generating delta files from the upgraded file and segments of the original file in near linear time. Such algorithms also take advantage of the spatial locality of references that exist in binary code (object code). In addition, the present invention can be implemented in linear time and space based on a greedy file (or another delta algorithm). In addition, the present invention produces delta files that reduce the number of flash memory write operations compared to other prior art algorithms.

또한, 본 발명은 목적 코드에서의 참조의 공간 지역성을 이용하여 더 좋은 실행 가능 출력을 내는 개선된 링커를 제공한다. 그러한 개선된 링커는 향후의 소프트웨어 확장을 수용하기 위해 목적 코드들(즉, 모듈들, 함수들) 사이에 공간들을 자동으로 예비 할당한다. 또한, 그 개선된 링커는 이전 실행 가능 출력(즉, 원본 바이너리 파일)을 분석하여 함수들과 변수들의 주소 할당을 그대로 유지하고, 그럼으로써 2개의 순차적 실행 가능 파일들 사이의 변경들을 최소화시킨다.The present invention also provides an improved linker that uses spatial locality of references in the object code to produce better executable output. Such an improved linker automatically preallocates spaces between object codes (ie modules, functions) to accommodate future software extensions. The improved linker also analyzes previous executable output (ie, the original binary file) to preserve the address assignments of functions and variables, thereby minimizing changes between two sequential executable files.

전술된 선행 기술의 결함들을 다루기 위해, 본 발명은 원본 파일과 업그레이드된 파일 사이의 차이들을 기반으로 하여 복합 델타 파일을 생성하는 방법을 제공하는 것을 그 주목적으로 한다. 본 발명의 바람직한 실시예에 따르면, 그러한 복합 델타 파일 생성 방법은 1) 원본 바이너리 파일을 크기 N인 다수의 제1 세그먼트들로 세그먼트화하는 단계; 2) 업그레이드된 바이너리 파일을 크기 N인 다수의 제2 세그먼트들로 세그먼트화하는 단계; 3) 원본 바이너리 파일로부터 나온 제1 세그먼트와 업그레이드된 바이너리 파일로부터 나온 제1 세그먼트 사이의 제1 세트의 차이들을 검출하는 단계; 및 4) 검출된 제1 세트의 차이들로부터 제1 델타 파일을 생성하는 단계를 포함한다.In order to address the above-mentioned deficiencies of the prior art, the present invention primarily aims to provide a method for generating a composite delta file based on differences between the original file and the upgraded file. According to a preferred embodiment of the present invention, such a compound delta file creation method comprises the steps of: 1) segmenting an original binary file into a plurality of first segments of size N; 2) segmenting the upgraded binary file into a plurality of second segments of size N; 3) detecting a first set of differences between the first segment from the original binary file and the first segment from the upgraded binary file; And 4) generating a first delta file from the detected first set of differences.

도 1은 본 발명의 원리에 따라 공간 효율적 델타 파일 생성 알고리즘을 사용하여 이동국을 업그레이드할 수 있는 예시적 무선 네트워크를 나타낸 도면,1 illustrates an exemplary wireless network capable of upgrading a mobile station using a space efficient delta file generation algorithm in accordance with the principles of the present invention;

도 2는 본 발명의 원리에 따른 업그레이드 서버의 선택된 부분들을 나타낸 도면,2 shows selected portions of an upgrade server in accordance with the principles of the invention;

도 3은 본 발명의 예시적 실시예에 따른 복합 델타 파일을 나타낸 도면,3 illustrates a composite delta file in accordance with an exemplary embodiment of the present invention;

도 4는 본 발명의 원리에 따라 델타 파일들을 생성하는 새로운 알고리즘을 나타낸 흐름도.4 is a flow diagram illustrating a new algorithm for generating delta files in accordance with the principles of the present invention.

본 발명의 일 실시예에 따르면, 본 복합 델타 파일 생성 방법은 4) 원본 바이너리 파일로부터 나온 제2 세그먼트와 업그레이드된 바이너리 파일로부터 나온 제2 세그먼트 사이의 제2 세트의 차이들을 검출하는 단계; 및 5) 검출된 제2 세트의 차이들로부터 제2 델타 파일을 생성하는 단계를 더 포함한다.According to one embodiment of the invention, the method of generating a composite delta file comprises: 4) detecting a second set of differences between a second segment from an original binary file and a second segment from an upgraded binary file; And 5) generating a second delta file from the detected second set of differences.

본 발명의 다른 실시예에 따르면, 본 복합 델타 파일 생성 방법은 제1 델타 파일과 제2 델타 파일을 결합하여 복합 델타 파일을 생성하는 단계를 더 포함한다.According to another embodiment of the present invention, the method of generating a compound delta file further includes combining the first delta file and the second delta file to generate a compound delta file.

본 발명의 또 다른 실시예에 따르면, 본 복합 델타 파일 생성 방법은 복합 델타 파일을 원본 파일의 사본을 포함하고 있는 타깃 장치에 전송하는 단계를 더 포함한다.According to another embodiment of the present invention, the method of generating a compound delta file further includes transmitting the compound delta file to a target device including a copy of the original file.

본 발명의 또 다른 실시예에 따르면, 본 복합 델타 파일 생성 방법은 제1 델타 파일과 제2 델타 파일로부터 데이터 검증치를 생성하는 단계; 및 데이터 검증치를 복합 델타 파일에 부가하는 단계를 더 포함한다.According to another embodiment of the present invention, the method of generating a composite delta file comprises: generating data verification values from a first delta file and a second delta file; And adding the data verification value to the compound delta file.

본 발명의 또 다른 실시예에 따르면, 데이터 검증치는 순환 중복 검사(cyclic redundancy check)(CRC) 값을 포함한다.According to another embodiment of the invention, the data verification value comprises a cyclic redundancy check (CRC) value.

본 발명의 또 다른 실시예에 따르면, 제1 델타 파일을 생성하는 단계와 제2 델타 파일을 생성하는 단계는 그리디 알고리즘을 사용하여 델타 파일들을 생성한다.According to another embodiment of the present invention, generating the first delta file and generating the second delta file use the greedy algorithm to generate the delta files.

본 발명의 또 다른 실시예에 따르면, 원본 바이너리 파일을 세그먼트화하는 단계는 타깃 장치와 연관된 메모리 맵 입력 파일을 기반으로 하여 원본 바이너리 파일을 세그먼트화하는 부 단계(sub-step)를 포함한다.According to another embodiment of the present invention, segmenting the original binary file comprises a sub-step of segmenting the original binary file based on a memory map input file associated with the target device.

본 발명의 일 실시예에 따르면, 업그레이드된 파일을 세그먼트화하는 단계는 타깃 장치와 연관된 메모리 맵 입력 파일을 기반으로 하여 업그레이드된 바이너리 파일을 세그먼트화하는 부 단계를 포함한다.According to one embodiment of the invention, segmenting the upgraded file includes sub-segmenting the upgraded binary file based on a memory map input file associated with the target device.

전술된 선행 기술의 결함들을 다루기 위해, 본 발명은 원본 바이너리 파일로부터 타깃 장치에 설치된 원본 바이너리 파일의 사본을 대체하는데 적합한 업그레이드된 파일을 생성하는 세그먼트화 링커를 제공하는 것을 그 주목적으로 한다. 본 발명의 바람직한 실시예에 따르면, 본 세그먼트화 링커는 다수의 객체들, 원본 바 이너리 파일, 및 타깃 장치와 연관된 메모리 맵 입력 파일을 입력들로서 수신하되, 원본 바이너리 파일에서의 코드의 참조의 공간 지역성의 적어도 일부를 업그레이드된 바이너리 파일에서 그대로 유지한다.In order to address the above-mentioned deficiencies of the prior art, the present invention is primarily directed to providing a segmentation linker that generates an upgraded file suitable for replacing a copy of an original binary file installed on a target device from the original binary file. According to a preferred embodiment of the present invention, the segmentation linker receives as inputs a plurality of objects, an original binary file, and a memory map input file associated with a target device, but with a space of reference of the code in the original binary file. Keep at least some of the locality intact in the upgraded binary file.

본 발명의 일 실시예에 따르면, 본 세그먼트화 링커는 원본 바이너리 파일에서 참조의 공간 지역성을 갖는 객체들의 레이아웃을 규정짓는 링커 가이드라인 파일을 입력으로서 더 수신한다.According to one embodiment of the invention, the segmentation linker further receives as input a linker guidelines file that defines the layout of objects with spatial locality of reference in the original binary file.

본 발명의 다른 실시예에 따르면, 본 세그먼트화 링커는 링커 가이드라인 파일을 사용하여 업그레이드된 바이너리 파일에서의 연속되는 주소 참조들의 전파를 제한한다.According to another embodiment of the present invention, the present segmentation linker uses a linker guidelines file to limit the propagation of consecutive address references in the upgraded binary file.

본 발명의 또 다른 실시예에 따르면, 본 세그먼트화 링커는 링커 가이드라인 파일을 사용하여 원본 바이너리 파일에서 참조의 공간 지역성을 갖는 객체들의 순서를 업그레이드된 바이너리 파일에서 그대로 유지한다.According to another embodiment of the present invention, the segmentation linker uses the linker guidelines file to maintain the order of objects with spatial locality of reference in the original binary file in the upgraded binary file.

본 발명의 또 다른 실시예에 따르면, 본 세그먼트화 링커는 링커 가이드라인 파일을 사용하여 업그레이드된 바이너리 파일에서 객체들과 모듈들 사이에 공간을 예비 할당한다.According to another embodiment of the present invention, the segmentation linker pre-allocates space between objects and modules in the upgraded binary file using the linker guidelines file.

본 발명의 또 다른 실시예에 따르면, 본 세그먼트화 링커는 모듈들과 객체들의 주소 공간 밖에 있는 외부 함수들과 객체들의 수를 기반으로 하여 업그레이드된 바이너리 파일에서 객체들과 모듈들 사이에 공간을 예비 할당한다.According to another embodiment of the present invention, the segmentation linker reserves space between objects and modules in the upgraded binary file based on the number of external functions and objects outside the address space of the modules and objects. Assign.

본 발명의 또 다른 실시예에 따르면, 본 세그먼트화 링커는 프로그래머가 제공하는 발견적 값을 기반으로 하여 업그레이드된 파일에서 객체들과 모듈들 사이에 공간을 예비 할당한다.According to another embodiment of the present invention, the segmentation linker pre-allocates space between objects and modules in the upgraded file based on the heuristic values provided by the programmer.

본 발명의 일 실시예에 따르면, 본 세그먼트화 링커는 원본 바이너리 파일로부터 나온 정보를 사용하여 업그레이드된 파일에서 변수들과 함수들의 주소 할당을 그대로 유지한다.According to one embodiment of the invention, the segmentation linker maintains the address assignments of variables and functions in the upgraded file using information from the original binary file.

아래의 본 발명의 상세한 설명에 착수하기에 앞서, 본 특허 출원 명세서의 전반에 걸쳐 사용되는 특정의 단어 및 문구의 정의에 관해 밝히는 것이 좋을 듯하다. "포함한다(include 및 comprise)"란 용어뿐만 아니라 그 파생어(derivatives thereof)는 한정이 아닌 포함을 의미한다. "또는(or)"이란 용어는 "및/또는(and/or)"의 의미를 포괄한다. "관련된(associated with)" 및 "그와 관련된(associated therewith)"이란 문구뿐만 아니라 그 파생 문구는 "포함한다(include)", "포함된다(be included within)", "상호 연결한다(interconnect with)", "내재한다(contain)", "내재된다(be contained within)", "연결한다(connect to or with)", "결합한다(couple to or with)", "소통될 수 있다(be communicable with)", "협력한다(cooperate with)", "삽입한다(interleave)", "병치한다(juxtapose)", "근접한다(be proximate to)", "접경한다(be bound to or with)", "구비한다(have)", " 특성을 갖는다(have a property of)" 등을 의미할 수 있다. "제어기(controller)"란 용어는 하나 이상의 동작을 제어하는 임의의 장치, 시스템, 또는 그 부품을 의미하는데, 그러한 장치는 하드웨어, 펌웨어, 소프트웨어, 또는 그들 중의 2개 이상의 조합으로 구현될 수 있다. 어떤 특정의 제어기와 관련된 기능성은 로컬로든 원격으로든 집중화되거나 분산될 수 있음을 유의해야 할 것이다. 특정의 단어 및 문구에 관한 그러한 정의는 본 특허 명세서의 전반에 걸쳐 규정되는 것으로, 당업계의 통상의 지식을 가진 자는 비록 대다수의 경우는 아닐지라도 많은 경우에 있어 그러한 정의가 그처럼 정의된 단어 및 문구의 선행 사용에는 물론 향후의 사용에도 적용되는 것임을 알아야 할 것이다.Prior to undertaking the detailed description of the invention below, it may be desirable to disclose the definitions of specific words and phrases used throughout this patent application specification. The terms "include and comprise", as well as derivatives thereof, mean inclusion, not limitation. The term "or" encompasses the meaning of "and / or". The phrases "associated with" and "associated therewith", as well as derivatives thereof, include "include", "be included within", and "interconnect with." ), "Contain", "be contained within", "connect to or with", "couple to or with", "be communicated" communicable with "," cooperate with "," interleave "," juxtapose "," be proximate to "," be bound to or with) "," Have "," have a property of "and the like. The term “controller” means any device, system, or component thereof that controls one or more operations, which device may be implemented in hardware, firmware, software, or a combination of two or more thereof. It should be noted that the functionality associated with any particular controller can be centralized or distributed locally or remotely. Such definitions of specific words and phrases are defined throughout this patent specification, and those of ordinary skill in the art, in many cases, although not in many cases, words and phrases in which such definitions are so defined. It should be understood that this applies to future use as well as to future use.

이하 본 발명의 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기 설명 및 첨부 도면에서 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략한다. Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. In the following description and the annexed drawings, detailed descriptions of well-known functions and configurations that may unnecessarily obscure the subject matter of the present invention will be omitted.

이후로 논할 도 1 내지 도 4 및 본 특허 출원 명세서에서 본 발명의 원리를 기술하는데 사용되는 각종의 실시예들은 단지 예시적인 것들에 불과하지, 결코 본 발명의 범위를 한정하는 것으로 해석되어서는 안 된다. 당업자라면 본 발명의 원리가 적절하게 구축된 어떠한 무선 네트워크에서라도 구현될 수 있음을 알 것이다.The various embodiments used in describing the principles of the invention in the Figures 1-4 and the present patent application, which will be discussed hereinafter, are merely illustrative and should not be construed as limiting the scope of the invention. . Those skilled in the art will appreciate that the principles of the present invention may be implemented in any wireless network suitably established.

도 1은 본 발명의 원리에 따라 공간 효율적 델타 파일 생성 알고리즘을 사용하여 이동국을 업그레이드할 수 있는 예시적 무선 네트워크를 나타낸 것이다. 본 발명은 인터넷 또는 그와 유사한 광역 IP 네트워크에 의해 업그레이드 서버(도시를 생략함) 연동 무선 네트워크(100)에서 실행된다. 대안적으로, 업그레이드 서버는 일반 전화 교환 네트워크(PSTN)에 의해 무선 네트워크(100)와 연동할 수도 있다.1 illustrates an exemplary wireless network in which a mobile station can be upgraded using a space efficient delta file generation algorithm in accordance with the principles of the present invention. The invention is implemented in an upgrade server (not shown) interworking wireless network 100 by the Internet or a similar wide area IP network. Alternatively, the upgrade server may work with the wireless network 100 by means of a public switched telephone network (PSTN).

무선 네트워크(100)는 기지국들(BS)(101, 102, 103) 중의 하나를 각각 포함하는 다수의 셀 사이트들(121 내지 123)을 포함한다. 기지국들(101 내지 103)은 예컨대 IS-2000 표준(즉, CDMA2000)에 따른 코드 분할 다중 접속(CDMA) 채널들을 통해 다수의 이동국들(MS)(111 내지 114)과 통신한다. 본 발명의 바람직한 실시예에 서는, 이동국들(111 내지 114)이 2개 이상의 CDMA 채널들을 통해 데이터 트래픽 및/또는 음성 트래픽을 동시에 수신할 수 있다. 이동국들(111 내지 114)은 무선 링크들을 경유하여 기지국들(101 내지 103)과 통신할 수 있는 임의의 적절한 장치들(예컨대, 통상의 휴대폰들, PCS 핸드셋들, 개인 디지털 보조(PDA) 핸드셋들, 휴대용 컴퓨터들, 원격 계측 장치들)일 수 있다.The wireless network 100 includes a plurality of cell sites 121-123 each including one of the base stations (BS) 101, 102, 103. The base stations 101-103 communicate with a plurality of mobile stations (MS) 111-114, for example, via code division multiple access (CDMA) channels according to the IS-2000 standard (ie, CDMA2000). In a preferred embodiment of the present invention, mobile stations 111-114 may simultaneously receive data traffic and / or voice traffic over two or more CDMA channels. Mobile stations 111-114 may be any suitable devices (e.g., conventional mobile phones, PCS handsets, personal digital assistant (PDA) handsets) capable of communicating with base stations 101-103 via wireless links. , Portable computers, telemetry devices).

본 발명은 이동 장치들에 한정되는 것이 아니다. 본 발명은 고정 무선 단말들을 비롯한 다른 타입의 무선 접속 단말들도 포함한다. 단순화를 위해, 이후로 단지 이동국만을 보이고 논하기로 한다. 하지만, 청구 범위 및 이후의 설명에서 "이동국"이란 용어를 사용하는 것은 엄밀한 의미의 이동 장치들(예컨대, 휴대폰들, 무선 랩탑들)과 고정 무선 단말들(예컨대, 무선 능력을 갖춘 기기 모니터)의 모두를 포괄하려는 의도의 것임을 알아야 할 것이다.The invention is not limited to mobile devices. The present invention also includes other types of wireless access terminals, including fixed wireless terminals. For simplicity, only the mobile station will be shown and discussed later. However, the use of the term "mobile station" in the claims and in the following description is intended to refer to the strict meaning of mobile devices (e.g., mobile phones, wireless laptops) and fixed wireless terminals (e.g., a wireless monitor) It should be understood that the intention is to cover everything.

점선들은 기지국들(101 내지 103)이 위치한 셀 사이트들(121 내지 123)의 개략적인 경계들을 나타낸 것이다. 셀 사이트들은 단지 예시와 설명을 위한 목적으로 대략 원형으로 도시되어 있다. 셀 사이트들은 선택된 셀 구성과 천연 및 인공 장애물들에 의존하여 다른 불규칙한 형태들을 가질 수 있음을 확실히 알아야 할 것이다.The dotted lines represent schematic boundaries of the cell sites 121-123 where the base stations 101-103 are located. Cell sites are shown in approximately circular form for illustrative purposes only. It will be appreciated that cell sites may have other irregular shapes depending on the cell configuration selected and natural and artificial obstacles.

당해 기술 분야에 잘 알려진 바와 같이, 각각의 셀 사이트(121 내지 123)는 다수의 섹터들로 이뤄지는데, 여기서 기지국과 연동하는 지향성 안테나가 각각의 섹터를 비추고 있다. 도 1의 실시예는 셀의 중심에 기지국을 도시하고 있다. 대안적 실시예는 지향성 안테나들을 섹터들의 코너에 위치시킬 수 있다. 본 발명의 시 스템은 어떤 특정의 셀 사이트 구성에 한정되는 것이 아니다.As is well known in the art, each cell site 121-123 consists of a number of sectors, where a directional antenna that cooperates with the base station illuminates each sector. 1 illustrates a base station in the center of a cell. An alternative embodiment may place directional antennas at the corners of the sectors. The system of the present invention is not limited to any particular cell site configuration.

본 발명의 일 실시예에서는, 각각의 BS(101, 102, 103)가 기지국 제어기(BSC)와 하나 이상의 기지국 송수신 서브 시스템(BTS)으로 이뤄진다. 기지국 제어기와 기지국 송수신 서브 시스템은 당업자에게 잘 알려져 있는 것들이다. 기지국 제어기는 무선 통신 네트워크 내의 지정된 셀들에 대한, 기지국 송수신 서브 시스템들을 비롯한 무선 통신 자원들을 관리하는 장치이다. 기지국 송수신 서브 시스템은 각각의 셀 사이트에 위치하는 RF 송수신기, 안테나, 및 기타의 전기 장비들을 포함한다. 그러한 장비는 공조 유닛, 가열 유닛, 전원, 전화선 인터페이스, 및 RF 송신기와 RF 수신기를 포함할 수 있다. 본 발명의 동작을 설명함에 있어서의 단순 명료화를 위해, 각각의 셀(121, 122, 123)에서의 기지국 송수신 서브 시스템들과 그 각각의 기지국 송수신 서브 시스템과 연관된 기지국 제어기를 총괄하여 BS(101), BS(102), 및 BS(103)으로 각각 나타내기로 한다.In one embodiment of the present invention, each BS 101, 102, 103 consists of a base station controller (BSC) and one or more base station transmit / receive subsystems (BTSs). Base station controllers and base transceiver stations are well known to those skilled in the art. A base station controller is a device that manages wireless communication resources, including base station transmit and receive subsystems, for designated cells in a wireless communication network. The base station transmit / receive subsystem includes RF transceivers, antennas, and other electrical equipment located at each cell site. Such equipment may include air conditioning units, heating units, power supplies, telephone line interfaces, and RF transmitters and RF receivers. For simplicity in describing the operation of the present invention, the BS 101 is collectively referred to as base station transmit / receive subsystems in each cell 121, 122, 123 and base station controllers associated with the respective base station transmit and receive subsystems. , BS 102, and BS 103, respectively.

BS(101), BS(102), 및 BS(103)는 서로와 일반 전화 교환 네트워크(PSTN)(도시를 생략함) 사이에서 통신선(131) 및 이동 교환국(MSC)(140)을 경유하여 음성 및 데이터 신호들을 전송한다. BS(101), BS(102), 및 BS(103)는 통신선(1310과 패킷 데이터 서버 노드(PDSN)(150)를 경유하여 인터넷으로 패킷 데이터와 같은 데이터 신호들을 전송하기도 한다. 패킷 제어 함수(PCF) 유닛(190)은 기지국들(101 내지 103)과 PDSN(150) 사이에서의 데이터 패킷의 흐름을 제어한다. PCF 유닛(190)은 PDSN(150)의 일부로서, MSC(140)의 일부로서, 또는 도 1에 도시된 바와 같이 PDSN(150)과 통신하는 자립형 장치로서 구축될 수 있다. 통신선(131)은 MSC(140)와 BS(101), BS(102), 및 BS(103) 사이에서 전송되는 제어 신호들을 위한 접속 경로도 제공하는데, 그 접속 경로는 MSC(140)와 BS(101), BS(102), 및 BS(103) 사이의 음성 및 데이터 회로들에 대한 접속을 수립한다.BS 101, BS 102, and BS 103 communicate voice over communication line 131 and mobile switching center (MSC) 140 between each other and a public switched telephone network (PSTN) (not shown). And transmit data signals. BS 101, BS 102, and BS 103 also transmit data signals, such as packet data, to the Internet via communication line 1310 and packet data server node (PDSN) 150. Packet control functions ( PCF) unit 190 controls the flow of data packets between base stations 101-103 and PDSN 150. PCF unit 190 is part of PDSN 150 and is part of MSC 140. Or as a stand-alone device in communication with PDSN 150 as shown in Figure 1. Communication line 131 is configured with MSC 140 and BS 101, BS 102, and BS 103. A connection path is also provided for the control signals transmitted between the connection path, which establishes a connection to voice and data circuits between the MSC 140 and the BS 101, BS 102, and BS 103. do.

통신선(131)은 T 라인, T 라인, 광섬유 링크, 네트워크 패킷 데이터 백본 접속로, 또는 다른 임의의 타입의 데이터 접속로와 같은 임의의 적절한 접속 수단일 수 있다. 통신선(131)은 BSC에 있는 각각의 보코더를 MSC(140)에 있는 교환 소자에 연결한다. 통신선(131)을 통한 접속로들은 아날로그 음성 신호들 또는 디지털 음성 신호들을 펄스 코드 변조(PCM) 포맷, 인터넷 프로토콜(IP) 포맷, 비동기 전송 모드(ATM) 포맷 등으로 전송한다.The communication line 131 may be any suitable connection means such as a T line, a T line, an optical fiber link, a network packet data backbone connection path, or any other type of data connection path. The communication line 131 connects each vocoder in the BSC to an exchange element in the MSC 140. Connection paths through the communication line 131 transmit analog voice signals or digital voice signals in pulse code modulation (PCM) format, Internet protocol (IP) format, asynchronous transmission mode (ATM) format, and the like.

MSC(140)는 무선 네트워크와 PSDN 또는 인터넷과 같은 외부 네트워크에서 서비스들과 가입자들 사이의 조정을 제공하는 교환 장치이다.MSC 140 is a switching device that provides coordination between services and subscribers in wireless networks and external networks such as PSDN or the Internet.

MCS(140)는 당업자에게 잘 알려져 있다. 본 발명의 일부 실시예들에서는, 통신선(131)이 각각의 데이터 링크가 BS(101), BS(102), 및 BS(103) 중의 하나를 MSC(140)와 연동시키는 복수의 상이한 링크들일 수 있다.MCS 140 is well known to those skilled in the art. In some embodiments of the invention, the communication line 131 may be a plurality of different links where each data link associates one of the BS 101, BS 102, and BS 103 with the MSC 140. have.

그러한 예시적 무선 네트워크(100)에서, MS(111)는 셀 사이트(121)에 위치하여 BS(101)와 통신하고 있다. MS(113)는 셀 사이트(122)에 위치하여 BS(102)와 통신하고 있다. MS(114)는 셀 사이트(123)에 위치하여 BS(103)과 통신하고 있다. MS(112)는 셀 사이트(123)의 가장자리에 가깝게 위치하여 MS(112)에 근접한 방향 화살표에 의해 지시된 바와 같이 셀 사이트(123) 쪽으로 이동하고 있다. 특정 시점에, MS(112)가 셀 사이트(121)를 벗어나 셀 사이트(123) 내로 이동함에 따라, 핸드 오프가 일어나게 된다.In such exemplary wireless network 100, MS 111 is located at cell site 121 and is in communication with BS 101. MS 113 is located at cell site 122 and is in communication with BS 102. MS 114 is located at cell site 123 and is in communication with BS 103. The MS 112 is located close to the edge of the cell site 123 and is moving towards the cell site 123 as indicated by the directional arrows close to the MS 112. At a particular point in time, as MS 112 moves out of cell site 121 into cell site 123, a handoff occurs.

이동국들(111 내지 114)은 본 발명의 원리에 따라 델타 파일들을 생성하는 업그레이드 서버(도시를 생략함)에 의해 업그레이드된다. 공간 효율적 델타 파일들은 업그레이드 서버로부터 기지국들(101 내지 103)로 전송되고, 이어서 오버-더-에어로 이동국들(111 내지 114)에 전송된다.Mobile stations 111-114 are upgraded by an upgrade server (not shown) that generates delta files in accordance with the principles of the present invention. The space efficient delta files are sent from the upgrade server to the base stations 101-103 and then to the over-the-air mobile stations 111-114.

도 2는 본 발명의 원리에 따른 업그레이드 서버(200)의 선택된 부분들을 나타낸 것이다. 업그레이드 서버(200)는 목적 파일들(205), 링크 가이드라인들(210), 세그먼트화 링커(215), 메모리 맵 입력 파일(220), 업그레이드된 바이너리 파일(또는 새 바이너리 파일)(235), 세그먼트화 델타 파일 생성기(245), 및 복합 델타(Δ) 파일(250)을 포함한다. 세그먼트화 링커(215)는 목적 파일들(205), 라이브러리들, 및 주소 상세들을 입력으로서 취하여 실행 가능 파일, 즉 업그레이드된 바이너리 파일(230)을 생성하는 애플리케이션 프로그램이다. 이후에 더욱 상세히 논할 바와 같이, 본 발명의 바람직한 실시예에서는, 세그먼트화 링커(215)가 메모리 맵 입력 파일(220)과 링커 가이드라인 파일(210)을 부가의 입력으로서 사용하여 소프트웨어에서의 참조의 공간 지역성을 기반으로 삼아 업그레이드된 실행 가능 바이너리 파일(230)을 생성한다.2 shows selected portions of an upgrade server 200 in accordance with the principles of the present invention. Upgrade server 200 may include object files 205, link guidelines 210, segmentation linker 215, memory map input file 220, upgraded binary file (or new binary file) 235, A segmentation delta file generator 245, and a compound delta (Δ) file 250. Segmentation linker 215 is an application program that takes object files 205, libraries, and address details as input to generate an executable file, that is, an upgraded binary file 230. As will be discussed in more detail below, in a preferred embodiment of the present invention, the segmentation linker 215 uses the memory map input file 220 and the linker guidelines file 210 as additional inputs for reference in software. The upgraded executable binary file 230 is generated based on the spatial locality.

본 발명의 원리에 따르면, 세그먼트화 델타 파일 생성기(245)는 업그레이드된 바이너리 파일(230)과 원본 바이너리 파일(235)의 각각의 것을 다수의 세그먼트들로 세그먼트화함으로써 시간 및 공간 효율적으로 델타 파일들을 생성한다. 이어서, 세그먼트화 델타 파일 생성기(245)는 업그레이드된 바이너리 파일(230)과 원본 바이너리 파일(235)로부터 나온 해당 세그먼트들로부터 다수의 델타 파일들을 생성한다. 이어서, 세그먼트화 델타 파일 생성기(245)는 그와 같이 생성된 다수의 델타 파일들을 복합 델타 파일(250)(또는 마크로 델타 파일(250))로 결합하고, 그 복합 델타 파일(250)이 이동국들(111 내지 114)에 전송된다.According to the principles of the present invention, segmentation delta file generator 245 segments delta files in time and space efficiently by segmenting each of upgraded binary file 230 and original binary file 235 into multiple segments. Create Segmented delta file generator 245 then generates a number of delta files from those segments from upgraded binary file 230 and original binary file 235. Subsequently, segmentation delta file generator 245 combines the plurality of delta files so generated into compound delta file 250 (or macro delta file 250), which compound delta file 250 is assigned to mobile stations. Are sent to 111-114.

전술된 바를 달성하기 위해, 세그먼트화 델타 파일 생성기(245)는 메모리 맵 입력 파일(220)을 입력으로서 사용하여 델타 파일들을 어떻게 세그먼트화할 것인지를 결정한다. 통상적으로, 세그먼트화 링커(215)와 같은 링커 프로그램이 메모리 맵 입력 파일(220)을 사용하여 목적 파일들로부터 실행 기능 파일을 생성한다. 메모리 맵 입력 파일(220)은 타깃 장치(본 경우에는, 이동국)의 메모리 공간을 어떻게 사용할 것인지를 규정짓는다. 따라서 메모리 맵 입력 파일(220)은 예컨대 이동국(111)에서의 플래시 메모리 및 랜덤 액세스 메모리(RAM)의 주소 공간을 규정짓고, 예컨대 데이터 파일들, 프로그램들, 부트 ROM, 자유 공간, 및 스택 경계들의 위치들을 규정짓는다.To achieve the foregoing, segmentation delta file generator 245 uses memory map input file 220 as input to determine how to segment delta files. Typically, a linker program, such as segmentation linker 215, uses memory map input file 220 to generate an executable function file from object files. The memory map input file 220 defines how to use the memory space of the target device (in this case, the mobile station). The memory map input file 220 thus defines, for example, the address space of flash memory and random access memory (RAM) at the mobile station 111 and, for example, of data files, programs, boot ROM, free space, and stack boundaries. Define locations.

통상적으로, 링커가 메모리 맵 입력 파일(220)을 사용하여 목적 파일들로부터 실행 가능 파일을 생성하고, 다른 필요 파일들을 겹쳐 쓰기 함이 없이 타깃 장치에 있는 메모리에 그 실행 가능 파일을 안전하게 저장하는 한편, 세그먼트화 델타 파일 생성기(245)도 역시 메모리 맵 입력 파일(220)을 사용하여 본 발명의 원리에 따라 세그먼트화 델타 파일들을 생성한다. 이어서, 세그먼트화 델타 파일들을 복합 델타 파일(또는 마크로 델타 파일)로 결합할 수 있고, 순환 중복 검사(CRC) 필드를 부가하여 복합 델타 파일에 들어있는 데이터를 검증할 수 있다. 전술된 바 와 같이, 선행 기술의 그리디 알고리즘에 따라 델타 파일을 생성하는데 소요되는 시간은 업그레이드된 파일과 원본 파일의 결합 크기가 커짐에 따라 지수 함수적으로 증가한다. 본 발명의 원리에 따라 업그레이드된 파일과 원본 파일을 세그먼트화하고 나서 세그먼트화 델타 파일들을 생성하는 데에는 전체의 업그레이드된 파일과 원본 파일로부터 직접 단일의 델타 파일을 생성하는데 드는 것보다 훨씬 적은 처리 시간이 소요된다. 본 발명을 상충시키는 것은 본 발명에 의해 생성된 복합 델타 파일들이 완전한 크기의 업그레이드된 파일과 원본 파일에 작용하는 종래의 그리디 알고리즘에 의해 생성된 최소 크기의 델타 파일보다 다소 더 크다는 점이다.Typically, the linker uses the memory map input file 220 to create an executable file from the object files and safely stores the executable file in memory on the target device without overwriting other required files. The segmentation delta file generator 245 also uses the memory map input file 220 to generate segmentation delta files in accordance with the principles of the present invention. The segmented delta files can then be combined into a compound delta file (or macro delta file), and a cyclic redundancy check (CRC) field can be added to verify the data contained in the compound delta file. As described above, the time required to generate a delta file according to the prior art greedy algorithm increases exponentially as the combined size of the upgraded file and the original file increases. In accordance with the principles of the present invention, segmenting upgraded and original files and then generating segmented delta files requires much less processing time than generating a single delta file directly from the entire upgraded and original files. It takes Conflicting the present invention is that the complex delta files produced by the present invention are somewhat larger than the full size upgraded file and the minimum size delta file generated by the conventional greedy algorithms that operate on the original file.

도 3은 본 발명의 예시적 실시예에 따른 예시적 복합 델타 파일(250)을 나타낸 것이다. 그러한 복합 델타 파일(250)은 개개의 델타 파일들(311 내지 316)과 CRC 필드(317)를 포함한다. 델타 파일들(311 내지 316)의 각각의 것은 업그레이드된 바이너리 파일(230)로부터 나온 하나의 세그먼트와 원본 바이너리 파일(235)로부터 나온 하나의 세그먼트로부터 생성된다. 세그먼트화 델타 파일 생성기(245)가 델타 파일들(311 내지 316)을 생성한 후에, 그 세그먼트화 델타 파일 생성기(245)는 델타 파일들(311 내지 316) 모두에 대하여 CRC 값을 계산하고, 그 계산된 CRC 값을 CRC 필드(317)에서 델타 파일들(311 내지 316)에 첨부한다. 그리고 나서, 복합 델타 파일(250)을 이동국들(111 내지 114)에 전송한다.3 illustrates an exemplary composite delta file 250 in accordance with an exemplary embodiment of the present invention. Such compound delta file 250 includes individual delta files 311-316 and a CRC field 317. Each of the delta files 311-316 is created from one segment from the upgraded binary file 230 and one segment from the original binary file 235. After segmentation delta file generator 245 generates delta files 311-316, segmentation delta file generator 245 calculates a CRC value for all of delta files 311-316, and the The calculated CRC value is appended to the delta files 311-316 in the CRC field 317. Then, the composite delta file 250 is sent to the mobile stations 111-114.

도 4는 본 발명의 원리에 따라 델타 파일들을 생성하는 새로운 알고리즘을 설명하는 흐름도(400)를 나타낸 것이다. 처음에, 세그먼트화 델타 파일 생성기(245)가 원본(옛) 바이너리 파일(235)과 업그레이드된(새) 바이너리 파일(230)을 크기 N인 세그먼트들로 분할한다(프로세스 단계 405). 본 발명의 바람직한 실시예에 따르면, 세그먼트화 델타 파일 생성기(245)는 이동국들(111 내지 114)에 있는 메모리의 플래시 섹터 크기들에 따라 N의 값을 결정한다. 세그먼트화 델타 파일 생성기(245)는 메모리 맵 입력 파일(220)에 들어있는 정보에 따라 플래시 섹터 크기를 결정한다.4 shows a flow diagram 400 illustrating a new algorithm for generating delta files in accordance with the principles of the present invention. Initially, segmentation delta file generator 245 splits the original (old) binary file 235 and the upgraded (new) binary file 230 into segments of size N (process step 405). According to a preferred embodiment of the present invention, the segmentation delta file generator 245 determines the value of N according to the flash sector sizes of the memory in the mobile stations 111-114. The segmentation delta file generator 245 determines the flash sector size according to the information contained in the memory map input file 220.

다음으로, 각각의 세그먼트에 대해, 세그먼트화 델타 파일 생성기(245)가 그리디 알고리즘과 같은 통상의 델타 파일 생성 알고리즘을 실행하여 각각의 세그먼트에 대한 델타 명령과 데이터를 계산한다(프로세스 단계 410). 세그먼트화 델타 파일 생성기(245)는 델타 명령에서의 기록 충돌을 제거하여 델타 파일이 타깃 이동국에서 제위치에 적용될 수 있도록 한다(프로세스 단계 415). 다음으로, 세그먼트화 델타 파일 생성기(245)는 델타 파일 명령과 데이터를 인코딩한다(프로세스 단계 420). 세그먼트화 델타 파일 생성기(245)는 원본 바이너리 파일(235)과 업그레이드된 바이너리 파일(230)의 모든 세그먼트들이 처리될 때까지 프로세스 단계 410, 프로세스 단계 415, 및 프로세스 단계 420을 반복한다(프로세스 단계 425).Next, for each segment, segmentation delta file generator 245 executes a conventional delta file generation algorithm, such as the greedy algorithm, to calculate delta commands and data for each segment (process step 410). Segmented delta file generator 245 eliminates write conflicts in the delta command so that the delta file can be applied in place at the target mobile station (process step 415). Segmented delta file generator 245 then encodes the delta file command and data (process step 420). The segmentation delta file generator 245 repeats process step 410, process step 415, and process step 420 until all segments of the original binary file 235 and the upgraded binary file 230 have been processed (process step 425). ).

본 발명은 원본 바이너리 파일(235)과 업그레이드된 바이너리 파일(230)에서의 공간 긴밀성을 활용하는데, 그것은 코드의 블록들이 대부분 2개의 관련 파일들에서 동일한 오프셋들로 동일하기 일쑤이기 때문이다. 다시 말하면, 동일한 소프트웨어의 2개의 유사한 버전들이 통상적으로 코드에서 유사한 오프셋들로 높은 유사도를 보인다는 것이다. 본 발명은 주지의 "그리디 알고리즘"(Reichenberger에 의한)을 적용하여 델타들을 계산할 수 있지만, 다른 잘 알려진 알고리즘들을 사용할 수도 있다. 본 발명은 그리디 알고리즘을 능가하는 개선을 제공하면서도 여전히 이론적으로 최적인 델타 파일 크기의 이점을 대부분 견지하고 있다. 각각의 세그먼트의 끝에서 COPY와 ADD 명령을 함께 행함으로써, 플래시 기록 동작의 수가 최소화되게 된다. 통상의 델타 패치 알고리즘들은 COPY와 ADD 명령을 별개로 다루는데 2-패스 접근 방안(two-pass approach)을 필요로 한다. 본 발명은 거의 선형의 자원 요구(메모리와 시간)를 갖기 때문에, 큰 바이너리들(예컨대, > 4MB)이 결정적 양의 시간(deterministic amount of time)으로 실행되게 된다.The present invention takes advantage of the spatial coherence in the original binary file 235 and the upgraded binary file 230 because blocks of code are mostly identical at the same offsets in the two related files. In other words, two similar versions of the same software typically show high similarity with similar offsets in the code. The present invention may apply the known "grid algorithm" (by Reichenberger) to calculate the deltas, but other well known algorithms may be used. The present invention provides most of the advantages of the delta file size that is still theoretically optimal while providing an improvement over the greedy algorithm. By executing the COPY and ADD commands together at the end of each segment, the number of flash write operations is minimized. Conventional delta patch algorithms require a two-pass approach to handling COPY and ADD instructions separately. Since the present invention has a nearly linear resource demand (memory and time), large binaries (e.g.> 4MB) will be executed in a deterministic amount of time.

본 발명의 원리에 따른 세그먼트화 링커(또는 스마트 링커)를 사용함으로써, 세그먼트화 델타 파일 생성기(245)에 의해 생성되는 델타 파일들의 품질이 한층 더 개선되게 된다. 본 발명은 세그먼트화 링커에 부가의 지능을 부가하여 원본 바이너리 파일(235)과 업그레이드된 바이너리 파일(230) 사이의 참조의 공간 지역성을 그대로 유지한다. 그것은 주로 연속되는 주소 참조들의 전파를 제한하려고 이뤄진다.By using the segmentation linker (or smart linker) in accordance with the principles of the present invention, the quality of the delta files generated by the segmentation delta file generator 245 is further improved. The present invention adds additional intelligence to the segmentation linker to maintain the spatial locality of the reference between the original binary file 235 and the upgraded binary file 230. It is mainly done to limit the propagation of consecutive address references.

세그먼트화 링커(215)는 목적 파일들(205), 메모리 맵 입력 파일(220), 업그레이드된 바이너리 파일(230), 및 원본 바이너리 파일(235)을 입력으로서 수신하는 이외에, 링커 가이드라인 파일(210)도 역시 부가의 입력으로서 수신한다. 본 발명의 바람직한 실시예에 따르면, 링커 가이드라인 파일(210)은 참조의 공간 지역성을 갖는 객체들을 기술하는 스크립트로 이뤄진다. 세그먼트화 링커(215)는 링커 가이드라인 파일(210)을 사용하여 소프트웨어 프로그래머에 의해 지정된 순서를 그대로 유지한다.The segmentation linker 215 receives linker guidelines file 210 in addition to receiving object files 205, memory map input file 220, upgraded binary file 230, and original binary file 235 as input. ) Is also received as an additional input. According to a preferred embodiment of the present invention, the linker guidelines file 210 consists of a script that describes objects with spatial locality of reference. Segmentation linker 215 uses linker guidelines file 210 to maintain the order specified by the software programmer.

아울러, 세그먼트화 링커(215)는 링커 가이드라인 파일(210)을 사용하여 객 체들과 모듈들(함수들을 비롯한) 사이에 공간들을 예비 할당한다. 그러한 예비 할당된 공간들은 "홀(hole)들"로 지칭될 수 있다. 세그먼트화 링커(215)는 논-로컬(non-local) 심벌 참조들의 양, 즉 모듈(또는 목적 코드)의 밖에 있는 외부 함수들과 변수들의 수를 기반으로 하여 예비 할당되는 공간을 계산한다. 오직 세그먼트화 링커(215)만이 논-로컬 참조들의 수 및 타입을 알고 있다. 따라서 세그먼트화 링커(215)는 그 정보를 이용하여 더 좋은 실행 가능 출력(즉, 업그레이드된 바이너리 파일(230))을 생성한다.In addition, segmentation linker 215 uses linker guidelines file 210 to pre-allocate spaces between objects and modules (including functions). Such pre-allocated spaces may be referred to as "holes." Segmentation linker 215 calculates the pre-allocated space based on the amount of non-local symbol references, ie the number of external functions and variables outside of the module (or object code). Only segmentation linker 215 knows the number and type of non-local references. Thus, segmentation linker 215 uses that information to produce better executable output (ie, upgraded binary file 230).

예비 할당된 공간(또는 홀)의 양은 그들 함수들/목적 파일들에 대한 향후의 변경을 수용한, 프로그래머가 제공하는 발견적 값에 의해 수정될 수도 있다. 따라서 소프트웨어가 예컨대 버그 픽스로 인해 향후에 수정된다면, 홀 공간은 특정 모듈에서 함수들과 변수들의 주소들을 변경하는 것이 다른 모듈로 연속되지 않도록 하는 것을 보장하게 된다. 세그먼트화 링커(215)는 변수들과 함수들에의 동일한 주소 할당을 그대로 유지하기 위해 이전의 실행 가능 출력(즉, 원본 바이너리 파일(235))을 검사하기도 한다. 그것은 연속되는 변경들을 한층 더 감소시킨다.The amount of pre-allocated space (or holes) may be modified by the heuristic value provided by the programmer, accepting future changes to those functions / purpose files. Thus, if the software is modified in the future, eg due to bug fixes, the hole space ensures that changing the addresses of functions and variables in one module is not contiguous to another module. Segmentation linker 215 also examines previous executable output (ie, original binary file 235) to maintain the same address assignments to variables and functions. It further reduces subsequent changes.

그 결과, 세그먼트화 링커(215)는 FOTA 적용에 이상적으로 들어맞는 바이너리 출력 파일(즉, 업그레이드된 바이너리 파일(230))을 생성하게 되는데, 왜냐하면 업그레이드된 바이너리 파일(230)과 원본 바이너리 파일(235)과 같은 2개의 순차적 실행 가능 출력들 사이의 차이들이 상대적으로 작은 성향을 나타내기 때문이다. 따라서 세그먼트화 델타 파일 생성기(245)(또는 임의의 다른 통상적 델타 파일 생성기)에 의해 생성된 델타 파일의 크기가 최소화되게 된다.As a result, the segmentation linker 215 generates a binary output file (ie, an upgraded binary file 230) that is ideally suited for FOTA application, because the upgraded binary file 230 and the original binary file 235 This is because the differences between two sequential executable outputs, such as), tend to be relatively small. Thus, the size of the delta file generated by the segmentation delta file generator 245 (or any other conventional delta file generator) is minimized.

이상, 본 발명을 예시적 실시예를 가지고 설명하였지만, 다양한 변경들 및 수정들이 당업자에게 제안될 수도 있다. 첨부된 청구의 범위의 범위에 속하는 것들과 같은 그러한 변경들과 수정들을 본 발명이 포괄하는 것으로 하고자 한다. 따라서 발명의 범위는 설명된 실시 예에 의해 정할 것이 아니고, 특허청구범위와 특허청구범위의 균등한 것에 의해 정하여져야 한다. While the present invention has been described with exemplary embodiments, various changes and modifications may be suggested to one skilled in the art. It is intended that the present invention cover such changes and modifications as come within the scope of the appended claims. Therefore, the scope of the invention should not be defined by the described embodiments, but should be determined by the equivalent of claims and claims.

본 발명은 무선 통신 분야에 적용될 수 있으며, 특히 무선 단말이 오버-더-에어 방식을 통해 업그레이드를 하는 경우에 적용될 수 있다. The present invention can be applied to the field of wireless communication, in particular when the wireless terminal is upgraded through an over-the-air scheme.

Claims (30)

복합 델타 파일을 생성하는 방법에 있어서,In the method of generating a compound delta file, 원본 바이너리 파일을 크기 N인 다수의 세그먼트들로 세그먼트화하는 단계와,Segmenting the original binary file into multiple segments of size N, 업그레이드된 바이너리 파일을 크기 N인 다수의 세그먼트들로 세그먼트화하는 단계와,Segmenting the upgraded binary file into multiple segments of size N, 상기 원본 바이너리 파일을 세그먼트화한 세그먼트들 중 제1 세그먼트와 상기 업그레이드된 바이너리 파일을 세그먼트화한 세그먼트들 중 제2 세그먼트 사이의 차이들을 검출하는 단계와,Detecting differences between a first segment of segments segmenting the original binary file and a second segment of segments segmenting the upgraded binary file; 상기 검출된 제1 세그먼트 및 제2 세그먼트 사이의 차이들로부터 제1 델타 파일을 생성하는 단계를 포함하는 것을 특징으로 하는 복합 델타 파일 생성 방법.Generating a first delta file from the differences between the detected first and second segments. 제1항에 있어서,The method of claim 1, 상기 원본 바이너리 파일을 세그먼트화한 세그먼트들 중 제3 세그먼트와, 상기 업그레이드된 바이너리 파일을 세그먼트화한 세그먼트들 중 제4 세그먼트 사이의 차이들을 검출하는 단계와,Detecting differences between a third segment of segments segmenting the original binary file and a fourth segment of segments segmenting the upgraded binary file; 상기 검출된 제3 세그먼트 및 제4 세트먼트 사이의 차이들로부터 제2 델타 파일을 생성하는 단계를 더 포함하는 것을 특징으로 하는 복합 델타 파일 생성 방법.Generating a second delta file from the differences between the detected third segment and the fourth set. 제2항에 있어서,The method of claim 2, 상기 제1 델타 파일과 상기 제2 델타 파일을 결합하여 복합 델타 파일을 생성하는 단계를 더 포함하는 것을 특징으로 하는 복합 델타 파일 생성 방법.And combining the first delta file and the second delta file to generate a composite delta file. 제3항에 있어서,The method of claim 3, 상기 복합 델타 파일을, 상기 복합 델타 파일에 대한 원본 파일의 사본을 저장하고 있는 타깃 장치에 전송하는 단계를 더 포함하는 것을 특징으로 하는 복합 델타 파일 생성 방법.And transmitting the compound delta file to a target device that stores a copy of the original file for the compound delta file. 제4항에 있어서,The method of claim 4, wherein 상기 제1 델타 파일 및 상기 제2 델타 파일 모두에 대한 데이터 검증치를 생성하는 단계와,Generating data verification values for both the first delta file and the second delta file; 상기 생성된 데이터 검증치를 상기 복합 델타 파일에 부가하는 단계를 더 포함하는 것을 특징으로 하는 복합 델타 파일 생성 방법.And adding the generated data verification value to the compound delta file. 제5항에 있어서,The method of claim 5, 상기 데이터 검증치는 순환 중복 검사(CRC) 값을 포함하는 것을 특징으로 하는 복합 델타 파일 생성 방법.And the data verification value comprises a cyclic redundancy check (CRC) value. 제6항에 있어서,The method of claim 6, 상기 제1 델타 파일과 제2 델타 파일은 그리디 알고리즘을 사용하여 생성되는 것을 특징으로 하는 복합 델타 파일 생성 방법.And the first delta file and the second delta file are generated using a greedy algorithm. 제7항에 있어서,The method of claim 7, wherein 상기 원본 바이너리 파일을 세그먼트화하는 단계는,Segmenting the original binary file, 상기 타깃 장치에 대한 메모리 맵 입력 파일을 이용하여 상기 원본 바이너리 파일을 세그먼트화하는 부 단계를 포함하되,Sub-segmenting the original binary file using a memory map input file for the target device; 상기 원본 바이너리 파일로부터 세그먼트화된 상기 세그먼트들의 크기 N은, 상기 타깃 장치에 기 구비된 플래시 메모리의 섹터 크기에 의해 결정되는 것을 특징으로 하는 복합 델타 파일 생성 방법.The size N of the segments segmented from the original binary file is determined by the sector size of the flash memory provided in the target device. 제8항에 있어서,The method of claim 8, 상기 업그레이드된 바이너리 파일을 세그먼트화하는 단계는,Segmenting the upgraded binary file, 상기 타깃 장치에 대한 메모리 맵 입력 파일을 이용하여 상기 업그레이드된 바이너리 파일을 세그먼트화하는 부 단계를 포함하되,Sub-segmenting the upgraded binary file using a memory map input file for the target device; 상기 업그레이드된 바이너리 파일로부터 세그먼트화된 상기 세그먼트들의 크기 N은, 상기 타깃 장치에 구비된 플래시 메모리의 섹터 크기에 의해 결정되는 것을 특징으로 하는 복합 델타 파일 생성 방법.The size N of the segments segmented from the upgraded binary file is determined by the sector size of the flash memory provided in the target device. 제9항에 있어서,The method of claim 9, 상기 타깃 장치는 무선 이동국을 포함하고,The target device comprises a wireless mobile station, 상기 복합 델타 파일은 무선 네트워크를 경유하여 상기 무선 이동국에 전송되는 것을 특징으로 하는 복합 델타 파일 생성 방법.And wherein the composite delta file is transmitted to the wireless mobile station via a wireless network. 복합 델타 파일의 데이터 구조를 기록한 기록매체에 있어서,In the recording medium recording the data structure of the complex delta file, 원본 바이너리 파일을 크기 N인 다수의 세그먼트들로 세그먼트화하고, 업그레이드된 바이너리 파일을 크기 N인 다수의 세그먼트들로 세그먼트화하며, 상기 원본 바이너리 파일을 세그먼트화한 세그먼트들 중 제1 세그먼트와 상기 업그레이드된 바이너리 파일을 세그먼트화한 세그먼트들 중 제2 세그먼트 사이의 차이들을 검출하고, 상기 검출된 제1 세그먼트 및 제2 세그먼트 사이의 차이들로부터 제1 델타 파일을 생성하여 저장하는 것을 특징으로 하는 복합 델타 파일의 데이터 구조를 기록한 기록매체.Segment the original binary file into a plurality of segments of size N, segment the upgraded binary file into a plurality of segments of size N, and segment the first binary file with the first segment and the upgrade Detecting the differences between the second ones of the segmented binary files, and generating and storing a first delta file from the differences between the detected first and second segments. Recording medium recording the data structure of a file. 제11항에 있어서, 상기 기록매체는,The method of claim 11, wherein the recording medium, 상기 원본 바이너리 파일을 세그먼트화한 세그먼트들 중 제3 세그먼트와, 상기 업그레이드된 바이너리 파일을 세그먼트화한 세그먼트들 중 제4 세그먼트 사이의 차이들을 검출하고, 상기 검출된 제3 세그먼트 및 제4 세그먼트 사이의 차이들로부터 제2 델타 파일을 생성하는 것을 특징으로 하는 복합 델타 파일의 데이터 구조를 기록한 기록매체.Detect differences between a third segment of segments segmenting the original binary file and a fourth segment of segments segmenting the upgraded binary file, and detect the difference between the detected third segment and the fourth segment Recording medium recording a data structure of a complex delta file, wherein a second delta file is generated from the differences. 제12항에 있어서, 상기 기록매체는,The method of claim 12, wherein the recording medium, 상기 제1 델타 파일과 상기 제2 델타 파일을 결합하여 복합 델타 파일을 생성하는 것을 특징으로 하는 복합 델타 파일의 데이터 구조를 기록한 기록매체.And recording the data structure of the composite delta file by combining the first delta file and the second delta file. 삭제delete 제13항에 있어서, 상기 기록매체는,The method of claim 13, wherein the recording medium, 상기 제1 델타 파일 및 제2 델타 파일 모두에 대한 데이터 검증치를 생성하고, 상기 생성된 데이터 검증치를 상기 복합 델타 파일에 부가하는 것을 특징으로 하는 복합 델타 파일의 데이터 구조를 기록한 기록매체.And generating a data verification value for both the first delta file and the second delta file, and adding the generated data verification value to the composite delta file. 제15항에 있어서,The method of claim 15, 상기 데이터 검증치는 순환 중복 검사(CRC) 값을 포함하는 것을 특징으로 하는 복합 델타 파일의 데이터 구조를 기록한 기록매체.And the data verification value comprises a cyclic redundancy check (CRC) value. 제16항에 있어서,The method of claim 16, 상기 제1 델타 파일과 상기 제2 델타 파일은 그리디 알고리즘을 사용하여 생성되는 것을 특징으로 하는 복합 델타 파일의 데이터 구조를 기록한 기록매체.And the first delta file and the second delta file are generated using a greedy algorithm. 제17항에 있어서, 상기 기록매체는,The method of claim 17, wherein the recording medium, 상기 원본 바이너리 파일을, 해당 타깃 장치에 대한 메모리 맵 입력 파일을 이용하여 상기 다수의 세그먼트들로 세그먼트화하고,Segment the original binary file into the plurality of segments using a memory map input file for the target device, 상기 세그먼트들의 크기 N은, 상기 타깃 장치에 기 구비된 플래시 메모리의 섹터 크기에 의해 결정되는 것을 특징으로 하는 복합 델타 파일의 데이터 구조를 기록한 기록매체.And a size N of the segments is determined by a sector size of a flash memory provided in the target device. 제18항에 있어서, 상기 기록매체는,19. The method of claim 18, wherein the recording medium, 상기 업그레이드된 바이너리 파일을, 상기 타깃 장치에 대한 메모리 맵 입력 파일을 이용하여 다수의 세그먼트들로 세그먼트화하고, Segment the upgraded binary file into a plurality of segments using a memory map input file for the target device, 상기 세그먼트들의 크기 N은, 상기 타깃 장치에 구비된 플래시 메모리의 섹터 크기에 의해 결정되는 것을 특징으로 하는 복합 델타 파일의 데이터 구조를 기록한 기록매체.And the size N of the segments is determined by a sector size of a flash memory provided in the target device. 제19항에 있어서,The method of claim 19, 상기 타깃 장치는 무선 이동국을 포함하고,The target device comprises a wireless mobile station, 상기 복합 델타 파일은 무선 네트워크를 경유하여 상기 무선 이동국에 전송되는 것을 특징으로 하는 복합 델타 파일의 데이터 구조를 기록한 기록매체.And the composite delta file is transmitted to the wireless mobile station via a wireless network. 복합 델타 파일을 생성하는 장치에 있어서,In a device that generates a complex delta file, 원본 바이너리 파일 및 타깃 장치에 대한 메모리 맵 입력 파일을 입력들로서 수신하고, 상기 원본 바이너리 파일에서의 코드에 대응된 참조의 공간 지역성 중 적어도 일부를 업그레이드된 바이너리 파일에서 그대로 유지하면서, 상기 원본 바이너리 파일 및 업그레이드된 바이너리 파일을 이용하여 상기 타깃 장치에 저장된 원본 바이너리 파일의 사본을 대체하기 위한 업그레이드 파일을 생성하는 세그먼트화 링커와,Receiving the original binary file and a memory map input file for the target device as inputs, and maintaining at least some of the spatial locality of the reference corresponding to the code in the original binary file in the upgraded binary file; A segmentation linker that uses the upgraded binary file to create an upgrade file for replacing a copy of the original binary file stored on the target device; 상기 원본 바이너리 파일 및 업그레이드 바이너리 파일 각각을 다수의 세그먼트들로 세그먼트화하고, 상기 원본 바이너리 파일 및 업그레이드된 바이너리 파일로부터 세그먼트화된 상기 세그먼트들로부터 다수의 델타 파일들을 생성하고, 상기 생성된 다수의 델타 파일들을 이동국들에 전송하기 위한 하나의 복합 델타 파일로 결합하는 세그먼트화 델타 파일 생성기를 포함하는 것을 특징으로 하는 복합 델타 파일 생성 장치.Segment each of the original binary file and the upgrade binary file into a plurality of segments, generate a plurality of delta files from the segments segmented from the original binary file and the upgraded binary file, and generate the plurality of deltas And a segmentation delta file generator that combines the files into one compound delta file for transmission to mobile stations. 제21항에 있어서, 상기 세그먼트화 링커는,The method of claim 21, wherein the segmented linker, 상기 원본 바이너리 파일에서 상기 참조의 공간 지역성을 갖는 객체들의 레이아웃을 규정짓는 링커 가이드라인 파일을 입력으로서 더 수신하는 것을 특징으로 하는 복합 델타 파일 생성 장치.And further receiving as a input a linker guidelines file that defines the layout of the objects having spatial locality of the reference in the original binary file. 제22항에 있어서, 상기 세그먼트화 링커는,The method of claim 22, wherein the segmented linker, 상기 링커 가이드라인 파일을 사용하여 상기 업그레이드된 바이너리 파일에서의 연속되는 주소 참조들의 전파를 제한하는 것을 특징으로 하는 복합 델타 파일 생성 장치.And use the linker guidelines file to limit propagation of consecutive address references in the upgraded binary file. 제23항에 있어서, 상기 세그먼트화 링커는,The method of claim 23, wherein the segmented linker, 상기 링커 가이드라인 파일을 사용하여 상기 원본 바이너리 파일에서 상기 참조의 공간 지역성을 갖는 객체들의 순서를 상기 업그레이드된 바이너리 파일에서 그대로 유지하는 것을 특징으로 하는 복합 델타 파일 생성 장치.And use the linker guidelines file to maintain the order of objects having spatial locality of the reference in the original binary file in the upgraded binary file. 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020067024957A 2004-06-10 2005-06-10 Apparatus and method for efficient generation of delta files for over-the-air upgrades in a wireless network KR100849301B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020067024957A KR100849301B1 (en) 2004-06-10 2005-06-10 Apparatus and method for efficient generation of delta files for over-the-air upgrades in a wireless network

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US60/578,684 2004-06-10
US60/578,685 2004-06-10
US11/125,665 2005-05-10
US11/125,663 2005-05-10
KR1020067024957A KR100849301B1 (en) 2004-06-10 2005-06-10 Apparatus and method for efficient generation of delta files for over-the-air upgrades in a wireless network

Publications (2)

Publication Number Publication Date
KR20070018093A KR20070018093A (en) 2007-02-13
KR100849301B1 true KR100849301B1 (en) 2008-07-29

Family

ID=41640431

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067024957A KR100849301B1 (en) 2004-06-10 2005-06-10 Apparatus and method for efficient generation of delta files for over-the-air upgrades in a wireless network

Country Status (1)

Country Link
KR (1) KR100849301B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10332006B2 (en) 2016-12-15 2019-06-25 At&T Intellectual Property I, L.P. Optimization of over-the-air file distribution for connected cars based upon a heuristic scheduling algorithm

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101019822B1 (en) * 2008-12-04 2011-03-04 포항공과대학교 산학협력단 Method and apparatus for sensor node software update in wireless sensor network
CN112925553A (en) * 2021-03-18 2021-06-08 上海创功通讯技术有限公司 System upgrading method and device for embedded equipment

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US667170A (en) * 1900-10-20 1901-01-29 Hermann A Klemm Needle-thread take-up for sewing-machines.
US5574906A (en) * 1994-10-24 1996-11-12 International Business Machines Corporation System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing
US20030212712A1 (en) * 2002-05-13 2003-11-13 Jinsheng Gu Byte-level file differencing and updating algorithms
US20040152455A1 (en) * 2003-02-05 2004-08-05 Samsung Electronics Co., Ltd. System and method for delta-based over-the-air software upgrades for a wireless mobile station

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US667170A (en) * 1900-10-20 1901-01-29 Hermann A Klemm Needle-thread take-up for sewing-machines.
US5574906A (en) * 1994-10-24 1996-11-12 International Business Machines Corporation System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing
US20030212712A1 (en) * 2002-05-13 2003-11-13 Jinsheng Gu Byte-level file differencing and updating algorithms
US20040152455A1 (en) * 2003-02-05 2004-08-05 Samsung Electronics Co., Ltd. System and method for delta-based over-the-air software upgrades for a wireless mobile station

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10332006B2 (en) 2016-12-15 2019-06-25 At&T Intellectual Property I, L.P. Optimization of over-the-air file distribution for connected cars based upon a heuristic scheduling algorithm
US11176458B2 (en) 2016-12-15 2021-11-16 At&T Intellectual Property I, L.P. Optimization of over-the-air file distribution for connected cars based upon a heuristic scheduling algorithm

Also Published As

Publication number Publication date
KR20070018093A (en) 2007-02-13

Similar Documents

Publication Publication Date Title
US7529779B2 (en) Apparatus and method for efficient generation of delta files for over-the-air upgrades in a wireless network
US7673300B2 (en) Segmented linker using spatial locality of reference for over-the-air software updates
EP1569102B1 (en) Flash memory programming
KR100663538B1 (en) System and Method for Delta-based Over-The-Air Software Upgrades for a Wireless Mobile Station
KR100584443B1 (en) Component Download Manager for a Wireless Mobile Station and Method of Operation
US6742025B2 (en) System and method for server managed modification of operating system data stored within a network device
US5930704A (en) Reconfigurable subscriber terminal for a wireless telecommunications system
KR100566224B1 (en) Apparatus and method for upgrading software of a wireless mobile station
CN105100191A (en) Method, device and system for realizing Java application installation via cloud compilation
US20090172338A1 (en) Feedback linker for increased delta performance
KR20070057667A (en) System and method for a patch minimization tool
CN101026826A (en) System and method for providing monolithic image for use in a wireless device
CN108829431A (en) Update method, device, equipment and the storage medium of iOS application program
CN106569863B (en) Resource and code modularization-based android app resource updating and repairing method
CN111158751A (en) Windows environment deployment method, electronic equipment and storage medium
KR100849301B1 (en) Apparatus and method for efficient generation of delta files for over-the-air upgrades in a wireless network
CN101002406A (en) Apparatus and method for efficient generation of delta files for over-the-air upgrades in a wireless network
EP1754322A1 (en) Apparatus and method for efficient generation of delta files for over-the-air upgrades in a wireless network
CN115454575B (en) jar packet conversion and automatic loading method, device, equipment and storage medium
CN107783778B (en) Increment upgrading method based on characteristic value table look-up method
CN111694807B (en) Processing method, system, equipment and storage medium of nonvolatile storage file
CN115437564A (en) Storage optimization method and device for Android installation application and Android system
Kiyohara et al. Study on binary code synchronization in consumer devices
US20100142480A1 (en) Method of seamless vertical handover for sdr terminal and sca based sdr terminal for the same
CN111464398A (en) Self-organizing centreless network high-level protocol testing method, equipment and storage medium

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120628

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee