KR20080087835A - 델타 파일을 생성하는 시스템, 델타 파일을 생성하는 방법및 이 방법을 수행하게 하도록 적응되는 프로그램 코드수단을 포함하는 컴퓨터 프로그램 제품, 처리 장치, 및메모리 이미지 모듈을 로딩하는 방법 - Google Patents

델타 파일을 생성하는 시스템, 델타 파일을 생성하는 방법및 이 방법을 수행하게 하도록 적응되는 프로그램 코드수단을 포함하는 컴퓨터 프로그램 제품, 처리 장치, 및메모리 이미지 모듈을 로딩하는 방법 Download PDF

Info

Publication number
KR20080087835A
KR20080087835A KR1020087017673A KR20087017673A KR20080087835A KR 20080087835 A KR20080087835 A KR 20080087835A KR 1020087017673 A KR1020087017673 A KR 1020087017673A KR 20087017673 A KR20087017673 A KR 20087017673A KR 20080087835 A KR20080087835 A KR 20080087835A
Authority
KR
South Korea
Prior art keywords
memory image
memory
image module
updated
current
Prior art date
Application number
KR1020087017673A
Other languages
English (en)
Inventor
조한 에케르
칼 본 플라텐
Original Assignee
텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) filed Critical 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘)
Publication of KR20080087835A publication Critical patent/KR20080087835A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Electrotherapy Devices (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Image Processing (AREA)

Abstract

타겟 처리 장치가 현재 메모리 이미지 모듈을 갱신된 메모리 이미지 모듈로 변환하게 하는 갱신 명령들을 포함하는 델타 파일을 생성하는 방법이 개시된다. 이 방법은 제1 메모리 어드레스의 파라미터 표현을 상기 델타 파일에 포함시키는 단계-상기 파라미터 표현은 적어도 하나의 파라미터에 관한 파라미터임-; 및 파라미터 해결 명령들을 상기 델타 파일에 포함시키는 단계를 포함하고, 상기 파라미터 해결 명령들은 상기 타겟 처리 장치가 상기 적어도 하나의 파라미터의 값을 결정하고, 상기 파라미터 표현 및 상기 결정된 상기 적어도 하나의 파라미터의 값으로부터 상기 제1 메모리 어드레스의 어드레스 값을 결정하게 하도록 적응된다.
증가 프로그램 갱신, 메모리 이미지 모듈, 델타 파일, 파라미터 표현, 플래시 메모리

Description

델타 파일을 생성하는 시스템, 델타 파일을 생성하는 방법 및 이 방법을 수행하게 하도록 적응되는 프로그램 코드 수단을 포함하는 컴퓨터 프로그램 제품, 처리 장치, 및 메모리 이미지 모듈을 로딩하는 방법{GENERATING INCREMENTAL PROGRAM UPDATES}
본 발명은 타겟 처리 장치와 연관된 저장 매체에 저장된 메모리 이미지 모듈들의 갱신에 관한 것이다. 구체적으로는, 본 발명은 저장 매체, 예를 들어 현재의 메모리 이미지를 저장하고 있는 처리 장치의 메모리에 로딩할 갱신된 메모리 이미지의 생성에 관한 것이다.
많은 현대의 전자 장치, 예를 들어 내장 장치들은 플래시 메모리에 저장된 소프트웨어에 의해 제어된다. 플래시 메모리는 다수의 재기입을 허용하므로 전자 장치들에서 자주 사용되는 타입의 메모리이다. 그러나, 기입 동작들은 동시에 전체 메모리 섹터들, 소위 페이지들로 제한된다. 현재의 플래시 메모리들의 통상적인 페이지 크기는 64 킬로바이트이다.
예를 들어, 소프트웨어에 새로운 특징들을 추가하고 그리고/또는 소프트웨어의 현재 버전의 에러들을 수정하기 위해 전자 장치의 플래시 메모리에 저장된 소프트웨어가 갱신될 때, 플래시 메모리의 메모리 섹터들의 일부 또는 전부가 재기입/ 리프로그래밍되거나 "리플래시(reflash)"된다. 일반적으로, 소프트웨어 갱신을 설치하는 데 필요한 시간 및 에너지 소비를 최소화하기 위해, 소프트웨어 갱신 동안에 재기입되는 플래시 페이지들의 수를 최소화하는 것이 바람직하다.
특히, 갱신 시간이 크게 중요한 응용은 이동 단말기들의 OTA(over-the-air) 갱신, 예를 들어 이동 단말기의 펌웨어 갱신, 소위 FOTA(Firmware-Over-The-Air) 갱신이다.
자원 효율적인 갱신 메커니즘들을 제공하기 위하여, 증가 갱신들을 배포하는 방식, 즉 전체 갱신 이미지가 아니라 현재 이미지에 대한 수정들만을 타겟 장치에 배포하는 방식이 알려져 있다. 수정들은 일반적으로 델타 파일이라 한다. 통상적으로, 이러한 시스템들에서는, 이동 단말기 상에 실행되는 갱신 에이전트가 수신된 수정들을 현재 이미지에 적용하여 갱신 버전으로 변환한다. 일반적으로, 통신 채널을 통해 델타 파일을 전송할 때 필요한 로딩/전송 대역폭을 줄이고, 그리고/또는 타겟 장치에서의 로딩 프로세스 동안 처리 시간은 물론, 저장 요구들을 줄이기 위해 델타 파일들의 크기를 줄이는 것이 바람직하다.
또한, 일반적으로 소프트웨어 갱신을 수행하기 위해 이동 단말기에서 필요한 저장 용량 및 계산 자원들의 양을 줄이는 것이 바람직하다.
또한, 단말기가 갱신 프로세스 동안 기능하지 못할 수 있다는 것이 이러한 갱신 시스템들의 일반적인 문제점이다. 따라서, 메모리를 리플래시하는 데 필요한 시간, 따라서 시스템의 다운타임을 줄이는 것이 바람직하다.
본 설명의 목적을 위해, 저장 매체는 동시에 또는 개별적으로 갱신될 수 있 는 하나 이상의 소프트웨어 모듈, 예를 들어 보다 큰 소프트웨어 시스템의 상이한 컴포넌트들 및/또는 상이한 개별 소프트웨어 애플리케이션들을 저장하고 있을 수 있다. 소정의 소프트웨어 모듈에 대응하는 이진 메모리 내용의 일부는 메모리 이미지 모듈로도 참조될 것이다.
공지된 델타 갱신 시스템들에서, 소프트웨어 모듈들이 타겟 장치의 메모리에 배치되는 방법에 관한 정보는 통상적으로 델타 파일 생성 도구에 의해 이용될 수 있다. 구체적으로, 델타 파일 생성 도구는 통상적으로, 메모리 이미지가 항상 동일 시작 어드레스에 배치되는 단일의 고정 이미지 모듈을 포함하는 경우와 같이, 갱신될 메모리 이미지 모듈의 시작 어드레스가 공지되고 고정되는 것으로 가정한다. 그러나, 저장 메모리가 각각의 타겟 장치의 메모리 내의 상이한 시작 어드레스들에 배치될 수 있는 모듈들을 포함하여 델타 파일 생성 도구가 그 모듈의 실제 시작 어드레스를 알지 못하게 될 때 특별한 문제가 발생한다.
특히, 이러한 상황에서는, 현재 설치된 소프트웨어 모듈의 정확한 이진 이미지가 갱신 패키지를 생성하는 오프라인 도구들에게 공지되지 않으며, 상이한 타겟 장치들 상의 소프트웨어 모듈의 단일 버전의 이미지들이 상이할 가능성이 존재한다. 또한, 새로운 이미지가 로딩될 위치는 설치된 이미지의 위치와 동일할 필요가 없는데, 이는 예를 들어 공간 요건이 타겟 장치에게 상이한 위치를 선택하도록 강요할 수 있기 때문이다.
따라서, 이러한 소프트웨어 모듈의 이진 이미지는 메모리 내에 로딩된 후에나 완전히 결정된다. 통상적으로, 이러한 모듈들은 타겟 장치에 의해, 재배치 가 능한 버전으로, 예를 들어 메모리 어드레스들에 대한 심벌/미해결(unresolved) 참조들을 포함하는 객체 코드 포맷으로 수신된다. 본 설명의 목적을 위해, 이러한 모듈들은 로드 모듈들로도 참조된다. 로드 모듈 내의 심벌 참조들은 로드 프로세스 동안에 타겟 장치에 의해 해결된다. 상이한 심벌 참조들은 상이한 해결(resolution)들을 필요로 할 수 있는데, 예를 들어 절대 참조들은 상대 참조들과 다르게 해결된다. 결과적으로, 로드 모듈은 해결 프로세스에게 각각의 심벌 참조들에 대한 실제 메모리 어드레스를 계산하는 방법을 지시하는, 그와 연관된 소위 재배치 명령들을 갖는다.
미국 특허 제6,230,316호는 데스크탑 컴퓨터 시스템 상의 파일들을 증가적으로 갱신하기 위한 방법을 개시하고 있다. 소정의 상황들에서는, 실행 가능 파일을 그의 원래 의도된 위치에 로딩하는 것이 불가능하거나 바람직하지 않다. 이어서, 실행 가능 코드의 시작 어드레스가 변경되는데, 이는 리베이싱(rebasing)이라고 하는 프로세스이다. 리베이싱은 소프트웨어가 컴퓨터 상에 설치된 후에 타겟 시스템 상에서 수행되며, 실행 가능 파일의 정확한 내용이 델타 파일을 준비하는 오프라인 도구들에게 알려지지 않게 한다. 구체적으로, 데스크탑 시스템의 실행 가능 파일은 통상적으로 보조 메모리, 통상적으로는 하드 디스크에 저장되며, 파일이 실행되기 전에 파일의 일부가 보조 메모리에서 주 메모리, 통상적으로는 랜덤 액세스 메모리(RAM)로 로딩된다. 주 메모리로 복사되지 않은 파일의 부분은 위치 종속적인 참조들을 리스트하는 재배치 정보를 포함한다. 재배치 정보는 파일을 리베이싱할 때 이용된다. 재배치 정보는 오프라인 도구들에게 알려질 수 있는 정규 형태가 되 게 하는 리베이싱 프로세스의 반전에도 이용될 수 있다. 전술한 종래 기술의 방법은 현재 및 갱신된 파일의 정규 형태들 사이의 델타 파일, 즉 소정의 베이스 어드레스로 리베이싱된 형태를 생성하는 방법을 개시한다. 타겟 시스템 상에서는, 델타 파일이 적용되기 전에 설치 버전을 동일한 정규 형태로 가져와서, 이후에 새로운 베이스 어드레스로 리베이싱될 수 있는 갱신 버전을 생성한다.
전술한 종래 기술의 방법은 데스크탑 컴퓨터 시스템 상에서 리베이싱된 파일들을 증가적으로 갱신하기 위한 방법을 제공하지만, 위의 일반적인 문제를 해결하고 이동 단말기와 같이 내장 소프트웨어에 의해 제어되는 휴대형 장치들에 적합한 증가 갱신 시스템을 제공하는 문제가 남는다.
구체적으로, 데스크탑 시스템과 달리, 내장 시스템에서 사용되는 이진 이미지는 통상적으로 "그 자리에서" 실행되는데, 즉 영속 메모리에 저장되고 동일 메모리로부터 실행된다. 전술한 종래 방법의 내장 시스템에 대한 적용은 실행 가능 코드에 더하여 재배치 정보가 타겟 장치에 저장될 것을 요구한다. 그러나, 재배치 정보의 크기는 아마도 심지어 메모리 이미지 자체와 동일한 정도로 클 수 있다. 증가되는 메모리 풋프린트의 비용은 대량 시장 제품들에 불리하다.
<발명의 요약>
상기 및 다른 문제들은, 타겟 처리 장치가 현재 메모리 이미지 모듈을 갱신된 메모리 이미지 모듈로 변환하게 하는 갱신 명령들을 포함하는 델타 파일을 생성하는 방법으로서,
제1 메모리 어드레스의 파라미터 표현을 상기 델타 파일에 포함시키는 단계- 상기 파라미터 표현은 적어도 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 상기 갱신된 메모리 이미지 모듈의 위치에 관한 파라미터임-; 및
파라미터 해결 명령들(parameter resolution instructions)을 상기 델타 파일에 포함시키는 단계
를 포함하는 델타 파일 생성 방법에 의해 해결된다.
결과적으로, 여기에 설명되는 방법은 파라미터 델타 파일, 즉 완전히 지정되지 않는 대신에 타겟 고유 데이터에 관한 파라미터가 되는 델타 파일을 생성한다. 파라미터화된 델타 파일은 델타 파일을 생성하는 시스템에서 타겟 시스템, 예를 들어 이동 단말기로 전달된다. 델타 파일이 타겟 시스템 상에 설치된 메모리 이미지에 적용될 때, 대응하는 파라미터 값들이 파라미터들에 할당된다. 따라서, 어디에 그리고 어떠한 환경에서 적용되는지에 관계없이 동일한 델타 갱신 패키지를 사용하는 것이 가능하다.
또한, 파라미터 값들이 알려지면, 파라미터화된 델타 파일은 설치된 이미지를 설치 전의 정규 형태로 변환할 필요 없이 설치된 이미지에 직접 적용될 수 있다. 따라서, 구 버전을 먼저 설치 해제, 리베이싱 또는 재할당할 필요 없이 설치된 로드 모듈의 보다 새로운 버전으로의 직접 갱신을 제공하는 것은 여기에 설명되는 파라미터 델타 갱신 프로시저의 이점이다. 결과적으로, 여기에 설명되는 방법은 메모리 효율적인 갱신 프로세스를 제공한다.
특히, 전술한 종래 기술의 시스템은 완전한 재배치 정보를 리베이싱될 파일 과 함께 저장하는 것을 필요로 하지만, 설치된 버전의 정규 형태로의 재변환을 허가하는 타겟 시스템 상에는 어떠한 재배치 정보도 저장될 필요가 없다. 여기에 설명되는 실시예들에서는, 메모리 모듈들로의/로부터의 착신(ingoing) 및 발신(outgoing) 참조들을 유지하는 것으로 충분하다.
또한, 갱신 프로세스 동안, 설치 중에 필요한 임시 메모리의 양이 감소하게 되는데, 이는 설치된 버전의 어떠한 정규 형태도 타겟 장치에 의해 생성될 필요가 없기 때문이다.
로드 모듈이 임의의 운영 체제 로더 프로세스 등과 관련 없이 간단히 갱신될 수 있다는 것이 여기에 설명되는 방법의 추가 이점이다. 특히, 갱신된 메모리 이미지를 그 자리에서 생성하는 갱신 에이전트에 의해 갱신이 수행될 수 있다. 결과적으로, 프로세스는 타겟 시스템의 펌웨어가 그 자리에서 실행되는 경우에도 펌웨어에 적용될 수 있는데, 이는 펌웨어가 갱신 프로세스 동안 실행될 필요가 없기 때문이다.
일 실시예에서, 방법은 메모리 어드레스들에 대한 심벌 참조들을 포함하는, 상기 현재 및 갱신된 메모리 이미지 모듈들의 재배치 가능 버전들, 및 상기 현재 및 갱신된 메모리 이미지 모듈들의 각각의 재배치 가능 버전 내의 상기 심벌 참조들에 대한 현재 및 갱신된 재배치 명령들로부터 상기 델타 파일을 생성하는 단계를 포함한다. 따라서, 델타 파일은 메모리 이미지의 재배치 가능 버전들, 즉 메모리 어드레스들에 대한 심벌 참조들이 아직 해결되지 않은 버전들 사이의 수정들을 반영하도록 생성되며, 따라서 재배치 가능 버전들은 상이한 메모리 위치들에 로딩되 는 것이 가능하게 된다.
현재 및 갱신된 메모리 이미지 모듈들의 재배치 가능 버전은 객체 코드, 즉 통상적으로 이진 기계 언어로 표현되는 컴퓨터 판독 가능 프로그램 코드를 포함할 수 있는데, 이는 통상적으로 컴파일이라고 하는 소정의 번역 프로세스의 출력이며, 이 출력은 원칙적으로 컴퓨터에 의해 실행될 준비가 되어 있다.
재배치 가능 로드 모듈들은 로드 모듈 내의 다른 위치들 또는 심지어 다른 로드 모듈들, 예를 들어 다른 곳에서 정의되는 함수들, 변수들 등을 참조하는 심벌 참조들을 포함할 수 있다. 특히, 재배치 가능 로드 모듈은 통상적으로 심벌 참조들 및 대응하는 재배치 정보를 포함하며, 재배치 정보는 심벌 참조들의 해결에 관한 명령들을 포함한다. 재배치 가능 모듈의 하나의 흥미로운 특성은 시작 어드레스도 일부 또는 모든 참조되는 심벌들의 어드레스들도 아직 결정되지 않았다는 점이다.
일 실시예에서, 상기 델타 파일을 생성하는 단계는 적어도 하나의 공통 서브스트링을 식별하기 위하여 상기 현재 및 갱신된 메모리 이미지 모듈들의 재배치 가능 버전들을 비교하는 단계를 더 포함하고, 상기 비교 단계는 상기 심벌 참조들과 그에 대응하는 해결 명령들을 비교함으로써 상기 심벌 참조들을 비교하는 단계를 포함한다. 결과적으로, 델타 파일 생성 프로세스는 현재 및 갱신된 버전들을 비교할 때 심벌 참조들을 개별적으로 처리하며, 따라서 델타 생성의 성능을 향상시키고, 특히 결과적인 갱신 패키지의 크기를 감소시킨다. 특히, 일 실시예에서, 상기 심벌 참조들을 비교하는 단계는 상기 심벌 참조들이 상기 현재 및 갱신된 메모리 이미지 모듈들의 재배치 가능 버전들에서 동일한 경우 및 상기 심벌 참조들에 대한 대응하는 현재 및 갱신된 해결 명령들이 동일한 경우에만 상기 심벌 참조들이 동일한 것으로 결정하는 단계를 포함한다.
소정 실시예들에서, 방법은
상기 현재 및 갱신된 메모리 이미지 모듈들의 재배치 가능 버전들 내의 공통 서브스트링의 식별에 응답하여,
상기 타겟 처리 장치가 상기 식별된 공통 서브스트링을 상기 갱신된 메모리 이미지 모듈에 추가하게 하는 추가 명령 및 상기 타겟 처리 장치가 상기 식별된 공통 서브스트링을 상기 현재 메모리 이미지 모듈에서 상기 갱신된 메모리 이미지 모듈로 복사하게 하는 복사 명령과 연관된 각각의 크기들을 비교하는 단계-상기 각각의 크기들을 비교하는 단계는 상기 추가 및 복사 명령들, 및 존재할 경우, 상기 공통 서브스트링 내에 포함된 심벌 참조들에 대한 각각의 파라미터 해결 명령들의 각각의 크기들을 비교하여 상기 각각의 크기들 중 최소 크기를 결정하는 단계를 포함함-; 및
상기 비교의 결과에 응답하여, 상기 결정된 최소 크기에 대응하는 추가 명령 또는 복사 명령을 생성하는 단계
를 더 포함한다.
결과적으로, 이익 없는 복사 동작들이 추가 동작들로 대체될 수 있다. 특히, 복사 또는 추가 동작을 선택할지에 관한 결정을 위해, 서브스트링의 크기 및 실제 복사 및 추가 명령들의 크기뿐만 아니라, 파라미터 해결 명령들의 크기도 고 려되며, 따라서 보다 자원 효율적인 델타 파일이 생성된다.
소정 실시예들에서, 방법은 전처리 단계, 델타 파일 생성 단계 및 후처리 단계를 포함하고,
상기 전처리 단계는
상기 현재 및 갱신된 메모리 이미지 모듈들의 각각의 재배치 가능 버전들의 각각의 정규 표현들을 생성하는 단계-상기 정규 표현들에서 메모리 어드레스들에 대한 심벌 참조들은 소정의 메모리 내용으로 대체됨-; 및
상기 대체된 심벌 참조들에 관한 정보를 상기 후처리 단계로 전달하는 단계
를 포함하고,
상기 델타 파일 생성 단계는 상기 재배치 가능한 현재 및 갱신된 메모리 이미지 모듈들의 정규 표현들로부터 델타 파일을 생성하는 단계를 포함하고,
상기 후처리 단계는 상기 전달된 상기 대체된 심벌 참조들에 관한 정보 및 상기 생성된 델타 파일로부터 상기 파라미터 해결 명령들을 생성하는 단계를 포함한다. 결과적으로, 방법은 통상의 델타 파일 생성 도구에 기초하여 구현될 수 있으며, 따라서 비용이 많은 드는 델타 파일 생성 도구들의 수정에 대한 필요를 없앨 수 있다.
소정 실시예들에서, 상기 현재 메모리 이미지 모듈은 상기 타겟 처리 장치와 연관된 저장 매체, 예를 들어 처리 장치의 메모리에 저장된다.
소정 실시예들에서, 상기 갱신된 메모리 이미지 모듈은 상기 제1 메모리 어드레스에 대한 적어도 하나의 참조를 포함한다.
전술한 바와 같이, 델타 파일은 베이스라인 버전의 메모리 내의 실제 위치 및 메모리 공간 내의 갱신된 메모리 이미지 모듈의 위치에 관하여 파라미터화된다. 갱신된 메모리 이미지의 위치는 타겟 장치가 갱신된 메모리 이미지 모듈을 로딩하기로 결정하는 시작 어드레스일 수 있다. 또한, 델타 파일은 특정 타겟 시스템에 고유할 수 있는 추가적인 정보에 관하여 파라미터화될 수 있다. 일 실시예에서, 갱신 명령들은 다음의 파라미터들, 즉 메모리 공간 내의 현재 메모리 이미지 모듈의 위치, 메모리 공간 내의 갱신된 메모리 이미지 모듈의 위치, 및 갱신된 메모리 이미지 모듈에 의해 참조되는, 갱신된 메모리 이미지 모듈 외부의 각각의 어드레스 값에 관하여 파라미터화되며, 따라서 3개 이하의 파라미터에 기초하는 효율적인 파라미터 갱신 시스템을 제공한다.
따라서, 일 실시예에서, 타겟 시스템 상의 로드 프로세스는 메모리 공간 내의 현재 메모리 이미지 모듈의 위치 및 갱신된 메모리 이미지의 대응 위치를 결정/취득한다. 이러한 파라미터 값들에 기초하여, 로드 프로세스는 현재 메모리 이미지 모듈 및 수신된 파라미터 델타 파일로부터 직접, 갱신된 메모리 이미지 모듈을 생성한다.
추가적인 바람직한 실시예들이 종속항들에 개시되어 있다.
전술 및 후술하는 방법들의 특징들은 소프트웨어로 구현될 수 있고, 컴퓨터 실행 가능 명령들과 같은 프로그램 코드 수단의 실행에 의해 유발되는 데이터 처리 시스템 또는 다른 처리 수단 상에서 실행될 수 있다는 점에 유의한다. 여기서 그리고 아래에서, 처리 수단이라는 용어는 상기 기능들을 수행하도록 적절히 적응되 는 임의의 회로 및/또는 장치를 포함한다. 특히, 처리 수단이라는 용어는 범용 또는 특수 목적 프로그램 가능 마이크로프로세서, 디지털 신호 처리기(DSP), 주문형 집적 회로(ASIC), 프로그램 가능 로직 어레이(PLA), 필드 프로그램 가능 게이트 어레이(FPGA), 특수 목적 전자 회로 등, 또는 이들의 조합을 포함한다.
예를 들어, 프로그램 코드 수단은 저장 매체 또는 다른 컴퓨터/컴퓨팅 장치로부터 컴퓨터 네트워크를 통해 RAM과 같은 메모리에 로딩될 수 있다. 대안으로, 설명되는 특징들은 소프트웨어 대신에 하드 와이어드 회로에 의해, 또는 소프트웨어와의 조합으로 구현될 수 있다.
본 발명은 전술 및 후술하는 방법, 갱신된 메모리 이미지를 로딩하는 방법, 데이터 처리 시스템, 및 추가적인 제품 수단을 포함하는 다양한 방법으로 구현될 수 있는데, 이들 각각은 최초 언급된 방법과 관련하여 설명된 이익들 및 이점들 중 하나 이상을 산출하며, 각각은 최초 언급된 방법과 관련하여 설명되는 그리고/또는 종속항들에 개시되는 바람직한 실시예들에 대응하는 하나 이상의 바람직한 실시예를 갖는다.
구체적으로, 일 양태에 따르면, 현재 메모리 이미지 모듈을 저장하고 있는 저장 매체에 갱신된 메모리 이미지 모듈을 로딩하는 방법은
갱신 명령들을 포함하는 델타 파일을 수신하는 단계-상기 갱신 명령들은 적어도 제1 메모리 어드레스의 파라미터 표현을 포함하고, 상기 파라미터 표현은 적어도 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 상기 갱신된 메모리 이미지 모듈의 위치에 관한 파라미터이고, 상기 델타 파일은 파라미터 해결 명령들을 더 포함함-;
상기 수신된 갱신 명령들 및 상기 파라미터 해결 명령들에 응답하여, 상기 현재 메모리 이미지 모듈을 상기 갱신된 메모리 이미지 모듈로 변환하는 단계
를 포함한다.
따라서, 타겟 처리 장치와 연관된 저장 매체에 저장된 현재 메모리 이미지 모듈의 델타 갱신을 갱신된 메모리 이미지 모듈로 수행하는 전반적인 방법은
타겟 처리 장치가 현재 메모리 이미지 모듈을 갱신된 메모리 이미지 모듈로 변환하게 하도록 적응되는 갱신 명령들을 포함하는 델타 파일을 생성하는 단계-상기 갱신 명령들은 제1 메모리 어드레스의 파라미터 표현을 포함하고, 상기 파라미터 표현은 적어도 메모리 공간 내의 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 갱신된 메모리 이미지 모듈의 위치에 관한 파라미터이고, 상기 델타 파일은 파라미터 해결 명령들을 더 포함함-;
상기 생성된 델타 파일을 타겟 처리 장치로 전송하는 단계;
수신된 갱신 명령들 및 파라미터 해결 명령들에 응답하여, 현재 메모리 이미지 모듈을 갱신된 메모리 이미지 모듈로 변환하는 단계
를 포함할 수 있다.
소정 실시예들에서, 파라미터 해결 명령들은 타겟 처리 장치가 메모리 공간 내의 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 갱신된 메모리 이미지 모듈의 위치의 값을 결정하고, 파라미터 표현 및 결정된 값으로부터 제1 메모리 어드레스의 어드레스 값을 결정하게 하도록 적응된다. 따라서, 소정 실시예들에서, 변환 단계는 메모리 공간 내의 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 갱신된 메모리 이미지 모듈의 위치의 값을 결정하는 단계, 및 파라미터 표현 및 결정된 값으로부터 제1 메모리 어드레스의 어드레스 값을 결정하는 단계를 포함한다.
소정 실시예들에서, 방법은 갱신된 메모리 이미지 모듈을 영속 메모리에 저장하는 단계를 더 포함한다.
소정 실시예들에서, 방법은 영속 메모리로부터 갱신된 프로그램 코드를 실행하는 단계를 더 포함한다.
방법이 메모리 공간 내의 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 갱신된 메모리 이미지 모듈의 위치를 결정/취득하는 단계를 더 포함할 때, 타겟 시스템은 설치시에 갱신된 메모리 이미지 모듈의 위치를 결정한다.
소정 실시예들에서, 방법은 상기 갱신된 메모리 이미지 모듈에 의해 어드레스 가능한, 상기 갱신된 메모리 이미지 모듈 외부의 적어도 하나의 어드레스 값을 포함하는 글로벌 심벌 테이블을 결정/취득하는 단계를 더 포함한다. 따라서, 갱신될 로드 모듈이 로드 모듈 외부의 메모리 어드레스들, 예를 들어 다른 로드 모듈들 내의 어드레스들에 대한 참조들을 포함하는 경우, 이러한 참조들은 델타 파일 생성 동안에 파라미터화되며, 이러한 파라미터들의 실제 값들은 타겟 시스템 상에서의 로드 프로세스에 의해 결정된다. 결과적으로, 설치될 로드 모듈이 참조하는 다른 로드 모듈들의 위치들은 델타 파일을 생성하는 오프라인 도구들에 의해 알려질 필요가 없다. 여기에 설명되는 파라미터 델타 갱신 프로세스의 추가적인 이점은 모 든 참조에 대한 재배치 정보의 저장을 필요로 하지 않는다는 점이다. 글로벌 심벌들, 즉 외부 참조들에 관련된 심벌들의 리스트를 유지하는 것으로 충분하다.
소정 실시예들에서, 상기 글로벌 심벌 테이블은 다른 메모리 이미지 모듈들에 의해 어드레스 가능한 상기 현재 메모리 이미지 모듈 내의 적어도 하나의 현재 어드레스 값을 포함하고, 상기 방법은 상기 현재 어드레스 값을, 상기 갱신된 메모리 이미지 모듈 내의 대응하는 갱신된 어드레스 값으로 갱신하는 단계를 포함한다. 따라서 글로벌 심벌 테이블은, 존재할 경우, 다른 로드 모듈들로부터 참조되는 갱신된 로드 모듈의 심벌 참조들의 갱신된 값들로 갱신되며, 따라서 현재 갱신된 모듈을 참조하는 임의의 다른 로드 모듈들의 갱신이 가능해진다. 따라서, 소정 실시예들에서, 방법은 참조들이 상기 현재 어드레스 값을 참조하는 다른 메모리 이미지 모듈들에서의 모든 참조를 상기 현재 어드레스 값에서 상기 갱신된 어드레스 값으로 갱신하는 단계를 더 포함한다.
소정 실시예들에서, 방법은 각각의 메모리 이미지 모듈에 대한 발신 참조들의 리스트를 제공하는 단계를 더 포함하고, 발신 참조들의 각각의 리스트는 대응하는 메모리 이미지 모듈로부터 어드레스되는, 상기 메모리 이미지 모듈 외부의 글로벌 심벌들의 리스트를 포함한다. 결과적으로, 글로벌 심벌들의 갱신을 위한 효율적인 메커니즘이 제공된다.
소정 실시예들에서, 현재 및 갱신된 메모리 이미지 모듈들의 재배치 가능 버전들은 객체 코드 포맷의 프로그램 코드를 포함한다.
다른 양태에 따르면, 데이터 처리 시스템이 전술 및 후술하는 방법의 단계들 을 수행하도록 적절히 프로그래밍된다.
다른 양태에 따르면, 컴퓨터 프로그램 제품은 데이터 처리 시스템 상에서 실행될 때, 상기 데이터 처리 시스템이 전술 및 후술하는 방법을 수행하게 하도록 적응되는 프로그램 코드 수단을 포함한다. 컴퓨터 프로그램 제품은 광 디스크, 하드 디스크, 플로피 디스크, 테이프, CD-ROM, 플래시 메모리, 메모리 스틱, 및/또는 다른 타입의 자기 및/또는 광학 저장 매체와 같이 상기 프로그램 코드 수단을 저장한 컴퓨터 판독 가능 매체로서 구현될 수 있다.
다른 양태에 따르면, 처리 장치는 현재 메모리 이미지 모듈을 저장하기 위한 저장 매체; 델타 파일을 수신하기 위한 통신 인터페이스-상기 델타 파일은 갱신 명령들을 포함하고, 상기 갱신 명령들은 제1 메모리 어드레스의 파라미터 표현을 포함하고, 상기 파라미터 표현은 적어도 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 갱신된 메모리 이미지 모듈의 위치에 관한 파라미터이고, 상기 델타 파일은 파라미터 해결 명령들을 더 포함함-; 및 상기 수신된 갱신 명령들 및 상기 파라미터 해결 명령들에 응답하여, 상기 현재 메모리 이미지 모듈을 갱신된 메모리 이미지 모듈로 변환하도록 적응되는 처리 수단을 포함한다.
소정 실시예들에서, 상기 처리 수단은 상기 갱신된 메모리 이미지 모듈을 영속 메모리에 저장하도록 더 적응된다.
소정 실시예들에서, 상기 처리 수단은 상기 영속 메모리로부터 갱신된 프로그램 코드를 실행하도록 더 적응된다.
소정 실시예들에서, 상기 처리 수단은 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 상기 갱신된 메모리 이미지 모듈의 위치를 결정/취득하도록 더 적응된다.
소정 실시예들에서, 상기 처리 수단은 상기 갱신 메모리 이미지 모듈에 의해 어드레스 가능한, 상기 갱신 메모리 이미지 모듈 외부의 적어도 하나의 어드레스를 포함하는 글로벌 심벌 테이블을 결정/취득하도록 더 적응된다.
소정 실시예들에서, 상기 글로벌 심벌 테이블은 다른 메모리 이미지 모듈들에 의해 어드레스 가능한 상기 현재 메모리 이미지 모듈 내의 적어도 하나의 현재 어드레스 값을 포함하고, 상기 처리 수단은 상기 현재 어드레스 값을 상기 갱신된 메모리 이미지 모듈 내의 대응하는 갱신된 어드레스 값으로 갱신하도록 더 적응된다.
소정 실시예들에서, 상기 처리 수단은 참조들이 상기 현재 어드레스 값을 참조하는, 상기 저장 매체에 저장된 다른 메모리 이미지 모듈들에서의 모든 참조를 상기 현재 어드레스 값에서 상기 갱신된 어드레스 값으로 갱신하도록 더 적응된다.
소정 실시예들에서, 상기 처리 장치는 각각의 메모리 이미지 모듈에 대한 발신 참조들의 리스트를 저장하고 있고, 발신 참조들의 각각의 리스트는 대응하는 메모리 이미지 모듈로부터 어드레스되는, 상기 메모리 이미지 모듈 외부의 글로벌 심벌들의 리스트를 포함한다.
타겟 처리 장치가 현재 메모리 이미지 모듈을 갱신된 메모리 이미지 모듈로 변환하게 하는 갱신 명령들을 포함하는 델타 파일을 생성하는 시스템은
상기 현재 메모리 이미지 모듈에 대응하는 현재 소프트웨어 버전의 표현을 저장하는 저장 수단;
제1 메모리 어드레스의 파라미터 표현을 포함하는 델타 파일-상기 파라미터 표현은 적어도 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 상기 갱신된 메모리 이미지 모듈의 위치에 관한 파라미터임-을 생성하고, 파라미터 해결 명령들을 상기 델타 파일 내에 포함시키도록 적응되는 처리 수단
을 포함한다.
소정 실시예들에서, 상기 처리 수단은 메모리 어드레스들에 대한 심벌 참조들을 포함하는, 상기 현재 및 갱신된 메모리 이미지 모듈들의 재배치 가능 버전들, 및 상기 현재 및 갱신된 메모리 이미지 모듈들의 각각의 재배치 가능 버전 내의 상기 심벌 참조들에 대한 현재 및 갱신된 재배치 명령들로부터 상기 델타 파일을 생성하도록 더 적응된다.
소정 실시예들에서, 상기 처리 수단은 적어도 하나의 공통 서브스트링을 식별하기 위하여 상기 현재 및 갱신된 메모리 이미지 모듈들의 재배치 가능 버전들을 비교하도록 더 적응되고, 상기 비교는 상기 심벌 참조들과 그에 대응하는 해결 명령들을 비교함으로써 상기 심벌 참조들을 비교하는 것을 포함한다.
소정 실시예들에서, 상기 처리 수단은 상기 심벌 참조들이 상기 현재 및 갱신된 메모리 이미지 모듈들의 재배치 가능 버전들에서 동일한 경우 및 상기 심벌 참조들에 대한 대응하는 현재 및 갱신된 해결 명령들이 동일한 경우에만 상기 심벌 참조들이 동일한 것으로 결정하도록 더 적응된다.
소정 실시예들에서, 상기 처리 수단은 상기 현재 및 갱신된 메모리 이미지 모듈들의 재배치 가능 버전들 내의 공통 서브스트링의 식별에 응답하여,
상기 타겟 처리 장치가 상기 식별된 공통 서브스트링을 상기 갱신된 메모리 이미지 모듈에 추가하게 하는 추가 명령 및 상기 타겟 처리 장치가 상기 식별된 공통 서브스트링을 상기 현재 메모리 이미지 모듈에서 상기 갱신된 메모리 이미지 모듈로 복사하게 하는 복사 명령과 연관된 각각의 크기들을 비교-상기 각각의 크기들의 비교는 상기 추가 및 복사 명령들, 및 존재할 경우, 상기 공통 서브스트링 내에 포함된 심벌 참조들에 대한 각각의 파라미터 해결 명령들의 각각의 크기들을 비교하는 것을 포함함-하고,
상기 비교의 결과에 응답하여, 추가 명령 또는 복사 명령을 생성하도록 더 적응된다.
소정 실시예들에서, 상기 처리 수단은 전처리 단계, 델타 파일 생성 단계 및 후처리 단계를 실행하도록 더 적응되고,
상기 전처리 단계는
상기 현재 및 갱신된 메모리 이미지 모듈들의 각각의 재배치 가능 버전들의 각각의 정규 표현들을 생성하는 단계-상기 정규 표현들에서 메모리 어드레스들에 대한 심벌 참조들은 소정의 메모리 내용으로 대체됨-; 및
상기 대체된 심벌 참조들에 관한 정보를 상기 후처리 단계로 전달하는 단계
를 포함하고,
상기 델타 파일 생성 단계는 상기 재배치 가능한 현재 및 갱신된 메모리 이 미지 모듈들의 정규 표현들로부터 델타 파일을 생성하는 단계를 포함하고,
상기 후처리 단계는 상기 전달된 상기 대체된 심벌 참조들에 관한 정보 및 상기 생성된 델타 파일로부터 상기 파라미터 해결 명령들을 생성하는 단계를 포함한다.
소정 실시예들에서, 시스템은 상기 생성된 델타 파일을 상기 처리 장치로 전송하도록 적응되는 통신 수단을 포함한다.
소정 실시예들에서, 상기 갱신된 메모리 이미지 모듈은 상기 제1 메모리 어드레스에 대한 적어도 하나의 참조를 포함한다.
갱신된 메모리 이미지 모듈을 이용하여 현재 메모리 이미지 모듈의 델타 갱신을 수행하기 위한 시스템은 전술한 바와 같이 델타 파일을 생성하기 위한 시스템 및 전술한 바와 같은 처리 장치를 포함한다.
본 설명의 목적을 위해, 처리 장치 및 전자 장치라는 용어는 프로그램 코드를 저장하기 위한 플래시 메모리와 같은 메모리를 포함하는 임의의 장치를 포함한다. 이러한 장치들의 예는 휴대형 무선 통신 장비 및 다른 핸드헬드 또는 휴대형 장치들을 포함한다. 휴대형 무선 통신 장비라는 용어는 이동 전화, 페이저, 통신기, 즉 일렉트로틱 오거나이저, 스마트 폰, 개인 휴대 단말기(PDA), 핸드헬드 컴퓨터 등과 같은 모든 장비를 포함한다.
상기 및 다른 양태들은 도면들을 참조하여 후술하는 실시예들로부터 명백하고 명료해질 것이다.
도 1은 이동 단말기 내의 소프트웨어를 갱신하기 위한 시스템의 일 실시예의 개략 블록도.
도 2는 이동 단말기와 같은 전자 장치의 개략 블록도.
도 3은 소프트웨어 갱신 전후의 처리 장치의 메모리 레이아웃의 일례를 나타내는 도면.
도 4는 소프트웨어 갱신 프로세스의 일 실시예의 블록도.
도 5는 델타 파일 생성 프로세스의 일 실시예의 기능 블록도.
도 6은 델타 갱신 에이전트의 일 실시예의 기능 블록도.
도 7은 델타 파일 생성 프로세스의 다른 실시예의 흐름도.
도 8은 현재 및 갱신된 로드 모듈들 내의 공통 서브스트링들을 결정하는 단계의 일례의 보다 상세한 흐름도.
도 9는 현재 및 갱신된 로드 모듈들 내의 공통 서브스트링들을 결정하는 단계의 다른 예를 나타내는 도면.
도 10은 현재 및 갱신된 로드 모듈들 내의 공통 서브스트링들을 결정하는 단계의 또 다른 예를 나타내는 도면.
도 1은 이동 단말기와 같은 전자 장치 내의 소프트웨어를 갱신하기 위한 시스템의 일 실시예의 블록도를 개략적으로 도시하고 있다. 시스템은 이동 단말기(101), 예를 들어 이동 전화 등, 소프트웨어 갱신 시스템(102), 및 통신 인터페이스(103)를 포함한다.
소프트웨어 갱신 시스템(102)은 통신 네트워크에 대한 액세스를 갖는 서버 컴퓨터를 포함할 수 있다. 소정 실시예들에서, 서버 컴퓨터의 기능은 복수의 컴퓨터, 예를 들어 컴퓨터 네트워크, 예를 들어 근거리 네트워크, 원거리 네트워크, 인터넷 등을 통해 접속된 컴퓨터들 사이에 분산될 수 있다. 소프트웨어 갱신 시스템(102)은 소프트웨어 갱신 시스템(102)이 통신 인터페이스(103)를 통해 데이터를 통신하는 것을 허가하는 인터페이스 회로(104)를 포함한다. 예를 들어, 인터페이스 회로(104)는 직렬 포트, 병렬 포트, 단거리 무선 통신 인터페이스, 예를 들어 적외선 포트, 블루투스 트랜시버 등을 포함할 수 있다. 인터페이스 회로들의 추가적인 예들은 네트워크 카드, DSL 모뎀, 게이트웨이 컴퓨터 등을 포함한다.
소프트웨어 갱신 시스템(102)은 갱신 프로세스를 제어하고 수행하도록 적절히 프로그래밍된 처리 유닛(105), 예를 들어 서버 컴퓨터의 CPU를 더 포함한다. 처리 유닛(105)은 여기에 설명되는 실제의 코드 생성 프로세스를 더 수행할 수 있다. 그러나, 통상적으로, 코드 생성은 다른 컴퓨터에 의해 수행된 후, 생성된 코드가 처리 유닛(105)으로 전달된다. 소프트웨어 갱신 시스템(102)은, 예를 들어 메모리 이미지들 및/또는 객체 코드 형태의 갱신될 소프트웨어의 베이스/현재 버전 및 갱신 버전, 및 재배치 정보와 같은 추가적인 정보를 적어도 저장하고 있는 버전 데이터베이스/저장소(106)를 더 포함한다. 소정 실시예들에서, 버전 데이터베이스는 추가적인 정보, 예를 들어 이동 단말기들의 상이한 모델들, 고객들의 상이한 그룹들 등에 대한 복수의 베이스 버전 및/또는 갱신 버전을 더 포함할 수 있다.
통신 인터페이스(103)는 소프트웨어 갱신 시스템(102)과 이동 단말기(101) 사이에 데이터를 통신하기 위한 임의의 적절한 유선 또는 무선 통신 인터페이스일 수 있다. 예를 들어, 셀룰러 통신 네트워크, 예를 들어 GSM 네트워크, UMTS 네트워크, GPRS 네트워크 등을 통해 통신하도록 적응되는 이동 전화의 경우에, 소프트웨어 갱신과 관련된 소프트웨어 갱신 시스템(102)과 이동 단말기(101) 간의 통신은 셀룰러 통신 네트워크를 통해 수행될 수 있으며, 따라서 이동 단말기(101)에서의 추가적인 통신 인터페이스에 대한 필요를 없앨 수 있다.
따라서, 이동 단말기(101) 상의 소프트웨어를 갱신하기 위하여, 이동 단말기(101)는 예를 들어 재기입될 메모리 섹터들의 이미지들을 포함하는 갱신 명령들을 소프트웨어 갱신 시스템(102)으로부터 수신할 수 있다.
델타 파일들을 사용하는 상이한 소프트웨어 갱신 시스템(102)에서, 갱신 명령들은 이동 단말기가 이동 단말기(101)에 이미 저장된 기존 버전 및 갱신 명령들에 포함된 추가 정보로부터 갱신 소프트웨어 버전을 생성하는 것을 가능하게 하도록 생성된다. 델타 파일은 그 자리에서 적용될 수 있는데, 즉 이동 단말기(101)에 의해 기존 이미지에 대한 변경들이 이루어지며, 따라서 추가 저장을 거의 요구하지 않는다. 또한, 델타 파일만이 로딩되면 되고, 통상적으로 델타 파일은 새 버전보다 훨씬 작으므로, 상기 방법에 의해 로딩 시간이 줄어든다.
따라서, 위에서, 여기에 설명되는 프로세스 및 시스템이 적용될 수 있는 가능한 시나리오가 설명되었다. 그러나, 여기에 설명되는 델타 갱신 프로세스는 다른 시나리오들에도 적용될 수 있다는 것을 이해할 것이다. 예를 들어, 갱신은 다른 매체, 예를 들어 다른 통신 채널들, 컴퓨터 판독 가능 매체 등을 통해 타겟 장치에 제공될 수 있다. 이하, 델타 갱신 프로세스의 실시예들이 더 상세히 설명된다.
도 2는 이동 단말기와 같은 전자 장치의 일례의 블록도를 개략적으로 도시하고 있다. 이동 단말기(101)는 통신 블록(210), 처리 유닛(211) 및 메모리 유닛(212)을 포함한다.
통신 블록(210)은 셀룰러 통신 네트워크를 통한 무선 기반 데이터 통신을 허가하는 회로 및/또는 장치들을 포함한다. 따라서, 본 설명의 목적을 위해, 통신 블록(210)은 데이터 신호를 수신하기 위한 수신기 회로를 포함한다. 통신 블록은 신호들을 적절히 처리하기 위한, 예를 들어 무선 통신 분야에 공지된 적절한 기술들을 이용하여 신호들의 변조, 코딩, 증폭 등을 행하기 위한 회로를 더 포함할 수 있다.
이동 단말기(101)는 처리 유닛(211), 예를 들어 적절히 프로그래밍된 마이크로프로세서를 더 포함한다. 처리 유닛은 갱신 프로세스와 관련된 다양한 기능, 예를 들어 이동 단말기(101)에 저장된 소프트웨어의 버전 결정, 저장된 소프트웨어의 체크섬 계산, 대응 갱신 명령들의 수신시의 소프트웨어의 갱신 버전의 생성 등과 같은 기능들을 수행하도록 더 적응된다.
메모리 유닛(212)은 소정 버전의 소프트웨어 및/또는 다른 데이터를 저장하고 있다. 예를 들어, 메모리(212)는 처리 유닛(211)에 로딩되어 실행될 때 이동 단말기의 기본 기능들을 구현하는 이동 단말기의 펌웨어를 포함할 수 있다. 펌웨어는 애플리케이션 소프트웨어가 실행되는 것을 허가하는 운영 체제를 더 포함할 수 있다. 따라서, 메모리(212)는 추가 기능을 제공하는 애플리케이션 소프트웨어를 더 저장하고 있을 수 있다. 메모리(212)는 적절한 어드레스 공간을 이용하여 어드레스되며, 따라서 처리 유닛이 메모리의 선택된 부분들에 액세스하는 것을 허가한다. 소정 실시예들에서, 메모리(212)는 논리적으로 또는 물리적으로 다수의 메모리 섹터로 분할될 수 있다. 예를 들어, 메모리(212)는 데이터가 소정 크기의 섹터들에 기입되는 것을 허가하는 플래시 메모리를 포함할 수 있다. 그러나, 임의의 다른 메모리 어드레싱이 대신 사용될 수 있다는 것이 이해된다. 또한, 여기에 설명되는 갱신 프로세스는 예를 들어 이동 전화의 플래시 메모리의 전체 이미지가 갱신되어야 하는 경우에는 전체 메모리(212)에 적용되거나, 예를 들어 하나 이상의 소프트웨어 애플리케이션이 갱신되어야 할 경우에는 메모리의 소정 부분들에만 적용될 수 있다는 것이 이해된다.
도 3은 소프트웨어 갱신 전후의 처리 장치의 메모리 레이아웃의 일례를 나타낸다. 도 3a는 참조 번호 301로 일반적으로 참조되는 현재 설치된 메모리 이미지에 대응하는 프로그램 코드 버전의 메모리 레이아웃의 일례를 나타낸다. 메모리 이미지는 제1 로드 모듈(LM0), 및 LM1 및 LM2로 각각 지시되는 2개의 추가 로드 모듈을 포함한다. 도 3의 예의 목적을 위해, 로드 모듈(LM1)은 LM0에 인접 배치되는 것으로 가정한다. 결과적으로, 로드 모듈들(LM1, LM2)의 메모리 내의 정확한 위치는 예를 들어 로드 모듈(LM0)의 크기에 따라 변할 수 있는데, 이는 이들의 메모리 내의 위치가 다른 이유들로 인해 로드 시간에 타겟 장치에 의해 결정되기 때문이다. 따라서, 이들의 위치에 대한 지식은 서버측에서 델타 생성 프로세스에 대한 입력으로서 이용될 수 없다.
도 3b는 302로 일반적으로 지시되는 갱신된 메모리 이미지에 대응하는 갱신된 버전을 나타낸다. 이 예에서, 로드 모듈(LM0)은 델타 파일(ΔLM0)에 의해 갱신되어 갱신된 로드 모듈(LMO')이 된 것으로 가정한다. 갱신된 로드 모듈(LM0')은 최초의 로드 모듈(LM0)와 다른 크기를 갖는다. 마찬가지로, 로드 모듈들(LM1, LM2) 각각은 각각의 델타 파일(ΔLM1, ΔLM2)에 의해 갱신되어 각각의 갱신된 로드 모듈(LM1', LM2')이 되었다. 특히, 갱신된 로드 모듈들(LM1', LM2')은 이제 최초/베이스라인 버전의 대응하는 시작/베이스 어드레스들(S1, S2)과 다른 상이한 시작/베이스 어드레스들(S1', S2') 각각에 위치한다. 로드 시간에 타겟 장치에 의해 로드 모듈들의 시작 어드레스들의 선택이 행해질 때, 델타 파일들(ΔLM1LM2)을 생성한 델타 파일 생성 프로세스는 시작 어드레스들(S1, S2)도, 갱신된 시작 어드레스들(S1', S2')도 모를 수 있다.
따라서, 위의 시나리오에서, 메모리 구조는 소정의 위치에 항상 위치하는 로드 모듈, 및 가변 위치에 위치하는 하나 이상의 로드 모듈을 포함한다. 다른 메모리 구조들에서는 둘 이상의 모듈이 고정 위치를 갖는 반면, 또 다른 메모리 구조들에서는 모든 소프트웨어 모듈이 가변 위치를 가질 수 있다는 것을 이해할 것이다. 여기에 설명되는 파라미터 델타 갱신 프로시저는 델타 파일 생성 프로세스 또는 시스템에게 알려지지 않은 위치를 갖는 로드 모듈들, 예를 들어 동적으로 로딩되는 로드 모듈들의 델타 갱신을 지원한다. 특히, 타겟 장치의 메모리 내에 저장된 소프트웨어가 로드 모듈들의 어셈블리를 포함하는 시나리오에서, 여기에 설명되는 방법은 소프트웨어의 전체 메모리 이미지 또는 개별 부분들을 갱신하는 데 이용될 수 있다. 이러한 로드 모듈들은 예를 들어 상이한 기능에 대한 라이브러리들에 대응할 수 있다. 소프트웨어의 여러 상이한 버전이 동일 모듈을 포함하는 경우에, 모든 버전의 그 특정 모듈을 동일 갱신 패키지로 갱신하는 것이 가능하다.
이하에서, 도 4-10을 참조하여 증가 소프트웨어 갱신 프로세스의 여러 예가 설명된다. 도면들에서, 동일 참조 번호들은 동일하거나 대응하는 컴포넌트들, 특징들, 엔티티들 등을 참조한다.
도 4는 소프트웨어 갱신 프로세스의 일 실시예의 블록도를 나타낸다. 프로세스는 파라미터화된 델타 파일(408)을 생성하기 위해 갱신 서버에 의해 수행되는 델타 파일 생성 프로세스(402) 및 델타 파일(408)을 적용하기 위해 타겟 장치에 의해 수행되는 델타 파일 적용 프로세스(401)를 포함한다. 델타 파일 생성 프로세스는 델타 파일 생성기, 즉 현재 프로그램 코드 버전과 갱신된 프로그램 코드 버전 간의 차이들을 나타내는 델타 파일을 생성하는 갱신 서버에 의해 실행되는 소프트웨어 프로그램 또는 소프트웨어 프로그램의 기능 컴포넌트에 의해 수행될 수 있다. 마찬가지로, 델타 파일 적용 프로세스는 델타 파일 갱신 에이전트, 즉 타겟 장치에 의해 실행되는 소프트웨어 프로그램 또는 소프트웨어 프로그램의 기능 컴포넌트에 의해 수행될 수 있다.
델타 파일 생성 프로세스(402)는 403으로 일반적으로 지시되는 로드 모듈의 갱신 버전(L1_N), 및 그 로드 모듈의 일반적으로 405로 지시되는 대응 베이스라인 버전(L1_BL)을 수신한다. 갱신 버전(L1_N)은 통상적으로 코드 저장소로부터 또는 프로그램 코드 생성 프로세스(도시되지 않음), 예를 들어 소스 코드로부터 실행 가능 코드를 생성하는 컴파일러 및 링커를 포함하는 시스템으로부터 수신된다. 베이스라인 버전은 타겟 장치 상에 현재 설치된 소프트웨어 버전에 대응하며, 로드 모듈들의 데이터베이스(106), 버전 관리 시스템 또는 다른 적절한 코드 저장소로부터 수신된다. 소정 실시예들에서, 델타 생성기(402)는 예를 들어 소위 맵 파일 형태의 여분의 링크 정보와 같은 추가 입력들을, 예를 들어 저장소(106)로부터 수신할 수 있다. 로드 모듈은 미처리된 이진수(raw binary)에 더하여 재배치 정보(414, 415)를 각각 포함하는 객체 코드 포맷인 것으로 가정한다. 재배치 정보는 심벌 참조들을 해결할 때 사용되는데, 이러한 해결은 로드 시간까지 연기된다.
델타 파일 생성 프로세스(402)는 현재 메모리 이미지에서 갱신된 메모리 이미지로 갱신될 메모리를 갖는 타겟 장치에 대해 갱신 패키지로서 또는 갱신 패키지의 일부로서 전송되는 델타 파일(408)을 생성한다. 이 때문에, 타겟 장치는 후술하는 델타 파일 적용 프로세스(401)를 실행한다.
일반적으로, 베이스라인 파일을 새로운 파일로 갱신하기 위한 델타 파일의 생성은 다음 동작들에 의해 개략적으로 설명될 수 있다.
filenew - filebase -> Δfile
따라서, 새로운 버전의 실제 생성은 다음 동작에 따라 이동 단말기에 의해 수행될 수 있다.
filebase + Δfile -> filenew
델타 파일을 생성하고(위에서 "-"으로 표시됨) 이동 단말기 상에서 새로운 버전을 생성하는(위에서 "+"로 표시됨) 상기 동작들은 보다 많거나 적은 복잡한 동작들을 포함할 수 있다. 델타 파일은 일반적으로 적어도 2개의 부분, 즉 새로운 내용의 풀(pool) 및 명령들의 리스트를 포함하는데, 이 명령들은 새로운 내용과 설치된 이미지를 결합하는 방법을 기술한다. 새로운 이미지를 생성할 때, 각각의 워드는 설치된 이미지로부터 복사되거나, 새로운 내용의 풀로부터 추가된다.
상기 컴포넌트들에 더하여, 파라미터 델타 파일(408)은 내부 및 외부 참조들(절대 및 상대 양자)에 관한 정보(418)를 포함한다. 정보(418)는 델타 파일의 개별 섹션에 포함될 수 있고, 정보는 델타 파일의 나머지 명령들과 인터리빙될 수 있으며, 그리고/또는 임의의 다른 적절한 방식으로 델타 파일 내에 포함될 수 있다. 타겟 장치의 메모리 내에 존재하는 로드 모듈들의 위치들은 갱신 서버에게 알려지지 않으므로, 확장된 델타 파일(408)은 예를 들어 새로운 버전 및 베이스라인 버전의 시작 어드레스들 및 글로벌 심벌들의 위치들에 관한 파라미터가 된다. 따라서, 델타 파일 생성 프로세스(402)는 명령들의 세트 및 새로운 내용의 풀을 생성하는 델타 생성기 모듈(406), 및 베이스라인 버전 및 갱신된 버전으로부터 외부 및 내부 참조들을 추출하고 그 정보를 파라미터 델타 파일에 포함시키는 참조 추출 모듈(407)을 포함한다. 파라미터화는 델타 파일 내의 섹션들의 수 및/또는 명령들의 수를 늘릴 수 있다.
일 실시예에서, 파라미터 델타 파일은 다음 3개의 파라미터와 관련하여 파라미터화된다.
- 로드 모듈의 설치된 버전, 즉 베이스라인 버전(L1_BL)의 시작 어드레스.
- 로드 모듈의 새 버전(L1_N)의 시작 어드레스.
- 새로운 로드 모듈에 의해 사용되는 외부 심벌들의 값들.
델타 파일(408)이 적용될 때, 프로세스(401)는 시작 어드레스들(413), 즉 일반적으로 411로 지시되는 현재 설치된 이미지(L1_BL*)의 시작 어드레스, 및 타겟 장치가 410으로 지시되는 새로운 이미지(L1_N*)를 로딩하기로 결정한 시작 어드레스를 수신한다. 프로세스(401)는 타겟 장치의 메모리(212)에 저장된 글로벌 심벌 테이블(412)을 더 수신한다. 글로벌 심벌 테이블은 글로벌 심벌 참조들의 리스트, 즉 상이한 소프트웨어 모듈들 간의 심벌 참조들 및 이들 각각의 어드레스 값들을 포함한다. 이러한 파라미터들의 값들로부터, 프로세스(401)는 파라미터 델타 파일을 인스턴스화하고, 인스턴스화된 델타 파일을 설치된 이미지(L1_BL*)에 적용하여, 메모리(212) 내에 결정된 새로운 시작 어드레스에 저장되는, 410으로 지시되는 새로운 이미지(L1_New*)를 생성한다.
로드 모듈에 대한 파라미터 델타의 적용은 다음과 같이 설명될 수 있다.
단계 1: Loadmodulebaseline + Δ(startbaseline, startnew, Symbolsi) -> Loadmodulenew
단계 2: Symbolsi -> Symbolsi +1
단계 3: Referencesi loadmodule -> Referencesi +1 loadmodule
따라서, 단계 1에서, 델타는 베이스라인 버전에 적용된다. 델타에 대한 파라미터들은 베이스라인 및 새 버전 각각의 시작 어드레스들(startbaseline, startnew), 및 로드 모듈이 참조할 수 있는 글로벌 심벌들의 세트(Symbolsi)이다. 다음 단계에서, 글로벌 심벌 테이블은 로드 모듈의 새 버전으로부터 전송된 심벌들로 갱신된다. 또한, 다른 로드 모듈들로부터 갱신될 베이스라인 로드 모듈로의 모든 참조들도 새 버전의 올바른 심벌들을 지시하도록 갱신될 필요가 있을 수 있다. 이 때문에, 발신 참조들의 맵을 포함하는 참조 맵은 각각의 설치된 로드 모듈과 연관된다. 따라서, 제3 단계 동안, 현재 갱신된 로드 모듈의 참조 맵(Referencesi loadmodule)이 갱신된다. 이어서, 다른 로드 모듈들로부터 갱신된 로드 모듈들로의 참조들이 갱신된 참조 맵에 기초하여 갱신된다.
델타 파일 적용 프로세스(401)는 델타 파일을 설치된 이진 이미지(411)에 적용하는 반면, 델타 파일 생성 프로세스(402)에 대한 입력은 로드 모듈들(403, 405), 즉 객체 코드 포맷의 파일들을 포함한다는 점에 유의하는 것은 흥미롭다. 객체 코드 포맷은 설치된 이미지 내에 존재하지 않는 재배치 정보(414, 415)를 각각 포함한다. 재배치 정보는 로드 모듈이 설치될 때(정상적인 "완전" 설치) 소비된다. 이 프로세스 동안, 심벌 참조들이 해결된다.
위의 예에서 설명된 바와 같이, 델타 파일의 파라미터화는 델타 생성, 델타 파일 포맷 및 델타 파일들의 적용에 영향을 미친다. 그럼에도, 델타 파일들의 파라미터화는 도 5 및 6을 참조하여 후술하는 바와 같이 통상의 델타 생성 기술들을 이용하도록 구현될 수 있다.
도 5는 델타 파일 생성 프로세스의 일 실시예의 기능 블록도이다. 델타 파일 생성 프로세스(402)는 델타 생성기 모듈(506)에 더하여 프리 프로세서(516) 및 포스트 프로세서(517)를 포함한다. 델타 생성기 모듈(506)은 파라미터화를 모를 수 있는 통상의 델타 생성기일 수 있다. 적절한 델타 파일 기술들의 예는 미국 특허 제6,546,552 및 ACM SIGPLAN Workshop on Compiler Support for System Software (WCSSS'99), 1999에서 Brenda Baker, Udi Manber 및 Robert Muth의 "Compressing Differences of Executable Code"에 기술된 방법들을 포함한다.
프리 프로세서(516)의 목적은 2개의 로드 모듈(403, 405) 각각으로부터, 즉 갱신된/새로운 버전(L1_N)으로부터 그리고 베이스라인 버전(L1_BL)으로부터 이진 이미지를 발췌하면서 로드 모듈들 각각의 참조들의 추적을 유지하는 것이다. 이진 이미지들은 델타 생성기(506)에 공급되고, 참조들에 대한 정보는 포스트 프로세서(517)에 공급된다. 포스트 프로세서는 프리 프로세서(516)로부터의 정보 및 델타 생성기(506)에 의해 생성된 델타 파일을 수신한다. 이어서, 포스트 프로세서는 프리 프로세서(516)에 의해 수집된 참조들에 관한 정보를 이용하여 델타 파일을 추가 정보(418)로 확장하여, 파라미터 델타 파일(408)을 생성한다.
타겟 장치 내의 갱신 에이전트는 유사한 아키텍처를 갖도록 구현될 수 있다는 점에 유의한다. 도 6은 델타 파일 적용 프로세스의 일 실시예의 기능 블록도를 나타낸다. 델타 파일 적용 프로세스는 델타 갱신 모듈(620) 및 이에 뒤따르는 포스트 프로세서(621)를 포함한다. 갱신 모듈(620)은 파라미터화를 모르는 통상의 갱신 에이전트일 수 있다. 포스트 프로세서(621)는 델타 갱신 모듈(620)의 출력(622) 및 실제 파라미터 값들, 즉 이 실시예에서는 글로벌 심벌 테이블(412), 및 베이스라인 및 갱신된 버전의 로드 모듈의 시작 어드레스들(413)을 수신한다. 이러한 정보로부터, 포스트 프로세서는 갱신 모듈(620)에 의해 생성되는 이미지(622)를 인스턴스화하여 갱신 이미지(410)를 생성한다.
델타 파일 생성 프로세스의 프리 프로세서(516)는 설치 프로세스를 모방한다. 전술한 바와 같이, 설치 프로세스는 재배치 정보를 소비하고 심벌 참조들을 해결한다. 이 프로세스를 모방함으로써, 프리 프로세서(516)는 통상의 델타 파일 생성기에 대한 입력으로서 기능할 수 있는 로드 모듈의 표현을 생성하며, 이어서 통상의 델타 파일 생성기는 설치된 이미지와 관련될 수 있는 델타 파일을 생성한다. 그러나, 참조들은 여전히 해결되지 못할 수 있는데, 이는 설치된 이미지의 위치가 델타 생성 프로세스에 알려지지 않기 때문이다. 결과적으로, 참조들을 해결하는 데 필요한 "레시피(recipe)"를 포함하는 재배치 정보(414, 415)가 포스트 프로세서(517)로 전달된다. 프리 프로세서는 참조들을 해결하는 대신에, 이들을 가능한 한 유사하게 하여 델타 생성기(506)의 작업을 도울 수 있다. 예를 들어, 프리 프로세서(516)는 소정의 값, 예를 들어 0으로 모든 참조를 대체할 수 있다.
일반적으로, 두 종류의 심벌 참조들, 즉 절대 및 상대 참조들이 특히 관련된다. 절대 참조는 심벌의 값을 미처리 이진 내용 내의 플레이스홀더(placeholder)로 대체함으로써 간단히 해결된다. 상대 참조는 다르게 해결되는데, 즉 심벌의 값과 소스 어드레스 사이의 차이가 대응 공식에 의해 계산된다.
참조의 목적지는 코드 내의 위치이다. 위치들은 참조를 포함하는 로드 모듈의 내부이거나 외부이다. 내부 위치는 로드 모듈 내의 공지된 오프셋을 가지며, 로드 모듈의 시작 어드레스에 관하여 파라미터화될 수 있다(즉, start + offsetD). 로드 모듈의 외부인 목적지들은 심벌 명칭들에 의해 표현된다. 참조의 소스, 즉 참조가 이루어지는 위치는 로드 모듈의 내부임은 자명하다. 따라서, 소스는 (start + offsetS)로서 표현될 수 있다.
테이블 1은 전술한 참조 타입들에 대한 재배치 공식들을 요약한 것이다.
테이블 1: 내부 및 외부 위치들에 대한 절대 및 상대 참조들의 재배치 공식
절대 참조 상대 참조
내부 목적지 D=start+offsetD D-S=offsetD-offsetS
외부 목적지 D=symbolD D-S=symbolD-(start+offsetS)
내부 위치들에 대한 상대 참조들은 구축시에, 즉 델타 파일 생성 프로세스 중에 또는 전에 해결될 수 있다. 이러한 종류의 참조를 위치 독립적이라 한다. 결과적으로, 세 가지 타입의 참조들, 즉 내부 위치들에 대한 절대 참조들, 및 외부 위치들에 대한 절대 및 상대 참조들이 해결되어야 한다.
로드 모듈의 내부 위치들에 대한 절대 참조들은 로드 모듈의 시작 어드레스(start)에 의존한다. 외부 위치들에 대한 절대 참조들은 공지되지 않은 심벌 어드레스(symbolD)에 의존한다. 외부 위치들에 대한 상대 참조들은 공지되지 않은 심벌 어드레스 및 로드 모듈의 시작 어드레스에 의존한다.
이미지들을 유사하게 하는 한 가지 방법은 해결되지 않은 참조들 대신에 특정 상수, 예를 들어 0을 사용하는 것이다. 그러면, 모든 절대 참조는 어드레스 0을 지시하는 것으로 보이며, 해결되지 않은 상대 참조들은 참조가 이루어지는 위치에 이어지는 어드레스를 지시하는 것으로 보일 것이다. 소정의 델타 생성기들은 상대 참조들을 알고 있다(예를 들어, 미국 특허 제6,546,552호에 개시된 델타 생성기). 이러한 경우에, 프리 프로세서가 해결되지 않은 상대 참조들로 하여금 동일 위치, 예를 들어 로드 모듈의 시작을 지시하게 할 때, 보다 효율적인 델타 파일 생성이 제공될 수 있다.
델타 파일 생성 프로세스의 포스트 프로세서(517)는 갱신 에이전트가 참조들을 해결하는 것을 가능하게 하기 위해 델타 파일 내의 참조들에 대한 적절한 정보를 포함한다. 델타 파일이 타겟 장치에서 적용될 때, 갱신 에이전트는 모으도록 지시된다. 본 설명의 목적으로, 갱신 에이전트는 설치된 이미지로부터 워드들을 복사하거나 델타 파일의 일부로서 제공되는 풀로부터의 내용을 추가함으로써 그렇게 하는 것으로 가정될 수 있다. 아래에서, 상기 2개의 일반 대안들은 각각 델타 파일에서 "복사" 명령 및 "추가" 명령으로 표현되는 것으로 가정된다. 그러나, 소정의 델타 생성기들은 이러한 명령들의 서브타입들 및/또는 변형들을 포함하는 상이한 표현들을 이용할 수 있다.
아래에서, 포스트 프로세서(517)에 의한 상기 타입들의 참조들의 처리 및 타겟 장치에서의 델타 파일의 적용에 관한 대응하는 효과가 설명된다. 포스트 프로세서(517)의 기능을 설명하기 위해, 참조들을 해결하지 않고, 델타 생성기(506)에 의해 생성된 델타 파일을 설치된 이진 이미지에 적용한 결과를 비교하는 것이 도움이 된다. 이러한 결과들은 아래 테이블 2에 요약되고 원하는 결과들과 비교된다.
테이블 2: 델타 파일을 적용한 실제 및 원하는 결과들
명령 타입 참조 타입 실제 결과 원하는 결과
1 "복사" 절대 외부 SymbolD SymbolD
2 절대 내부 Start1+Offset1 Start2+Offset2
3 상대 외부 SymbolD-(Start1+Offest1) SymbolD-(Start2+Offest2)
4 "추가" 절대 외부 0 SymbolD
5 절대 내부 0 Start2+Offset2
6 상대 외부 0(또는 -Offset2) SymbolD-(Start2+Offest2)
먼저, 설치된 이미지에서 새로운 이미지로 참조가 복사되는 경우를 고려하는데, 이는 예를 들어 델타 파일에서의 대응하는 "복사" 명령에 의해 유발되며, 테이블 2의 1-3 행에 대응한다. 참조가 절대이고 외부 심벌을 목적지로 갖는 경우(테이블 2의 1 행), 설치된 이미지에서 새로운 이미지로 올바른 값(SymbolD)이 복사되며, 즉 후속 후처리가 필요하지 않게 된다. 2개의 다른 경우에(테이블 2의 2 행 및 3 행), 복사된 참조는 해결되어야 하는데, 이는 설치된 이미지 내의 참조 값이 설치된 로드 모듈 내의 참조의 소스의 시작 어드레스(start1) 및 오프셋(offset1)에 기초하는 반면, 올바로 갱신된 값은 갱신된 이미지 내의 대응 값들(start2, offset2)에 기초해야 하기 때문이다. 도 6의 실시예에서, 참조들을 수정하는 것은 포스트 프로세서(621)의 임무이다. 따라서, 이 실시예에서, 델타 갱신 모듈(620)은 "실제 값들" 열에 리스트된 어드레스 값들을 생성할 수 있으며, 포스트 프로세서(621)는 이 값들을 수정하여 "원하는 값들" 열에 리스트된 값들을 생성한다. 갱신 에이전트의 포스트 프로세서(621)가 이 프로세스를 수행할 수 있도록 하기 위하여, 델타 생성기의 포스트 프로세서(517)는 섹션(418)에 의해 델타 파일을 확장한다. 참조들을 복사할 때, 델타 파일의 섹션(418) 내에 삽입되는 정보는 로드 모듈 내의 참조의 소스 위치 및 참조의 종류(즉, 절대 외부 등)를 포함할 수 있다.
참조가 복사되는 것이 아니라, 예를 들어 델타 파일에서의 대응 "추가" 명령에 의해 유발되는, 델타 파일에 포함된 새로운 내용의 풀로부터의 참조 추가가 행해지는 경우, 테이블 2의 4-6 행에 대응하는 후처리 세트가 필요하다. 전술한 바와 같이, 델타 생성기(506)의 포스트 프로세서(517)는 섹션(418)에 의해 델타 파일을 확장하며, 이는 참조들의 수정을 가능하게 한다. 추가된 참조의 경우, 델타 파일의 섹션(418)에 포함된 정보는 로드 모듈 내의 참조의 소스 위치, 참조의 종류, 목적지(심벌 및/또는 오프셋)를 포함할 수 있다. Start2+Offset2가 참조의 소스 위치이므로, 테이블 2의 6 행의 경우의 Offset2의 값은 암시적으로 알려진다는 점에 유의한다. 또한, 테이블 2의 4-6 행의 "실제 결과" 값들은 델타 파일 생성 프로세스의 프리 프로세서(516)의 결과에 의존할 수 있다는 점에 유의한다.
테이블 2에서는, 프리 프로세서(516)가 모든 참조를 0으로 대체하여, 갱신된 참조들이 설치된 이미지 내의 대응 참조들과 동일하도록 모방하고 델타 파일 생성자가 테이블 2의 1-3 행에 대응하는 이러한 참조들을 설치된 이미지로부터 복사하게 하는 것으로 가정한다. 그럼에도, 전술한 바와 같이, 대안 실시예에서, 프리 프로세서(516)는 상대 참조들이 후속 소스 어드레스가 아니라 로드 모듈의 시작을 지시하게 할 수 있다. 이 경우, 6 행의 실제 결과 값은 0 대신에 -Offset2일 것이다.
(테이블 2의 2행 및 3행에 따른) 복사된 참조들은 새로운 참조들(각각 테이블 2의 5행 및 6행에 따름)을 생성할 때와 동일한 메커니즘을 적용함으로써 블록 621에서 후처리될 수 있다. 따라서, 이 경우, 설치된 이미지로부터 복사된 정보(즉, "실제 결과들")는 포스트 프로세서(621)에 의해 본질적으로 무시된다.
대안으로, 포스트 프로세서(517)는 정확한 갱신 어드레스 값들을 생성할 때 설치된 이미지 내의 정보를 이용하여 델타 파일의 보다 간결한 표현을 가능하게 할 수 있다. 예를 들어, 내부 위치에 대한 절대 참조(테이블 2의 2행)는 W1=Start1+Offset1에서 W2=Start2+Offset2로의 변환을 수반한다.
Offset1과 Offset2가 동일한 경우(이는 델타 파일 생성 프로세스에 의해 검사될 수 있음), 위의 변환은 다음과 같이 환산된다.
W2=W1+Start2-Start1
따라서, 베이스라인 및 갱신 버전 각각의 로드 모듈의 시작 어드레스들(Start1, Start2)은 삽입될 파라미터들이고, 복사된 워드(W1)가 설치된 이미지로부터 복사된다. 따라서, 델타 파일 생성 프로세스의 포스트 프로세서(517)가 델타 파일 내의 참조의 소스 위치를 지정하는 것으로 충분하다.
상대 외부 참조들(테이블 2의 3행)의 경우는 동일 방법으로 처리되어, 포스트 프로세서(621)에 의해 평가될 다음의 변환 공식이 생성될 수 있다.
W2=W1+Start1+Offset1-Start2-Offset2
따라서, SymbolD에 대한 의존성이 제거되며, 이는 심벌이 델타 파일 내에 표현될 필요가 없음을 의미한다.
테이블 3은 델타 파일(408)의 확장(418)을 구성하는 레코드 타입들을 요약한 것이다.
테이블 3: 갱신 에이전트 포스트 프로세서에 의해 사용하기 위한 델타 파일 확장(418)의 레코드 타입들
명령 타입 참조 타입 델타 파일에서 제공되는 정보
1 "복사" 절대 외부 필요한 정보 없음
2 절대 내부 참조의 소스 (Offset1=Offset2인 경우)
3 상대 외부 참소의 소스, 차이(Offset1-Offset2)
4 "추가" 절대 외부 참조의 소스, 심벌
5 절대 내부 참조의 소스, Offset2
6 상대 외부 참조의 소스, 심벌
델타 생성기의 포스트 프로세서(517)는 전술한 바와 같이 확장된 델타 파일을 생성한다. 이 때문에, 포스트 프로세서(517)는 델타 생성기(506)에 의해 생성된 델타 파일 및 로드 모듈의 양 버전의 재배치 정보(414, 415)에 대한 액세스를 갖는다. 로드 모듈의 새 버전 내의 각각의 참조에 대해, 포스트 프로세서(517)는 델타 파일 내의 대응 "복사" 또는 "추가" 명령을 찾는다. "추가" 명령의 경우, 대응하는 레코드 타입(테이블 3의 4-6행에 따름)이 생성된다.
포스트 프로세서(517)가 "복사" 명령을 검출할 때, 포스트 프로세서(517)는 그의 근원에 대해 복사 명령을 따르는데, 이는 델타 적용을 에뮬레이트함으로써 달성될 수 있다. 포스트 프로세서(517)는 로드 모듈의 베이스라인 버전(405)에서 데이터가 복사될 근원을 탐색한다. 베이스라인 로드 모듈 내에도 일치하는 참조가 존재하는 경우, 포스트 프로세서(517)는 참조 타입에 따라 테이블 3의 2행 또는 3행에 따른 대응 레코드를 생성한다. 외부 위치들에 대한 절대 참조들(1행)에 대한 레코드는 생성되지 않는다.
그러나, 델타 파일 내에 "복사" 명령이 존재하더라도, 베이스라인 로드 모듈 내에 일치하는 참조가 존재하지 않을 수 있다. 이는 전처리 단계(516)의 이 실시예의 아티팩트인데, 이는 예를 들어 모든 참조를 소정의 상수로 대체함으로써 상이한 참조들이 동일하게 보이게 한다. 또한, 이 실시예의 또 하나의 아티팩트는 소정 상수와 동일 값을 갖는 최초 이진 메모리 내용이 프리 프로세서에 의해 대체된 참조로부터 구별될 수 없다는 점이다. 이러한 상황들에서, 포스트 프로세서(517)는 "추가" 명령에 대응하는, 즉 참조 타입에 따라 4-6행 중 하나에 따른 레코드를 대체물(fallback)로서 생성한다.
따라서, 위에서, 통상의 델타 생성 도구들을 이용하는 파라미터 델타 갱신 프로세스의 일 실시예가 설명되었다. 이하에서는, 델타 파일 생성 및 델타 파일 적용을 위해 특수하게 적응되는 알고리즘들을 이용하는 실시예들이 도 7-10을 참조하여 설명된다. 이와 같이 보다 작은 델타 파일들을 생성하는 것이 가능하다. 특히, 이러한 실시예들은 복사 및 추가 명령들의 최상의 시퀀스를 선택할 때 해결 레코드들의 크기를 고려할 수 있다. 또한, 프리 프로세서에 의해 생성된 이진 이미지들이 아닌 로드 모듈들의 비교는 참조들의 특수 처리를 가능하게 한다.
도 7은 델타 파일 생성 프로세스의 다른 실시예의 흐름도이다.
일반적으로, 델타 생성은 블록 이동들의 최소 커버링 세트를 발견하는 문제로서 모델링될 수 있다(예를 들어, Walter F. Tichy: The String-to-String Correction Problem with Block Moves; ACM Transactions on Computer Systems 2:4 (November 1984), pp 309-321 참조).
블록 이동은 델타 파일 내의 복사 명령에 대응한다. 델타 생성의 목적을 위해, 가능한 한 적은 블록 복사들을 갖는 솔루션에 일반적으로 대응하는 최소의 가능한 델타 파일을 생성하는 것이 통상적으로 바람직하다.
블록 이동들의 최적 커버들이 다음의 알고리즘을 이용하여 발견될 수 있다.
- 공통 서브스트링들을 식별하기 위해 새로운 이미지(I2)의 서브스트링들이 구(베이스라인) 이미지(I1) 내에 배치된다.
- 각각의 공통 서브스트링은 블록 복사에 대응한다. 이른바 그리디(greedy) 알고리즘이 I2의 프리픽스인 I1 내에 존재하는 최장 서브스트링을 각 단계에서 식별한다.
이러한 알고리즘의 보다 상세한 예가 도 7에 도시되어 있다.
단계 S701에서, 목적지 포인터 d를 0으로 설정함으로써(d=0) 프로세스가 초기화되는데, 즉 포인터는 갱신 이미지(I2)의 시작을 지시하도록 초기화된다.
이어서, 프로세스는 전체 새로운 이미지(I2)가 처리될 때까지 다음 단계들(S702-S708)을 반복한다.
따라서, 단계 S702에서, 프로세스는 전체 새로운 이미지가 처리되었는지, 즉 d=N2인지를 검증하는데, 여기서 N2는 I2의 크기를 나타낸다. d=N2인 경우, 프로세스가 종료되며, 그렇지 않은 경우에 프로세스는 단계 S703으로 진행한다.
단계 S703에서, 프로세스는 I1 내의 I2[d:N2-1]의 최장 프리픽스를 식별한다. 미해결 참조들을 갖지 않는 상황에서, 최장 프리픽스의 발견은 s의 발견에 대응하며, 따라서 k가 최대이고, I1[s]=I2[d], I1[s+1]=I2[d+1],..., I1[s+k-1]=I2[d+k-1]이다. 그러나, 미해결 참조들의 존재 하에서, 프로세스는 후술하는 바와 같이 이러한 참조들을 이미지의 다른 내용과 별개로 처리한다.
후속 단계 S704에서, 프로세스는 그러한 서브스트링이 식별될 수 있는지를 테스트한다. 그러한 서브스트링이 발견될 수 없는 경우(즉, k=0), 프로세스는 "추가" 명령을 생성하고(단계 S705), I2 내의 d에 참조가 존재하지 않는 경우, d를 1만큼 진행시키는데, 이 경우에 d는 그 참조의 길이만큼 진행된다(단계 S706). 그렇지 않은 경우, 프로세스는 "복사" 명령, 예를 들어 타겟 장치 내의 갱신 에이전트가 어드레스 s에 시작하는 현재 설치된 이미지로부터 길이 k의 서브스트링을 복사하게 하는 명령인 "복사 s, k"를 생성한다(단계 S707). 이어서, 프로세스는 d를 k만큼 진행시킨다(단계 S708).
통상적으로, 복사된 블록이 작을 때(예를 들어, 3 바이트 이하)에는 "복사" 명령이 아니라 "추가" 명령을 사용하는 것이 바람직하다. 이것은 소스 포인터(s)를 지정하는 오버헤드, 및 "복사" 명령에서의 블록의 길이(k) 때문이다. 델타 파일 생성 알고리즘들의 많은 구현은 최소 커버링 세트를 발견하지만, 작은 블록 복사들을 추가 명령들로 대체한다. 따라서, 비경제적인 "복사" 명령들의 제거는 후처리 단계로서 수행될 수 있다. 또한, 소정 실시예들에서, 델타 생성에 대한 후처리 단계는 예를 들어 "복사"와 "추가" 명령 사이에서 선택할 때 해결 레코드들의 크기를 고려한다. 이와 같이, 이익이 없는 블록 이동들이 방지된다. 특히, 소정 실시예들에서, 포스트 프로세서는 "복사" 명령의 오버헤드가 통상적으로 "추가" 명령을 사용하는 대안의 오버헤드보다 클 때마다 "복사" 명령을 교체한다. "복사" 명령의 오버헤드는 시작 위치, 블록 길이 및 참조들의 해결을 위한 어드레스 정보를 포함하는 해결 레코드들(예를 들어, 테이블 3의 레코드들)을 표현하는데 필요한 저장을 포함한다. "추가" 명령의 오버헤드는 블록 길이, 새로운 내용 및 해결 레코드들(이는 테이블 3에 나타낸 바와 같이 "복사" 명령의 대응 해결 레코드들과 다른 크기일 수 있다)을 표현하는 데 필요한 저장을 포함한다. 포스트 프로세서는 이익이 없는 "복사" 명령을 "추가" 명령으로 변환하는 옵션을 갖는다. 또한, 후처리로부터 발생하는 인접 "추가 명령들을 병합하는 것이 가능하다.
전술한 바와 같이, 단계 S703은 공통 서브스트링들을 식별할 때 미해결 참조들을 고려한다. 이 때문에, 프로세스는 이미지의 다른 내용과 별개로 미해결 참조 심벌들을 처리한다. 이미지 내에 인코딩될 값은 로드 시간까지 알려지지 않으므로, 동일 심벌 공식을 이용하여 해결되는 두 참조 사이에서만 동일성이 보증될 수 있다. 이 때문에, 델타 파일 생성 프로세스는 부분 참조들이 아니라 전체/완전한 참조들을 매칭/복사한다.
아래에서, I1 내의 I2[d:N2-1]의 최장 프리픽스를 발견하는 단계의 구현들의 3개의 예가 도 8-10을 참조하여 설명된다. 3개의 예는 모두 델타 파일을 생성할 때는 이용할 수 있지만, 타겟 장치에 델타 파일을 설치할 때는 반드시 이용할 수 있는 것은 아닌 재배치 정보를 이용한다. 특히, 재배치 정보는 미해결 참조들이 식별되는 것을 허가한다.
R1=r11 r12 ... r1m1을 설치된 로드 모듈의 재배치 레코드들의 집합이라 하고, R2=r21 r22 ... r2m2를 새로운 로드 모듈의 대응 집합이라 한다. 각각의 재배치 레코드(rjk)는 하나의 참조를 해결하는 데 필요한 속성들을 지정하는 것으로 가정한다. 특히, 그의 이미지 내의 오프셋인 참조의 위치(source(rjk))는 rjk에 의해 주어진다. 본 설명의 목적을 위해, 2개의 동일한 자원은 술어 equal(rjk, rmn)을 통해 식별될 수 있다.
도 8은 현재 및 갱신된 로드 모듈들 내의 공통 서브스트링들을 결정하는 단계의 일례의 보다 상세한 흐름도를 나타낸다.
도 8의 프로세스는 다음의 입력, 즉 전체의 설치된(베이스라인) 이미지 I1[0:N1-1], 새로운 이미지의 서픽스 I2[d:N2-1], 및 각각의 재배치 레코드들(R1, R2)의 집합을 수신한다.
프로세스는 다음의 출력, 즉 I1 내의 서브스트링의 위치(max_s) 및 그의 길이(max_len)를 생성한다.
최초 단계 S801에서, 프로세스는 베이스라인 이미지(I1)로의 포인터 s를 이미지의 시작을 지시하도록 초기화하며(즉, s=0), 출력 값들을 0으로 초기화한다(max_s=max_len=0).
이어서, 프로세스는 전체 설치된 이미지(I1)가 처리될 때까지 다음 단계들(S802-S814)을 반복한다. 따라서, 단계 S802에서, 프로세스는 전체 이미지가 처리되었는지, 즉 s=N1인지를 검사하는데, 여기서 N1은 I1의 크기를 나타낸다. s=N1인 경우, 프로세스는 (max_s, max_I)를 델타 파일 생성 프로세스에 반환하고 종료되며, 그렇지 않은 경우에 프로세스는 단계 S803으로 진행한다.
단계 S803에서, 프로세스는 공통 서브스트링의 현재 길이(k)를 k=0으로 초기화하고, 불일치가 존재할 때까지(아래 참조), s+k=N1일 때까지, 또는 d+k=N2일 때까지 단계들 S804-S809를 반복한다.
따라서, 단계 S804에서, 프로세스는 현재의 공통 서브스트링이 이미지들 중 하나의 끝에 도달하였는지, 즉 s+k=N1 또는 d+k=N2인지를 검증한다. 그러한 경우, 프로세스는 단계 S810으로 진행하고, 그렇지 않은 경우 프로세스는 단계 S805로 진행한다.
단계 S805에서, 프로세스는 source(r2p)=d+k인 재배치 레코드(r2p) 또는 source(r1q)=s+k인 재배치 레코드(r1q)가 존재하는지를 검사한다. 그러한 쌍이 발견되지 않는 경우, 프로세스는 현재 어드레스의 메모리 내용이 "플레인(plain)" 이진 내용인 것으로, 즉 미해결 참조가 존재하지 않는 것으로 판정하고, 단계 S806으로 진행하며, 그렇지 않고, 한 쌍의 참조들(r1q, r2p)이 발견된 때, 프로세스는 equal(r1q, r2p)인지를 검사한다(단계 S807). equal(r1q, r2p)인 경우, 프로세스는 k를 일치된 참조의 길이만큼 진행시키며(단계 S809), 그렇지 않은 경우, 불일치가 존재하며, 프로세스는 단계 S810으로 진행한다.
단계 S806에서, 프로세스가 플레인 이진 내용을 비교할 때, 프로세스는 I1[s+k]=I2[d+k]인지를 판정한다. 그러한 경우, 프로세스는 k를 1만큼 증가시키고(단계 S808), 그렇지 않은 경우 프로세스는 불일치를 발견하고 단계 S810으로 진행한다.
단계 S810에서, 프로세스는 k>max_len인지, 즉 지금까지 최장 프리픽스가 발견되었는지를 판정한다. 그러한 경우, 프로세스는 max_s=s, max_len=k로 설정한다(단계 S811).
이어서, 단계 S812에서, 프로세스는 source(r1q)=s인 재배치 레코드가 존재하는지, 즉 포인터(s)가 현재 베이스라인 이미지 내의 참조를 지시하고 있는지를 검사한다. 그러한 경우, 프로세스는 s를 그 참조의 길이만큼 진행시키고(단계 S813), 그렇지 않은 경우 프로세스는 s를 1만큼 진행시킨다(단계 S814).
이하에서, 효율적인 매칭 알고리즘들에 기초하는 2개의 대안 매칭 프로세스가 설명된다.
도 9는 현재 및 갱신된 로드 모듈들 내의 공통 서브스트링들을 결정하는 단계의 다른 예를 나타낸다. 도 9의 예는 해시 키들을 이용하여 고정 크기(예를 들어, 4 바이트)의 공통 서브스트링들을 효율적으로 식별하는 방법에 기초한다. Proceedings of the 3rd international wokrshop on Software Configuration management, May 1991, pp 144-152에서 Christoph Reichenberger에 의한 "Delta Storage for Arbitrary Non-Text Files"에 개시된 바와 같이, 서브스트링들의 검색은 고정 길이의 서브스트링들에 대해 해시 키들을 이용하여 고속화될 수 있다. 도 8의 방법의 단계들 S804-S809에서와 같이, 모든 가능한 시작 포인트를 고려하는 것이 아니라, 동일한 해시 키들을 갖는 시작 포인트들로 검색을 제한하는 것이 가능하다. 해시 키를 계산하는 데 사용되는 서브스트링들이 길면 길수록, 동일하지 않은 프리픽스들의 분리가 더 양호해지고, 고려해야 할 시작 포인트들이 더 적어지게 된다. 그러나, 키 길이 또한 매칭될 수 있는 최단 서브스트링을 제한한다. 최단의 유익한 복사 명령에 대응하는 키 길이의 이용은 하나의 옵션이다.
전처리 단계에서, I1 내의 소정 길이의 모든 서브스트링에 대한 해시 키들이 계산된다. I1 내의 각각의 심벌은 도 9a에 도시된 바와 같이 여러 해시 키에 기여한다. 도 9a는 9개의 심벌, 즉 "c", "d", "b", "a", "t", "a", "t" "a" 및 "s"를 포함하는 서브스트링(901)을 나타낸다. 스트링 "cdbatatas"에는 길이 3의 7개의 서브스트링이 존재한다. 스트링의 각각의 위치는 스트링 매칭을 위해 가능한 시작 포인트이다. 따라서, 도 9의 예의 목적을 위해 3의 키 길이를 가정하면, 매칭 프로세스는 7개의 해시 값, 즉 h(cdb), h(dba), h(bat), h(ata), h(tat), h(ata), h(tas)를 계산한다.
도 9b는 이러한 매칭 어프로치의 일반화를 나타낸다. 특히, 도 9b는 스트링(903) 'cdba<ref>tas'를 나타내는데, 여기서 <ref>는 특정 참조를 대체하는 특수 심벌(902)이다. 이 예에서, <ref>는 2개 위치의 폭을 갖는다. 서브스트링 내의 미해결 참조(902)는 해시 키의 값에 영향을 미친다. 그러나, 참조를 부분적으로 매칭시키는 것은 이치에 맞지 않으므로, 프로세스는 참조의 중간에서 시작하는 서브스트링들에 대한 해시 키들을 계산하지 않는다. 따라서, 이 예에서, 프로세스는 도 9b에 도시된 바와 같이 6개의 해시 값만을 계산한다. 참조의 중간에서 끝나는 서브스트링들을 방지하기 위해, 도 9b에서 해시 값 h(ba<ref>)로 도시된 바와 같이, 프로세스는 그러한 키들이 전체 참조를 포함하도록 확장한다.
도 10은 현재 및 갱신된 로드 모듈들 내의 공통 서브스트링들을 결정하는 단계의 또 다른 예를 나타낸다. 이 예에서, 서브스트링 매칭은 ACM Transactions on Computer Systems 2:4 (November 1984), pp 309-321에서 Walter F. Tichy에 의한 논문 "The String-to-String Correction Problem with Bolck Moves"에 개시된 서픽스에 기초하는 효율적인 알고리즘을 이용한다. 도 10a는 스트링 'bananas'의 서픽스 트리를 나타낸다(#은 고유 종료 마커이다). 서픽스 트리의 에지들에는 스트링 I1(도 9의 예에서 I1='batatas')의 서브스트링들이 주석으로 첨부되며, 노드들은 서브스트링들의 가능한 시작 포인트들로 라벨링된다. 루트(1001)에서 리프들(leaves)로의 경로들의 스트링들을 연결하면 모든 서픽스 I1[s: N1-1]가 생성된다. 내부 노드들은 여러 가능한 연속을 갖는 서브스트링들에 대응하는 반면, 리프들은 하나의 옵션만이 남는 경우에 대응한다. I1[s: N1-1] 및 I2[s: N2-1]의 공통 서브스트링들은 불일치가 발견되거나 리프에 도달할 때까지 서픽스 트리의 루트로부터 I2[s: N2-1]의 프리픽스들을 추적함으로써 발견된다. 예를 들어, 스트링 'atatd'를 추적할 때, 'a'(1002), 'ta'(1003) 및 'tas#'(1004)로 라벨링된 에지들이 트래버스된다. 최종 에지(1004)에 불일치가 존재한다('tas#'≠'td'). 추적은 공통 서브스트링 'atat'의 시작 포인트인, 1로 라벨링된 노드(1005)에서 종료된다. 따라서, I1의 서픽스 트리는 서브스트링들을 매우 빠르게 찾는 데 이용될 수 있다.
도 10b는 참조들을 고려하는 매칭 프로세스의 변형예를 나타낸다. 특히, 도 10b는 스트링 'ba<ref>tas'의 서픽스 트리를 나타내는데, 여기서 <ref>는 특정 참조를 대체하는 특수 심벌이다. 이 예에서, <ref>는 2개 위치의 폭을 갖는다. 노드 라벨들은 참조들의 대체 전의 최초 시작 위치들을 나타낸다. 참조들의 아토미시티(atomicity)는 각각의 미해결 참조를 고유하게 나타내는 심벌들에 의해 알파벳을 확장함으로써 달성될 수 있다(동일 참조들은 동일 심벌에 의해 표현된다). 서픽스 트리를 구성할 때, 추가된 심벌들은 미해결 참조들을 대체한다. 프리픽스들을 추적할 때 I2에서 동일한 대체가 이루어진다.
따라서, 위에서, 파라미터화된 델타 파일들을 통해 로드 모듈들을 증가 갱신하는 방법의 실시예들이 설명되었다. 여기에 설명되는 방법들의 이점은 델타 파일이 생성될 때 설치된 이미지의 정확한 내용을 알 필요가 없다는 점이다. 소정 값들의 상술은 델타 파일이 적용될 때까지 연기된다. 이 방법은 델타 생성 및 델타 적용을 위한 기존 기술들과 함께 이용될 수 있다. 기존 기술들은 델타 파일의 소정 특성들이 파라미터화되는 것을 허가하도록 확장된다.
상기 실시예들은 주로 플래시 메모리와 관련하여 설명되었다는 점에 유의한다. 그러나, 여기에 설명되는 방법은 보다 작은 단위로, 예를 들어 바이트 단위 또는 심지어 비트 단위로 기입 가능한 메모리 타입들을 포함하는 다른 타입의 메모리와 관련하여 구현될 수도 있음을 이해한다. 또한, 여기에 설명되는 방법은 광 디스크, 하드 디스크, 플로피 디스크, 테이프, 및/또는 다른 타입의 자기 및/또는 광학 저장 매체와 같은 다른 저장 매체와 관련하여 적용될 수도 있다. 예를 들어, 여기에 설명되는 방법은 실행 전에 보조 메모리/저장 매체에서 RAM으로 프로그램들을 로딩하는 데스크탑 컴퓨터와 같은 컴퓨터들의 갱신에 적용될 수도 있다.
본 발명은 여러 상이한 요소를 포함하는 하드웨어를 통해, 그리고 적절히 프로그래밍된 컴퓨터를 통해 구현될 수 있다. 여러 수단을 열거하는 장치 청구항들에서, 이들 수단 중 여럿은 하드웨어의 하나 그리고 동일한 항목에 의해, 예를 들어 적절히 프로그래밍된 마이크로프로세서 또는 컴퓨터, 및/또는 여기에 설명되는 바와 같은 하나 이상의 통신 인터페이스에 의해 구현될 수 있다. 소정의 수단들이 서로 다른 종속항들에 기재되거나 상이한 실시예들에 설명되어 있다는 단순한 사실은 이들 수단의 조합이 이익을 얻는 데 사용될 수 없다는 것을 나타내지 않는다.
본 명세서에서 사용될 때 "포함한다/포함하는"이라는 용어는 언급되는 특징들, 정수들, 단계들 또는 컴포넌트들의 존재를 지정하는 것으로 간주되며, 하나 이상의 다른 특징들, 정수들, 단계들, 컴포넌트들 또는 이들의 그룹들의 존재 또는 추가를 배제하지 않는다는 점이 강조되어야 한다.

Claims (53)

  1. 타겟 처리 장치가 현재 메모리 이미지 모듈을 갱신된 메모리 이미지 모듈로 변환하게 하는 갱신 명령들을 포함하는 델타 파일을 생성하는 방법으로서,
    제1 메모리 어드레스의 파라미터 표현을 상기 델타 파일에 포함시키는 단계-상기 파라미터 표현은 적어도 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 상기 갱신된 메모리 이미지 모듈의 위치에 관한 파라미터임-; 및
    파라미터 해결 명령들(parameter resolution instructions)을 상기 델타 파일에 포함시키는 단계
    를 포함하는 델타 파일 생성 방법.
  2. 제1항에 있어서, 상기 파라미터 표현은 또한, 상기 갱신된 메모리 이미지 모듈에 의해 참조되는, 상기 갱신된 메모리 이미지 모듈 외부의 각각의 어드레스 값에 관한 파라미터인 델타 파일 생성 방법.
  3. 제1항 또는 제2항에 있어서, 상기 파라미터 표현은 적어도 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 시작 어드레스 및 메모리 공간 내의 상기 갱신된 메모리 이미지 모듈의 시작 어드레스에 관한 파라미터인 델타 파일 생성 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 메모리 어드레스들에 대한 심벌 참조들을 포함하는, 상기 현재 및 갱신된 메모리 이미지 모듈들의 재배치 가능 버전들, 및 상기 현재 및 갱신된 메모리 이미지 모듈들의 각각의 재배치 가능 버전 내의 상기 심벌 참조들에 대한 현재 및 갱신된 재배치 명령들로부터 상기 델타 파일을 생성하는 단계를 포함하는 델타 파일 생성 방법.
  5. 제4항에 있어서, 상기 델타 파일을 생성하는 단계는 적어도 하나의 공통 서브스트링을 식별하기 위하여 상기 현재 및 갱신된 메모리 이미지 모듈들의 재배치 가능 버전들을 비교하는 단계를 더 포함하고, 상기 비교 단계는 상기 심벌 참조들과 그에 대응하는 해결 명령들을 비교함으로써 상기 심벌 참조들을 비교하는 단계를 포함하는 델타 파일 생성 방법.
  6. 제5항에 있어서, 상기 심벌 참조들을 비교하는 단계는 상기 심벌 참조들이 상기 현재 및 갱신된 메모리 이미지 모듈들의 재배치 가능 버전들에서 동일한 경우 및 상기 심벌 참조들에 대한 대응하는 현재 및 갱신된 해결 명령들이 동일한 경우에만 상기 심벌 참조들이 동일한 것으로 결정하는 단계를 포함하는 델타 파일 생성 방법.
  7. 제5항 또는 제6항에 있어서,
    상기 현재 및 갱신된 메모리 이미지 모듈들의 재배치 가능 버전들 내의 공통 서브스트링의 식별에 응답하여,
    상기 타겟 처리 장치가 상기 식별된 공통 서브스트링을 상기 갱신된 메모리 이미지 모듈에 추가하게 하는 추가 명령 및 상기 타겟 처리 장치가 상기 식별된 공통 서브스트링을 상기 현재 메모리 이미지 모듈에서 상기 갱신된 메모리 이미지 모듈로 복사하게 하는 복사 명령과 연관된 각각의 크기들을 비교하는 단계-상기 각각의 크기들을 비교하는 단계는 상기 추가 및 복사 명령들, 및 존재할 경우, 상기 공통 서브스트링 내에 포함된 심벌 참조들에 대한 각각의 파라미터 해결 명령들의 각각의 크기들을 비교하여 상기 각각의 크기들 중 최소 크기를 결정하는 단계를 포함함-; 및
    상기 비교의 결과에 응답하여, 상기 결정된 최소 크기에 대응하는 추가 명령 또는 복사 명령을 생성하는 단계
    를 더 포함하는 델타 파일 생성 방법.
  8. 제4항 내지 제7항 중 어느 한 항에 있어서, 상기 현재 및 갱신된 메모리 이미지 모듈들의 재배치 가능 버전들은 객체 코드 포맷의 프로그램 코드를 포함하는 델타 파일 생성 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 방법은 전처리 단계, 델타 파일 생성 단계 및 후처리 단계를 포함하고,
    상기 전처리 단계는
    상기 현재 및 갱신된 메모리 이미지 모듈들의 각각의 재배치 가능 버전들의 각각의 정규 표현들을 생성하는 단계-상기 정규 표현들에서 메모리 어드레스들에 대한 심벌 참조들은 소정의 메모리 내용으로 대체됨-; 및
    상기 대체된 심벌 참조들에 관한 정보를 상기 후처리 단계로 전달하는 단계
    를 포함하고,
    상기 델타 파일 생성 단계는 상기 재배치 가능한 현재 및 갱신된 메모리 이미지 모듈들의 정규 표현들로부터 델타 파일을 생성하는 단계를 포함하고,
    상기 후처리 단계는 상기 전달된 상기 대체된 심벌 참조들에 관한 정보 및 상기 생성된 델타 파일로부터 상기 파라미터 해결 명령들을 생성하는 단계를 포함하는 델타 파일 생성 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서, 상기 현재 메모리 이미지 모듈은 상기 타겟 처리 장치와 연관된 저장 매체에 저장되는 델타 파일 생성 방법.
  11. 제10항에 있어서, 상기 저장 매체는 처리 장치의 메모리인 델타 파일 생성 방법.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서, 상기 파라미터 해결 명령들은 상기 타겟 처리 장치가 적어도 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 위치 및 메모리공간 내의 상기 갱신된 메모리 이미지 모듈의 위치를 결정하고, 상 기 파라미터 표현 및 상기 결정된 값으로부터 상기 제1 메모리 어드레스의 어드레스 값을 결정하게 하도록 적응되는 델타 파일 생성 방법.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서,
    상기 갱신된 메모리 이미지 모듈을 이용하여, 타겟 처리 장치와 연관된 저장 매체에 저장된 상기 현재 메모리 이미지 모듈의 델타 갱신을 수행하는 단계를 더 포함하고,
    상기 델타 갱신을 수행하는 단계는
    상기 생성된 델타 파일을 상기 타겟 처리 장치로 전송하는 단계;
    상기 수신된 갱신 명령들 및 상기 파라미터 해결 명령들에 응답하여, 상기 현재 메모리 이미지 모듈을 상기 갱신된 메모리 이미지 모듈로 변환하는 단계
    를 포함하는 델타 파일 생성 방법.
  14. 제13항에 있어서, 상기 갱신된 메모리 이미지 모듈을 영속 메모리에 저장하는 단계를 더 포함하는 델타 파일 생성 방법.
  15. 제14항에 있어서, 상기 영속 메모리로부터 상기 갱신된 메모리 이미지 모듈에 포함된 갱신된 프로그램 코드를 실행하는 단계를 더 포함하는 델타 파일 생성 방법.
  16. 제13항 내지 제15항 중 어느 한 항에 있어서, 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 상기 갱신된 메모리 이미지 모듈의 위치를 취득하는 단계를 더 포함하는 델타 파일 생성 방법.
  17. 제16항에 있어서, 상기 갱신된 메모리 이미지 모듈에 의해 어드레스 가능한, 상기 갱신된 메모리 이미지 모듈 외부의 적어도 하나의 어드레스 값을 포함하는 글로벌 심벌 테이블을 취득하는 단계를 더 포함하는 델타 파일 생성 방법.
  18. 제17항에 있어서, 상기 글로벌 심벌 테이블은 다른 메모리 이미지 모듈들에 의해 어드레스 가능한 상기 현재 메모리 이미지 모듈 내의 적어도 하나의 현재 어드레스 값을 포함하고, 상기 방법은 상기 현재 어드레스 값을, 상기 갱신된 메모리 이미지 모듈 내의 대응하는 갱신된 어드레스 값으로 갱신하는 단계를 포함하는 델타 파일 생성 방법.
  19. 제18항에 있어서, 참조들이 상기 현재 어드레스 값을 참조하는 다른 메모리 이미지 모듈들에서의 모든 참조를 상기 현재 어드레스 값에서 상기 갱신된 어드레스 값으로 갱신하는 단계를 더 포함하는 델타 파일 생성 방법.
  20. 제13항 내지 제19항 중 어느 한 항에 있어서, 각각의 메모리 이미지 모듈에 대한 발신 참조들(outgoing references)의 리스트를 제공하는 단계를 더 포함하고, 발신 참조들의 각각의 리스트는 대응하는 메모리 이미지 모듈로부터 어드레스되는, 상기 메모리 이미지 모듈 외부의 글로벌 심벌들의 리스트를 포함하는 델타 파일 생성 방법.
  21. 제13항 내지 제20항 중 어느 한 항에 있어서, 상기 변환 단계는 적어도 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 상기 갱신된 메모리 이미지 모듈의 위치의 값을 결정하는 단계, 및 상기 파라미터 표현 및 상기 결정된 값으로부터 상기 제1 메모리 어드레스의 어드레스 값을 결정하는 단계를 포함하는 델타 파일 생성 방법.
  22. 제1항 내지 제21항 중 어느 한 항에 있어서, 상기 갱신된 메모리 이미지 모듈은 상기 제1 메모리 어드레스에 대한 적어도 하나의 참조를 포함하는 델타 파일 생성 방법.
  23. 현재 메모리 이미지 모듈을 저장하고 있는 저장 매체에 갱신된 메모리 이미지 모듈을 로딩하는 방법으로서,
    갱신 명령들을 포함하는 델타 파일을 수신하는 단계-상기 갱신 명령들은 적어도 제1 메모리 어드레스의 파라미터 표현을 포함하고, 상기 파라미터 표현은 적어도 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 상기 갱신된 메모리 이미지 모듈의 위치에 관한 파라미터이고, 상기 델타 파일은 파라미터 해결 명령들을 더 포함함-;
    상기 수신된 갱신 명령들 및 상기 파라미터 해결 명령들에 응답하여, 상기 현재 메모리 이미지 모듈을 상기 갱신된 메모리 이미지 모듈로 변환하는 단계
    를 포함하는 메모리 이미지 모듈 로딩 방법.
  24. 제23항에 있어서, 상기 파라미터 표현은 또한, 상기 갱신된 메모리 이미지 모듈에 의해 참조되는, 상기 갱신된 메모리 이미지 모듈 외부의 각각의 어드레스 값에 관한 파라미터인 메모리 이미지 모듈 로딩 방법.
  25. 제23항 또는 제24항에 있어서, 상기 파라미터 표현은 적어도 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 시작 어드레스 및 메모리 공간 내의 상기 갱신된 메모리 이미지 모듈의 시작 어드레스에 관한 파라미터인 메모리 이미지 모듈 로딩 방법.
  26. 제23항 내지 제25항 중 어느 한 항에 있어서, 상기 갱신된 메모리 이미지 모듈은 상기 제1 메모리 어드레스에 대한 적어도 하나의 참조를 포함하는 메모리 이미지 모듈 로딩 방법.
  27. 제23항 내지 제26항에 있어서, 상기 갱신된 메모리 이미지 모듈을 영속 메모리에 저장하는 단계를 더 포함하는 메모리 이미지 모듈 로딩 방법.
  28. 제27항에 있어서, 상기 영속 메모리로부터 갱신된 프로그램 코드를 실행하는 단계를 더 포함하는 메모리 이미지 모듈 로딩 방법.
  29. 제23항 내지 제28항 중 어느 한 항에 있어서, 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 상기 갱신된 메모리 이미지 모듈의 위치를 취득하는 단계를 더 포함하는 메모리 이미지 모듈 로딩 방법.
  30. 제29항에 있어서, 상기 갱신된 메모리 이미지 모듈에 의해 어드레스 가능한, 상기 갱신된 메모리 이미지 모듈 외부의 적어도 하나의 어드레스 값을 포함하는 글로벌 심벌 테이블을 취득하는 단계를 더 포함하는 메모리 이미지 모듈 로딩 방법.
  31. 제30항에 있어서, 상기 글로벌 심벌 테이블은 다른 메모리 이미지 모듈들에 의해 어드레스 가능한 상기 현재 메모리 이미지 모듈 내의 적어도 하나의 현재 어드레스 값을 포함하고, 상기 방법은 상기 현재 어드레스 값을, 상기 갱신된 메모리 이미지 모듈 내의 대응하는 갱신된 어드레스 값으로 갱신하는 단계를 포함하는 메모리 이미지 모듈 로딩 방법.
  32. 제31항에 있어서, 참조들이 상기 현재 어드레스 값을 참조하는 다른 메모리 이미지 모듈들에서의 모든 참조를 상기 현재 어드레스 값에서 상기 갱신된 어드레 스 값으로 갱신하는 단계를 더 포함하는 메모리 이미지 모듈 로딩 방법.
  33. 제23항 내지 제32항 중 어느 한 항에 있어서, 각각의 메모리 이미지 모듈에 대한 발신 참조들의 리스트를 제공하는 단계를 더 포함하고, 발신 참조들의 각각의 리스트는 대응하는 메모리 이미지 모듈로부터 어드레스되는, 상기 메모리 이미지 모듈 외부의 글로벌 심벌들의 리스트를 포함하는 메모리 이미지 모듈 로딩 방법.
  34. 제23항 내지 제33항 중 어느 한 항에 있어서, 상기 현재 및 갱신된 메모리 이미지 모듈들의 재배치 가능 버전들은 객체 코드 포맷의 프로그램 코드를 포함하는 메모리 이미지 모듈 로딩 방법.
  35. 제23항 내지 제34항 중 어느 한 항에 있어서, 상기 저장 매체는 처리 장치의 메모리인 메모리 이미지 모듈 로딩 방법.
  36. 제23항 내지 제35항 중 어느 한 항에 있어서, 상기 변환 단계는 적어도 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 상기 갱신된 메모리 이미지 모듈의 위치의 값을 결정하는 단계, 및 상기 파라미터 표현 및 상기 결정된 값으로부터 상기 제1 메모리 어드레스의 어드레스 값을 결정하는 단계를 포함하는 메모리 이미지 모듈 로딩 방법.
  37. 제23항 내지 제36항 중 어느 한 항에 있어서,
    상기 변환 단계는
    상기 현재 메모리 이미지 모듈의 제1 시작 어드레스, 및 타겟 장치가 상기 갱신된 메모리 이미지 모듈을 로딩하기로 결정한 제2 시작 어드레스를 결정하는 단계;
    상기 타겟 장치의 메모리에 저장되는 글로벌 심벌 테이블을 결정하는 단계;
    상기 결정된 파라미터들로부터 상기 파라미터 델타 파일을 인스턴스화하는 단계;
    상기 인스턴스화된 델타 파일을 상기 현재 메모리 이미지 모듈에 적용하여, 상기 결정된 제2 시작 어드레스에 저장될 상기 갱신된 메모리 이미지 모듈을 생성하는 단계
    를 포함하는 메모리 이미지 모듈 로딩 방법.
  38. 데이터 처리 시스템 상에서 실행될 때, 상기 데이터 처리 시스템이 제1항 내지 제22항 중 어느 한 항의 방법을 수행하게 하도록 적응되는 프로그램 코드 수단을 포함하는 컴퓨터 프로그램 제품.
  39. 휴대형 무선 통신 장비의 리프로그래밍을 위한 제1항 내지 제22항 중 어느 한 항의 방법의 이용.
  40. 처리 장치로서,
    현재 메모리 이미지 모듈을 저장하기 위한 저장 매체(212);
    델타 파일을 수신하기 위한 통신 인터페이스(210)-상기 델타 파일은 갱신 명령들을 포함하고, 상기 갱신 명령들은 제1 메모리 어드레스의 파라미터 표현을 포함하고, 상기 파라미터 표현은 적어도 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 갱신된 메모리 이미지 모듈의 위치에 관한 파라미터이고, 상기 델타 파일은 파라미터 해결 명령들을 더 포함함-;
    상기 수신된 갱신 명령들 및 상기 파라미터 해결 명령들에 응답하여, 상기 현재 메모리 이미지 모듈을 갱신된 메모리 이미지 모듈로 변환하도록 적응되는 처리 수단(211)
    을 포함하는 처리 장치.
  41. 제40항에 있어서, 상기 변환은 적어도 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 상기 갱신된 메모리 이미지 모듈의 위치의 값을 결정하고, 상기 파라미터 표현 및 상기 결정된 값으로부터 상기 제1 메모리 어드레스의 어드레스 값을 결정하는 것을 포함하는 처리 장치.
  42. 제40항 또는 제41항에 있어서, 상기 갱신된 메모리 이미지 모듈은 상기 제1 메모리 어드레스에 대한 적어도 하나의 참조를 포함하는 처리 장치.
  43. 제40항 내지 제42항 중 어느 한 항에 있어서, 상기 갱신 명령들은 또한, 상기 갱신된 메모리 이미지 모듈에 의해 참조되는, 상기 갱신된 메모리 이미지 모듈 외부의 어드레스 값에 관한 파라미터인 처리 장치.
  44. 제40항 내지 제43항 중 어느 한 항에 있어서, 상기 처리 수단은 상기 갱신된 메모리 이미지 모듈을 영속 메모리에 저장하도록 더 적응되는 처리 장치.
  45. 제44항에 있어서, 상기 처리 수단은 상기 영속 메모리로부터 갱신된 프로그램 코드를 실행하도록 더 적응되는 처리 장치.
  46. 제40항 내지 제45항 중 어느 한 항에 있어서, 상기 처리 수단은 메모리 공간 내의 상기 현재 메모리 이미지 모듈의 위치 및 메모리 공간 내의 상기 갱신된 메모리 이미지 모듈의 위치를 결정/취득하도록 더 적응되는 처리 장치.
  47. 제46항에 있어서, 상기 처리 수단은 상기 갱신 메모리 이미지 모듈에 의해 어드레스 가능한, 상기 갱신 메모리 이미지 모듈 외부의 적어도 하나의 어드레스를 포함하는 글로벌 심벌 테이블을 취득하도록 더 적응되는 처리 장치.
  48. 제47항에 있어서, 상기 글로벌 심벌 테이블은 다른 메모리 이미지 모듈들에 의해 어드레스 가능한 상기 현재 메모리 이미지 모듈 내의 적어도 하나의 현재 어 드레스 값을 포함하고, 상기 처리 수단은 상기 현재 어드레스 값을 상기 갱신된 메모리 이미지 모듈 내의 대응하는 갱신된 어드레스 값으로 갱신하도록 더 적응되는 처리 장치.
  49. 제48항에 있어서, 상기 처리 수단은 참조들이 상기 현재 어드레스 값을 참조하는, 상기 저장 매체에 저장된 다른 메모리 이미지 모듈들에서의 모든 참조를 상기 현재 어드레스 값에서 상기 갱신된 어드레스 값으로 갱신하도록 더 적응되는 처리 장치.
  50. 제40항 내지 제49항 중 어느 한 항에 있어서, 상기 처리 장치는 각각의 메모리 이미지 모듈에 대한 발신 참조들의 리스트를 저장하고 있고, 발신 참조들의 각각의 리스트는 대응하는 메모리 이미지 모듈로부터 어드레스되는, 상기 메모리 이미지 모듈 외부의 글로벌 심벌들의 리스트를 포함하는 처리 장치.
  51. 제40항 내지 제50항 중 어느 한 항에 있어서, 상기 처리 장치는 휴대형 무선 통신 장비인 처리 장치.
  52. 타겟 처리 장치가 현재 메모리 이미지 모듈을 갱신된 메모리 이미지 모듈로 변환하게 하는 갱신 명령들을 포함하는 델타 파일을 생성하는 시스템으로서,
    상기 현재 메모리 이미지 모듈에 대응하는 현재 소프트웨어 버전의 표현을 저장하는 저장 수단(106);
    제1항 내지 제22항 중 어느 한 항에 따른 방법의 단계들을 수행하여 상기 델타 파일을 생성하도록 적응되는 처리 수단(105)
    을 포함하는 델타 파일 생성 시스템.
  53. 제52항에 있어서, 상기 생성된 델타 파일을 상기 처리 장치에 전송하도록 적응되는 통신 수단(104)을 더 포함하는 델타 파일 생성 시스템.
KR1020087017673A 2005-12-20 2006-12-06 델타 파일을 생성하는 시스템, 델타 파일을 생성하는 방법및 이 방법을 수행하게 하도록 적응되는 프로그램 코드수단을 포함하는 컴퓨터 프로그램 제품, 처리 장치, 및메모리 이미지 모듈을 로딩하는 방법 KR20080087835A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
EP05388112.4 2005-12-20
EP05388112A EP1808764B1 (en) 2005-12-20 2005-12-20 Generating incremental program updates
US75204005P 2005-12-21 2005-12-21
US60/752,040 2005-12-21

Publications (1)

Publication Number Publication Date
KR20080087835A true KR20080087835A (ko) 2008-10-01

Family

ID=36097184

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087017673A KR20080087835A (ko) 2005-12-20 2006-12-06 델타 파일을 생성하는 시스템, 델타 파일을 생성하는 방법및 이 방법을 수행하게 하도록 적응되는 프로그램 코드수단을 포함하는 컴퓨터 프로그램 제품, 처리 장치, 및메모리 이미지 모듈을 로딩하는 방법

Country Status (7)

Country Link
US (1) US8296535B2 (ko)
EP (1) EP1808764B1 (ko)
KR (1) KR20080087835A (ko)
CN (1) CN101361044A (ko)
AT (1) ATE491988T1 (ko)
DE (1) DE602005025385D1 (ko)
WO (1) WO2007071324A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200080796A (ko) * 2018-12-27 2020-07-07 엘지이노텍 주식회사 펌웨어 장치 및 이를 포함하는 시스템

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130047145A1 (en) * 2006-08-29 2013-02-21 Quan-Jie Cui Match analysis for encoding optimized update packages
KR20080025957A (ko) * 2006-09-19 2008-03-24 삼성전자주식회사 휴대용 단말기에서 소프트웨어를 업그레이드하기 위한 장치및 방법
EP2229625B1 (en) 2007-12-13 2011-08-31 Telefonaktiebolaget LM Ericsson (publ) Updating firmware of an electronic device
KR20090090801A (ko) * 2008-02-22 2009-08-26 삼성전자주식회사 휴대 단말기의 펌웨어 업데이트 방법 및 장치
US8312447B2 (en) 2008-09-25 2012-11-13 Microsoft Corporation Managing updates using compiler and linker information
EP2199902A1 (en) * 2008-12-19 2010-06-23 Babeldreams S.L. Personalized, automated modification method and system for software applications and contents
US8468516B1 (en) * 2008-12-19 2013-06-18 Juniper Networks, Inc. Creating hot patches for embedded systems
JP5515331B2 (ja) * 2009-03-09 2014-06-11 ソニー株式会社 情報提供サーバ、情報提供システム、情報提供方法及びプログラム
US20110054977A1 (en) * 2009-08-27 2011-03-03 Oracle International Corporation Customer relationship management using text messages
US9176898B2 (en) 2009-11-09 2015-11-03 Bank Of America Corporation Software stack building using logically protected region of computer-readable medium
US9122558B2 (en) 2009-11-09 2015-09-01 Bank Of America Corporation Software updates using delta patching
US9128799B2 (en) * 2009-11-09 2015-09-08 Bank Of America Corporation Programmatic creation of task sequences from manifests
JP5559001B2 (ja) * 2010-10-15 2014-07-23 株式会社日立ソリューションズ 組込プログラム更新方法、組込プログラム更新プログラム、電子機器、ネットワークシステム
US9292272B2 (en) * 2010-12-17 2016-03-22 Telefonaktiebolaget L M Ericsson (Publ) Differential flash archive installation
US8863084B2 (en) * 2011-10-28 2014-10-14 Google Inc. Methods, apparatuses, and computer-readable media for computing checksums for effective caching in continuous distributed builds
SG11201401480QA (en) * 2011-12-01 2014-07-30 Tencent Tech Shenzhen Co Ltd Method and system for upgrading software
CN102650947B (zh) * 2012-04-01 2015-06-24 广东欧珀移动通信有限公司 一种Android手持设备连续增量的空中升级方法
CN103077062B (zh) * 2012-11-30 2016-08-03 华为技术有限公司 一种代码改动的检测方法和装置
US9342285B2 (en) 2012-11-30 2016-05-17 Huawei Technologies Co., Ltd. Method and apparatus for detecting code change
KR20140077435A (ko) * 2012-12-14 2014-06-24 삼성전자주식회사 모바일 단말의 소프트웨어 업데이트 서비스 방법 및 장치
CN104239081A (zh) * 2013-06-18 2014-12-24 富泰华工业(深圳)有限公司 软件升级系统及方法
US9268552B1 (en) * 2013-06-18 2016-02-23 Ayla Networks, Inc. Patching improvement for executables in memory constrained devices
US10156611B2 (en) * 2013-09-12 2018-12-18 Teradyne, Inc. Executing code on a test instrument in response to an event
US9430220B2 (en) * 2014-07-22 2016-08-30 GM Global Technology Operations LLC Method, medium, and apparatus for re-programming flash memory of a computing device
CN106293793A (zh) * 2015-06-02 2017-01-04 西安中兴新软件有限责任公司 一种终端的软件升级方法、装置和系统
JP6526357B2 (ja) * 2016-11-29 2019-06-05 三菱電機株式会社 制御装置およびプログラム更新方法
WO2019021064A1 (en) 2017-07-25 2019-01-31 Aurora Labs Ltd CONSTRUCTION OF SOFTWARE DELTA UPDATES FOR VEHICLE ECU SOFTWARE AND TOOL-BASED ANOMALY DETECTION
US10834206B2 (en) * 2018-02-27 2020-11-10 Excelfore Corporation Broker-based bus protocol and multi-client architecture
US11093241B2 (en) * 2018-10-05 2021-08-17 Red Hat, Inc. Outlier software component remediation
CN111176704B (zh) * 2018-11-09 2022-08-23 中移(杭州)信息技术有限公司 一种差分包文件生成方法、中断恢复方法和相关装置
CN110609698B (zh) * 2019-08-08 2023-03-24 浙江中控技术股份有限公司 控制算法单元在线升级方法及装置
CN111552503B (zh) * 2020-05-12 2023-03-31 重庆科技学院 工程文件处理方法、装置、计算机设备及存储介质
KR20220028879A (ko) * 2020-08-31 2022-03-08 현대자동차주식회사 차량의 ecu 업데이트 관리 장치 및 그 방법
US20230205514A1 (en) * 2021-12-27 2023-06-29 Honeywell International Inc. Bsidiff delta upgrade in external storage
CN114268941A (zh) * 2021-12-27 2022-04-01 北京自如信息科技有限公司 目标设备升级方法、装置、设备及存储介质
US20230214210A1 (en) * 2022-01-05 2023-07-06 Honeywell International Inc. Interruptable bsdiff delta decompression

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230316B1 (en) 1998-04-17 2001-05-08 Symantec Corporation Patching rebased and realigned executable files
IL125846A0 (en) 1998-08-19 1999-04-11 Emony Incremental program update
US6952823B2 (en) * 1998-09-01 2005-10-04 Pkware, Inc. Software patch generator using compression techniques
US6578194B1 (en) * 1999-09-08 2003-06-10 International Business Machines Corporation System and method using extended relocation types and operations in relocating operations
EP1337917A4 (en) * 2000-11-17 2009-04-08 Hewlett Packard Development Co SYSTEM AND METHOD FOR UPDATING AND DISTRIBUTING INFORMATION
JP2004536405A (ja) * 2001-07-16 2004-12-02 ユキング レン 組み込みソフトウェア更新システム
EP1533695B1 (en) * 2003-11-19 2013-08-07 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Updating data in a mobile terminal

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200080796A (ko) * 2018-12-27 2020-07-07 엘지이노텍 주식회사 펌웨어 장치 및 이를 포함하는 시스템

Also Published As

Publication number Publication date
US20090070374A1 (en) 2009-03-12
US8296535B2 (en) 2012-10-23
DE602005025385D1 (de) 2011-01-27
ATE491988T1 (de) 2011-01-15
CN101361044A (zh) 2009-02-04
WO2007071324A1 (en) 2007-06-28
EP1808764A1 (en) 2007-07-18
EP1808764B1 (en) 2010-12-15

Similar Documents

Publication Publication Date Title
KR20080087835A (ko) 델타 파일을 생성하는 시스템, 델타 파일을 생성하는 방법및 이 방법을 수행하게 하도록 적응되는 프로그램 코드수단을 포함하는 컴퓨터 프로그램 제품, 처리 장치, 및메모리 이미지 모듈을 로딩하는 방법
EP1738256B1 (en) Method and apparatus for reliably updating a stored version of content
US8200886B2 (en) Efficient system and method for updating a memory device
US9934301B2 (en) Methods and systems for file replication utilizing differences between versions of files
JP4903686B2 (ja) フラッシュメモリのプログラミング
CN111414315B (zh) 用来管理一记忆装置的方法以及其相关的记忆装置
US20060106888A1 (en) Data update system, differential data creating device and program for data update system, updated file restoring device and program
US8655897B2 (en) Data converting apparatus, method, and computer product
US10452370B2 (en) System, method and computer readable medium for space-efficient binary rewriting
US20060039618A1 (en) Method for reducing binary image update package sizes
US8082233B2 (en) Comparing data sets through identification of matching blocks
EP1956482A1 (en) Generating delta updates for a processing device
EP3834082B1 (en) Memory optimized block-based differential update algorithm
EP1934727A1 (en) Method and system for in-place updating content stored in a storage device
US7711891B1 (en) Method, system, and computer-readable medium for updating memory devices in a computer system
Baker et al. Compressing differences of executable code
JP2004234503A (ja) 差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム
US8413132B2 (en) Techniques for resolving read-after-write (RAW) conflicts using backup area
US11789708B2 (en) Compression of firmware updates
US20080243840A1 (en) Comparing data sets through identification of matching blocks
MX2008007601A (es) Generar actualizaciones de programa incrementales
Dressler et al. Query processing and system-level support for runtime-adaptive sensor networks
CN114741116A (zh) 一种程序移植方法及装置
CN113434342A (zh) 一种操作系统恢复方法、计算设备及存储介质
CN114594983A (zh) 多项目的代码开发方法、计算机设备及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application