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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W24/00—Supervisory, monitoring or testing arrangements
- H04W24/02—Arrangements 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
본 발명은 전반적으로 무선 통신에 관한 것으로, 좀더 상세하게는 무선 이동국의 오버-더-에어 업그레이드용 델타 파일을 효율적으로 생성하는 기법에 관한 것이다.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
무선 네트워크(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
본 발명은 이동 장치들에 한정되는 것이 아니다. 본 발명은 고정 무선 단말들을 비롯한 다른 타입의 무선 접속 단말들도 포함한다. 단순화를 위해, 이후로 단지 이동국만을 보이고 논하기로 한다. 하지만, 청구 범위 및 이후의 설명에서 "이동국"이란 용어를 사용하는 것은 엄밀한 의미의 이동 장치들(예컨대, 휴대폰들, 무선 랩탑들)과 고정 무선 단말들(예컨대, 무선 능력을 갖춘 기기 모니터)의 모두를 포괄하려는 의도의 것임을 알아야 할 것이다.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), 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) 사이의 음성 및 데이터 회로들에 대한 접속을 수립한다.
통신선(131)은 T 라인, T 라인, 광섬유 링크, 네트워크 패킷 데이터 백본 접속로, 또는 다른 임의의 타입의 데이터 접속로와 같은 임의의 적절한 접속 수단일 수 있다. 통신선(131)은 BSC에 있는 각각의 보코더를 MSC(140)에 있는 교환 소자에 연결한다. 통신선(131)을 통한 접속로들은 아날로그 음성 신호들 또는 디지털 음성 신호들을 펄스 코드 변조(PCM) 포맷, 인터넷 프로토콜(IP) 포맷, 비동기 전송 모드(ATM) 포맷 등으로 전송한다.The
MSC(140)는 무선 네트워크와 PSDN 또는 인터넷과 같은 외부 네트워크에서 서비스들과 가입자들 사이의 조정을 제공하는 교환 장치이다.
MCS(140)는 당업자에게 잘 알려져 있다. 본 발명의 일부 실시예들에서는, 통신선(131)이 각각의 데이터 링크가 BS(101), BS(102), 및 BS(103) 중의 하나를 MSC(140)와 연동시키는 복수의 상이한 링크들일 수 있다.
그러한 예시적 무선 네트워크(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
이동국들(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
본 발명의 원리에 따르면, 세그먼트화 델타 파일 생성기(245)는 업그레이드된 바이너리 파일(230)과 원본 바이너리 파일(235)의 각각의 것을 다수의 세그먼트들로 세그먼트화함으로써 시간 및 공간 효율적으로 델타 파일들을 생성한다. 이어서, 세그먼트화 델타 파일 생성기(245)는 업그레이드된 바이너리 파일(230)과 원본 바이너리 파일(235)로부터 나온 해당 세그먼트들로부터 다수의 델타 파일들을 생성한다. 이어서, 세그먼트화 델타 파일 생성기(245)는 그와 같이 생성된 다수의 델타 파일들을 복합 델타 파일(250)(또는 마크로 델타 파일(250))로 결합하고, 그 복합 델타 파일(250)이 이동국들(111 내지 114)에 전송된다.According to the principles of the present invention, segmentation
전술된 바를 달성하기 위해, 세그먼트화 델타 파일 생성기(245)는 메모리 맵 입력 파일(220)을 입력으로서 사용하여 델타 파일들을 어떻게 세그먼트화할 것인지를 결정한다. 통상적으로, 세그먼트화 링커(215)와 같은 링커 프로그램이 메모리 맵 입력 파일(220)을 사용하여 목적 파일들로부터 실행 기능 파일을 생성한다. 메모리 맵 입력 파일(220)은 타깃 장치(본 경우에는, 이동국)의 메모리 공간을 어떻게 사용할 것인지를 규정짓는다. 따라서 메모리 맵 입력 파일(220)은 예컨대 이동국(111)에서의 플래시 메모리 및 랜덤 액세스 메모리(RAM)의 주소 공간을 규정짓고, 예컨대 데이터 파일들, 프로그램들, 부트 ROM, 자유 공간, 및 스택 경계들의 위치들을 규정짓는다.To achieve the foregoing, segmentation
통상적으로, 링커가 메모리 맵 입력 파일(220)을 사용하여 목적 파일들로부터 실행 가능 파일을 생성하고, 다른 필요 파일들을 겹쳐 쓰기 함이 없이 타깃 장치에 있는 메모리에 그 실행 가능 파일을 안전하게 저장하는 한편, 세그먼트화 델타 파일 생성기(245)도 역시 메모리 맵 입력 파일(220)을 사용하여 본 발명의 원리에 따라 세그먼트화 델타 파일들을 생성한다. 이어서, 세그먼트화 델타 파일들을 복합 델타 파일(또는 마크로 델타 파일)로 결합할 수 있고, 순환 중복 검사(CRC) 필드를 부가하여 복합 델타 파일에 들어있는 데이터를 검증할 수 있다. 전술된 바 와 같이, 선행 기술의 그리디 알고리즘에 따라 델타 파일을 생성하는데 소요되는 시간은 업그레이드된 파일과 원본 파일의 결합 크기가 커짐에 따라 지수 함수적으로 증가한다. 본 발명의 원리에 따라 업그레이드된 파일과 원본 파일을 세그먼트화하고 나서 세그먼트화 델타 파일들을 생성하는 데에는 전체의 업그레이드된 파일과 원본 파일로부터 직접 단일의 델타 파일을 생성하는데 드는 것보다 훨씬 적은 처리 시간이 소요된다. 본 발명을 상충시키는 것은 본 발명에 의해 생성된 복합 델타 파일들이 완전한 크기의 업그레이드된 파일과 원본 파일에 작용하는 종래의 그리디 알고리즘에 의해 생성된 최소 크기의 델타 파일보다 다소 더 크다는 점이다.Typically, the linker uses the memory
도 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
도 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
다음으로, 각각의 세그먼트에 대해, 세그먼트화 델타 파일 생성기(245)가 그리디 알고리즘과 같은 통상의 델타 파일 생성 알고리즘을 실행하여 각각의 세그먼트에 대한 델타 명령과 데이터를 계산한다(프로세스 단계 410). 세그먼트화 델타 파일 생성기(245)는 델타 명령에서의 기록 충돌을 제거하여 델타 파일이 타깃 이동국에서 제위치에 적용될 수 있도록 한다(프로세스 단계 415). 다음으로, 세그먼트화 델타 파일 생성기(245)는 델타 파일 명령과 데이터를 인코딩한다(프로세스 단계 420). 세그먼트화 델타 파일 생성기(245)는 원본 바이너리 파일(235)과 업그레이드된 바이너리 파일(230)의 모든 세그먼트들이 처리될 때까지 프로세스 단계 410, 프로세스 단계 415, 및 프로세스 단계 420을 반복한다(프로세스 단계 425).Next, for each segment, segmentation
본 발명은 원본 바이너리 파일(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
본 발명의 원리에 따른 세그먼트화 링커(또는 스마트 링커)를 사용함으로써, 세그먼트화 델타 파일 생성기(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
세그먼트화 링커(215)는 목적 파일들(205), 메모리 맵 입력 파일(220), 업그레이드된 바이너리 파일(230), 및 원본 바이너리 파일(235)을 입력으로서 수신하는 이외에, 링커 가이드라인 파일(210)도 역시 부가의 입력으로서 수신한다. 본 발명의 바람직한 실시예에 따르면, 링커 가이드라인 파일(210)은 참조의 공간 지역성을 갖는 객체들을 기술하는 스크립트로 이뤄진다. 세그먼트화 링커(215)는 링커 가이드라인 파일(210)을 사용하여 소프트웨어 프로그래머에 의해 지정된 순서를 그대로 유지한다.The
아울러, 세그먼트화 링커(215)는 링커 가이드라인 파일(210)을 사용하여 객 체들과 모듈들(함수들을 비롯한) 사이에 공간들을 예비 할당한다. 그러한 예비 할당된 공간들은 "홀(hole)들"로 지칭될 수 있다. 세그먼트화 링커(215)는 논-로컬(non-local) 심벌 참조들의 양, 즉 모듈(또는 목적 코드)의 밖에 있는 외부 함수들과 변수들의 수를 기반으로 하여 예비 할당되는 공간을 계산한다. 오직 세그먼트화 링커(215)만이 논-로컬 참조들의 수 및 타입을 알고 있다. 따라서 세그먼트화 링커(215)는 그 정보를 이용하여 더 좋은 실행 가능 출력(즉, 업그레이드된 바이너리 파일(230))을 생성한다.In addition,
예비 할당된 공간(또는 홀)의 양은 그들 함수들/목적 파일들에 대한 향후의 변경을 수용한, 프로그래머가 제공하는 발견적 값에 의해 수정될 수도 있다. 따라서 소프트웨어가 예컨대 버그 픽스로 인해 향후에 수정된다면, 홀 공간은 특정 모듈에서 함수들과 변수들의 주소들을 변경하는 것이 다른 모듈로 연속되지 않도록 하는 것을 보장하게 된다. 세그먼트화 링커(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.
그 결과, 세그먼트화 링커(215)는 FOTA 적용에 이상적으로 들어맞는 바이너리 출력 파일(즉, 업그레이드된 바이너리 파일(230))을 생성하게 되는데, 왜냐하면 업그레이드된 바이너리 파일(230)과 원본 바이너리 파일(235)과 같은 2개의 순차적 실행 가능 출력들 사이의 차이들이 상대적으로 작은 성향을 나타내기 때문이다. 따라서 세그먼트화 델타 파일 생성기(245)(또는 임의의 다른 통상적 델타 파일 생성기)에 의해 생성된 델타 파일의 크기가 최소화되게 된다.As a result, the
이상, 본 발명을 예시적 실시예를 가지고 설명하였지만, 다양한 변경들 및 수정들이 당업자에게 제안될 수도 있다. 첨부된 청구의 범위의 범위에 속하는 것들과 같은 그러한 변경들과 수정들을 본 발명이 포괄하는 것으로 하고자 한다. 따라서 발명의 범위는 설명된 실시 예에 의해 정할 것이 아니고, 특허청구범위와 특허청구범위의 균등한 것에 의해 정하여져야 한다. 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)
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)
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)
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)
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 |
-
2005
- 2005-06-10 KR KR1020067024957A patent/KR100849301B1/en not_active IP Right Cessation
Patent Citations (4)
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)
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 |