KR20200089490A - 펌웨어 업데이트 방법 및 이를 수행하는 장치 - Google Patents

펌웨어 업데이트 방법 및 이를 수행하는 장치 Download PDF

Info

Publication number
KR20200089490A
KR20200089490A KR1020190006294A KR20190006294A KR20200089490A KR 20200089490 A KR20200089490 A KR 20200089490A KR 1020190006294 A KR1020190006294 A KR 1020190006294A KR 20190006294 A KR20190006294 A KR 20190006294A KR 20200089490 A KR20200089490 A KR 20200089490A
Authority
KR
South Korea
Prior art keywords
blocks
block
delta file
update
firmware
Prior art date
Application number
KR1020190006294A
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 삼성전자주식회사
Priority to KR1020190006294A priority Critical patent/KR20200089490A/ko
Priority to US16/743,904 priority patent/US11321079B2/en
Publication of KR20200089490A publication Critical patent/KR20200089490A/ko
Priority to US17/704,610 priority patent/US11797297B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Abstract

펌웨어 업데이트를 위한 서버 장치 및 이의 동작 방법이 개시된다. 본 개시에 따른 서버의 동작 방법은, 제1 버전 펌웨어에 포함되는 복수의 업데이트 영역들에 기반하여, 복수의 블록들을 포함하는 제1 델타 파일을 생성하는 단계, 상기 복수의 업데이트 영역들 각각에 상응하는 제어 블록, 변경 블록 및 추가 블록을 그룹핑(grouping)하여 복수의 유닛 블록들을 생성하도록, 상기 제1 델타 파일에 포함된 상기 복수의 블록들을 재배열(rearrange)함으로써 제2 델타 파일을 생성하는 단계, 복수의 블록들 중 추가 블록들에 기반하여, 복수의 스왑 블록들을 생성하는 단계, 및 상기 생성된 복수의 스왑 블록들을, 상기 제2 델타 파일에 추가함으로써 제3 델타 파일을 생성하는 단계를 포함하는 것을 특징으로 할 수 있다.

Description

펌웨어 업데이트 방법 및 이를 수행하는 장치{METHOD OF FIRMWARE UPDATE AND OPERATING DEVICE THEREOF}
본 개시의 기술적 사상은 펌웨어 업데이트에 관한 것으로, 더욱 상세하게는 변경된 델타(delta) 파일을 이용한 OTA(over the air)를 수행하는 펌웨어 업데이트 방법 및 이를 수행하는 장치에 관한 것이다.
전자 장치는 다양한 기능들을 수행하기 위한 소프트웨어(software)를 내재하고 있다. 상기 소프트웨어를 임베디드 소프트웨어 또는 펌웨어라고 한다. CPU의 급격한 발전에 따라 펌웨어의 역할 역시 다양하게 늘어나고 있다. 펌웨어는 보통 고객의 추가 요구사항을 반영하기 위해서, 또는 하드웨어(hardware)나 소프트웨어(software)에서 갖고 있던 문제를 해결하기 위해 지속적으로 업데이트를 실시하며, 제품의 펌웨어 업데이트는 다양한 방식으로 이루어진다. OTA(over the air)는 무선 통신을 통해 펌웨어를 업데이트하는 과정 전체를 지칭할 수 있다.
한편, 기기의 소형화 및 스마트화에 따라, IoT 기기의 사용이 증가하고 있다. IoT 기기는 물리적인 크기의 제약으로 인해 메모리 저장 공간이 작을 수 밖에 없다. 따라서, IoT 기기나 기타 플래시 메모리의 크기가 제한된 기기의 펌웨어 업데이트를 수행하기 위한 방안이 요구될 수 있다.
본 개시의 기술적 사상이 해결하고자 하는 과제는, 델타 파일에 포함된 복수의 블록들을 복수의 업데이트 영역들에 기반하여 재정렬(rearrange)함으로써 델타 파일의 부분 압축 해제를 수행하는 펌웨어 업데이트 방법 및 이를 수행하는 장치를 제공하는데 있다.
본 개시의 기술적 사상이 해결하고자 하는 과제는, 업데이트를 수행하는 전자 장치가 델타 파일에 포함된 복수의 스왑(swap) 블록들을 이용하여, 구 버전의 펌웨어에 포함된 복수의 업데이트 영역들을 재배열하는 펌웨어 업데이트 방법 및 이를 수행하는 장치를 제공하는데 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일 측면에 따른 펌웨어 업데이트를 위한 서버의 동작 방법은 제1 버전 펌웨어에 포함되는 복수의 업데이트 영역들에 기반하여, 복수의 블록들을 포함하는 제1 델타 파일을 생성하는 단계, 상기 복수의 업데이트 영역들 각각에 상응하는 제어 블록, 변경 블록 및 추가 블록을 그룹핑(grouping)하여 복수의 유닛 블록들을 생성하도록, 상기 제1 델타 파일에 포함된 상기 복수의 블록들을 재배열(rearrange)함으로써 제2 델타 파일을 생성하는 단계, 복수의 블록들 중 추가 블록들에 기반하여, 복수의 스왑 블록들을 생성하는 단계, 및 상기 생성된 복수의 스왑 블록들을, 상기 제2 델타 파일에 추가함으로써 제3 델타 파일을 생성하는 단계를 포함하는 것을 특징으로 할 수 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일 측면에 따른 펌웨어 업데이트를 위한 서버 장치는, 제1 버전 펌웨어에 포함되는 복수의 업데이트 영역들에 기반하여, 복수의 블록들을 포함하는 제1 델타 파일을 생성하는 델타 파일 생성부, 및 상기 복수의 업데이트 영역들 각각에 상응하는 제어 블록, 변경 블록 및 추가 블록을 그룹핑(grouping)하여 복수의 유닛 블록들을 생성하도록, 상기 제1 델타 파일에 포함된 상기 복수의 블록들을 재배열(rearrange)함으로써 제2 델타 파일을 생성하는 유닛 블록 생성부, 및 복수의 블록들 중 추가 블록들에 기반하여, 복수의 스왑 블록들을 생성하는 스왑 블록 생성부를 포함하고, 상기 생성된 복수의 스왑 블록들을, 상기 제2 델타 파일에 추가함으로써 제3 델타 파일을 생성하는 델타 파일 변경부를 포함하는 것을 특징으로 할 수 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일 측면에 따른 펌웨어 업데이트를 위한 전자 장치의 동작 방법은, 서버(server)로부터 복수의 스왑 블록들 및 복수의 유닛 블록들을 포함하는 압축 델타 파일을 수신하는 단계, 상기 압축 델타 파일에 대한 부분 압축 해제를 수행하여, 상기 복수의 스왑 블록들을 획득하는 단계, 상기 획득된 복수의 스왑 블록들 각각을 이용하여, 제1 버전 펌웨어의 복수의 업데이트 영역들 각각의 상대 주소를 변경하는 단계, 상기 압축 델타 파일에 대한 부분 압축 해제를 수행하여, 상기 복수의 유닛 블록들을 획득하는 단계, 및 상기 획득된 복수의 유닛 블록들을 이용하여, 상기 복수의 업데이트 영역들에 대한 펌웨어 업데이트를 수행하는 단계를 포함하는 것을 특징으로 할 수 있다.
본 개시의 기술적 사상에 따른 펌웨어 업데이트 방법 및 이를 수행하는 장치는, 델타 파일에 대한 부분 압축 해제를 수행함으로써, 델타 파일의 압축 해제를 위해 요구되는 메모리 크기를 감소시킬 수 있다.
본 개시의 기술적 사상에 따른 펌웨어 업데이트 방법 및 이를 수행하는 장치는, 구 버전의 펌웨어에 포함된 업데이트 영역들을 재배열함으로써, 업데이트 영역과 상이한 영역을 로드하는 에러(error)를 회피할 수 있다.
본 개시의 기술적 사상에 따른 펌웨어 업데이트 방법 및 이를 수행하는 장치는, 상기 에러를 회피하여 구 버전의 펌웨어가 저장된 플래시 메모리 영역을 사용하고, 새로운 버전의 펌웨어를 생성하기 위한 플래시 메모리 영역을 생성하지 않음으로써, 펌웨어 업데이트를 수행하는데 필요한 플래시 메모리의 크기를 감소시킬 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 펌웨어 업데이트 시스템을 도시하는 블록도이다.
도 2는 본 개시의 예시적 실시예에 따른, 제1 델타 파일에 포함된 복수의 블록들을 재정렬함으로써 복수의 유닛 블록들을 생성하는 예를 도시하는 도면이다.
도 3은 업데이트 오류가 발생하는 과정을 나타내는 도면이다.
도 4는 본 개시의 예시적 실시예에 따른 복수의 스왑 블록들을 이용하여 제1 버전 펌웨어를 재배치하는 예시를 나타내는 도면이다.
도 5는 본 개시의 예시적 실시예에 따른 서버의 동작 방법을 도시하는 순서도이다.
도 6은 본 개시의 예시적 실시예에 따른 전자 장치의 동작 방법을 도시하는 순서도이다.
도 7은 본 개시의 예시적 실시예들에 따른 서버와 전자 장치간에 신호 교환도를 도시한다.
도 8은 본 개시의 예시적 실시예에 따른 플래시 메모리 저장 공간의 변화를 나타내는 도면이다.
도 9는 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 10은 본 개시의 예시적 실시예에 따른 전자 장치의 예시들을 나타내는 블록도이다.
도 1은 본 개시의 예시적 실시예에 따른 펌웨어 업데이트 시스템을 도시하는 블록도이다.
도 1을 참조하면, 펌웨어 업데이트 시스템은 서버(10), 전자 장치(20) 및 통신 네트워크(30)를 포함할 수 있다. 도 1에 도시된 바와 같이, 서버(10)는 통신부(101), 델타 파일 생성부(102) 및 델타 파일 변경부(103)를 포함할 수 있다. 서버(10)는 펌웨어 소프트웨어를 제작 및 배포하는 전자 장치(20)의 제조사 서버에 상응할 수 있다.
다양한 실시예들에 따라, 서버(10)의 구성요소들은 논리 합성을 통해서 설계되는 하드웨어 블록, 일련의 명령어들(instructions)을 포함하는 소프트웨어 블록과 일련의 명령어들을 실행하는 적어도 하나의 프로세서를 포함하는 프로세싱 유닛(processing unit) 및 그것들의 조합을 포함할 수 있다.
통신부(101)는 전자 장치(20)에게 데이터를 송신하거나, 전자 장치(20)로부터 데이터를 수신할 수 있다. 일 실시예에 따라, 서버(10)는 통신부(101)를 이용하여, 전자 장치(20)로부터 펌웨어 업데이트를 요청하는 신호를 수신하거나, 전자 장치(20)에게 상기 펌웨어 업데이트를 요청하는 신호를 송신할 수 있다. 다른 실시예에 따라, 서버(10)는 통신부(101)를 이용하여, 전자 장치(20)에게 압축 델타 파일을 송신할 수 있다. 상기 압축 델타 파일은, 델타 파일 생성부(102)로부터 생성된 제1 델타 파일을 변경하는 델타 파일 변경부(103)에 의해 생성된 제3 델타 파일을 압축한 데이터에 상응할 수 있다.
델타 파일 생성부(102)는 제1 델타 파일을 생성할 수 있다. 델타 파일 생성부(102)는 제1 버전 펌웨어와 제2 버전 펌웨어의 차이 값에 기반하여, 제1 델타 파일을 생성할 수 있다. 델타 파일 생성부(102)는 bsdiff 알고리즘을 사용할 수 있다. 상기 제1 델타 파일은 복수의 블록들을 포함할 수 있다. 예를 들어, 복수의 블록들은 헤더, 제어 블록 그룹, 변경 블록 그룹, 및 추가 블록 그룹을 포함할 수 있다.
델타 파일 변경부(103)는, 델타 파일 생성부(102)로부터 생성된 제1 델타 파일을 제3 델타 파일로 변경할 수 있다. 델타 파일 변경부(103)는 복수의 업데이트 영역들에 기반하여, 복수의 블록들을 재배열함으로써 복수의 유닛 블록들을 생성할 수 있다. 상기 복수의 유닛 블록들 각각은, 복수의 업데이트 영역들 각각에 상응할 수 있다. 델타 파일 변경부(103)는 제1 버전 펌웨어에 포함된 복수의 업데이트 영역들의 상대 주소를 변경할 것을 지시하는 복수의 스왑 블록들을 생성 및 추가할 수 있다. 상기 상대 주소는, 메모리의 특정 영역에 대한 상대적인 주소를 지칭할 수 있다. 예를 들어, 상대 주소는 제1 버전 펌웨어에 대한 데이터가 저장된 영역 내에서 상대적인(relative) 위치를 지시하기 위한 주소 값을 포함할 수 있다. 즉, 제3 델타 파일은 제1 델타 파일에 포함된 복수의 블록들을 재배열하고, 복수의 스왑 블록들을 추가함으로써 생성될 수 있다. 델타 파일 변경부(103)는 유닛 블록 생성부(104) 및 스왑(swap) 블록 생성부(105)를 더 포함할 수 있다.
유닛 블록 생성부(104)는, 복수의 유닛 블록들을 생성할 수 있다. 유닛 블록 생성부(104)는 업데이트 영역별로 상응하는 복수의 블록들을 그룹핑함으로써 복수의 유닛 블록들을 생성할 수 있다. 유닛 블록 생성부(104)는 복수의 업데이트 영역들 중 하나의 영역에 상응하는 제어 블록, 변경 블록 및 추가 블록이 하나의 유닛 블록을 구성하도록, 제1 델타 파일에 포함된 복수의 블록들을 재배열할 수 있다. 유닛 블록 생성부(104)는 복수의 블록들을 재배열함으로써 제2 델타 파일을 생성할 수 있다.
스왑 블록 생성부(105)는, 복수의 스왑 블록들을 생성하고, 생성된 복수의 스왑 블록들을 상기 제2 델타 파일에 추가할 수 있다. 스왑 블록 생성부(105)는 제1 델타 파일 중 복수의 추가 블록들에 기반하여, 복수의 스왑 블록들을 생성할 수 있다. 복수의 스왑 블록들 각각은, 제1 버전 펌웨어의 복수의 업데이트 영역들 각각에 상응할 수 있다. 복수의 스왑 블록들 각각은, 복수의 업데이트 영역들 각각이 어느 위치로 이동해야 하는지 지시할 수 있다. 스왑 블록 생성부(105)는, 제2 델타 파일에 복수의 스왑 블록들을 추가함으로써 제3 델타 파일을 생성할 수 있다.
다양한 실시예들에 따라, 전자 장치(20)는 통신부(201), 펌웨어 재정렬부(202), 펌웨어 업데이트부(203), 버퍼(204), 스토리지(205)를 포함할 수 있다. 전자 장치(20)의 구성요소들은 논리 합성을 통해서 설계되는 하드웨어 블록, 일련의 명령어들(instructions)을 포함하는 소프트웨어 블록과 일련의 명령어들을 실행하는 적어도 하나의 프로세서를 포함하는 프로세싱 유닛(processing unit) 및 그것들의 조합을 포함할 수 있다.
전자 장치(20)는 펌웨어 소프트웨어가 임베디드된(embedded) 임의의 장치들을 지칭할 수 있다. 예를 들어, 전자 장치(20)는 스마트 폰(smart phone), 스마트 전구, 보안 기기(security device)의 스마트 기기(smart device)를 포함할 수 있다. 다른 예를 들어, 전자 장치(20)는 스마트 미터기(smart meter), 압력 기기, 진동 감기지와 같은 모터 및 센서를 포함하는 산업용 IoT(internet of things) 장치들을 포함할 수 있다. 또 다른 예를 들어, 전자 장치(20)는 공기 청정기(air purifier), 세탁기, 에어컨(air conditioner), 냉장고, TV와 같은 가정용 기기들을 포함할 수 있다.
전술한 실시예에서, 전자 장치(20)는 스마트 기기, 산업용 IoT 기기 및 가정용 기기들을 포함하는 것으로 기재되었으나, 이에 제한되는 것은 아니다. 펌웨어 소프트웨어가 임베디드되고, 펌웨어 업데이트를 수행할 수 있는 모든 장치들을 포함할 수 있다.
통신부(201)는 서버(10)에게 데이터를 송신하거나, 서버(10)로부터 데이터를 수신할 수 있다. 일 실시예에 따라, 전자 장치(20)는 통신부(201)를 이용하여 서버(10)에게 펌웨어 업데이트를 요청하는 신호를 송신하거나, 서버(10)로부터 펌웨어 업데이트를 요청하는 신호를 수신할 수 있다. 전자 장치(20)는 펌웨어 버전에 대한 정보를 수신하고, 전자 장치(20)에 임베디드된 제1 버전 펌웨어와 비교할 수 있다. 전자 장치(20)는 임베디드된 펌웨어와 서버(10)로부터 수신한 펌웨버 버전에 대한 정보가 상이함을 식별함에 응답하여, 서버(10)에게 상기 펌웨어 업데이트를 요청하는 신호를 송신할 수 있다. 다른 실시예에 따라, 전자 장치(20)는 통신부(201)를 이용하여 압축 델타 파일을 수신할 수 있다.
전술한 실시예에서, 전자 장치(20)는 펌웨어 버전에 기반하여 업데이트를 요청하는 신호를 송신 또는 수신하는 것으로 기재되었으나, 이에 제한되는 것은 아니다. 다양한 실시예들에 따라, 전자 장치(20)는 CRC(cyclic redundancy check) 값, 또는 고유 시그니처(signature) 값에 기반하여 업데이트 요청하는 신호를 송수신할 수 있다.
펌웨어 재정렬부(202)는 제1 버전 펌웨어를 재정렬(rearrange)할 수 있다. 펌웨어 재정렬부(202)는 델타 파일을 압축 해제함으로써 획득된 복수의 스왑 블록들을 이용하여, 제1 버전 펌웨어에 포함되는 복수의 업데이트 영역들을 재정렬할 수 있다. 상기 복수의 업데이트 영역들은, 제1 버전 펌웨어와 제2 버전 펌웨어를 비교하여, 데이터의 변경 또는 추가가 발생하는 영역을 지칭할 수 있다. 예를 들어, 복수의 업데이트 영역들 중 제1 영역에 추가되는 데이터의 길이가 100인 경우, 제2 영역의 상대 주소 값을 100만큼 증가시킬 수 있다. 다른 예를 들어, 제2 영역에 추가되는 데이터가 50인 경우, 펌웨어 재정렬부(202)는 제3 영역의 상대 주소 값을 150만큼 증가시킬 수 있다. 제1 영역에 추가되는 데이터의 길이가 100이고, 제2 영역에 추가되는 데이터의 길이가 50이므로, 펌웨어 재정렬부(202)는 제3 영역의 상대 주소 값을 150만큼 증가시켜야, 업데이트 영역과 상이한 영역을 로드하여 데이터를 변경하는 충돌을 방지할 수 있다. 복수의 업데이트 영역들의 상대 주소를 변경하는 구체적인 실시예는 도 4에서 후술한다.
펌웨어 업데이트부(203)는 제1 버전 펌웨어에 델타 파일을 적용(apply)함으로써 제2 버전 펌웨어로 업데이트할 수 있다. 펌웨어 업데이트부(203)는 델타 파일을 압축 해제함으로써 획득된 복수의 유닛 블록들을 이용하여, 제1 버전 펌웨어의 데이터를 변경 또는 추가할 수 있다. 예를 들어, 복수의 업데이트 영역들 중 제1 영역에 상응하는 제1 유닛 블록을 이용하여, 제1 영역을 업데이트 할 수 있다. 복수의 업데이트 영역들의 업데이트를 수행하는 구체적인 실시예는 도 3에서 후술한다.
버퍼(204)는, 휘발성 메모리(volatile memory)를 포함할 수 있다. 예를 들어, 버퍼(204)는 램(random access memory, RAM)으로 구현될 수 있다. 버퍼(204)는 전자 장치(20)가 펌웨어 업데이트를 수행하는 동안, 델타 파일 또는 제1 버전 펌웨어 중 적어도 일부를 임시로(temporarily) 저장할 수 있다. 예를 들어, 버퍼(204)는 델타 파일을 부분 압축 해제함으로써 획득되는 각각의 유닛 블록을 임시적으로 저장할 수 있다. 제1 유닛 블록을 임시적으로 저장하고, 임시적으로 저장한 제1 유닛 블록의 데이터를 이용하여 복수의 업데이트 영역들 중 제1 영역에 대한 펌웨어 업데이트를 수행할 수 있다.
스토리지(205)는, 비휘발성 메모리(non-volatime memory)를 포함할 수 있다. 예를 들어, 스토리지(205)는 플래시(flash)로 구현될 수 있다. 스토리지(205)는 펌웨어를 저장할 수 있다. 예를 들어, 스토리지(205)는 펌웨어 업데이트를 수행하기 이전에 제1 버전 펌웨어를 저장할 수 있고, 펌웨어 업데이트를 수행한 이후, 제2 버전 펌웨어를 저장할 수 있다.
통신 네트워크(30)는 서버(10)와 전자 장치(20)간에 통신을 제공할 수 있다. 예를 들어, 통신 네트워크(30)는 셀룰러(cellular) 네트워크, 인터넷(internet) 또는 컴퓨터 네트워크(예를 들어, LAN(local area network) 또는 WAN(wide area network))와 같은 원거리 통신 네트워크를 포함할 수 있다. 다른 예를 들어, 통신 네트워크(30)는 블루투스(Bluetooth), WiFi(wireless fidelity) direct, IrDA(infrared data association)와 같은 근거리 통신 네트워크를 포함할 수 있다.
도 2는 본 개시의 예시적 실시예에 따른, 제1 델타 파일에 포함된 복수의 블록들을 재정렬(rearrange)함으로써 복수의 유닛 블록들을 생성하는 예를 도시하는 도면이다.
도 2를 참조하면, 제1 델타 파일(210)은, 헤더(211), 제어 블록 그룹(212), 변경 블록 그룹(213) 및 추가 블록 그룹(214)을 포함할 수 있다.
다양한 실시예들에 따라, 제1 델타 파일(210)은 서버(10)에 포함된 델타 파일 생성부(102)에 의해 생성될 수 있다. 제1 델타 파일(210)은, 제1 버전 펌웨어(예를 들어, 구 버전의 펌웨어)와 제2 버전 펌웨어(예를 들어, 신 버전의 펌웨어)의 차이 값을 이용하여 생성될 수 있다. 예를 들어, 제1 델타 파일(210)은, 제1 버전 펌웨어 및 제2 버전 펌웨어에 대한 바이너리 차분(binary differencing) 알고리즘을 수행함으로써 생성될 수 있다. 상기 바이너리 차분 알고리즘을 수행하는 프로그램은, bsdiff 프로그램으로 지칭될 수 있다.
다양한 실시예들에 따라, 헤더(211)는 단일 블록으로 구성될 수 있다. 헤더(211)에 포함된 정보는, 표 1에 상응할 수 있다.
Field Length Description
magic 8 bytes Magic 넘버
ctrl_length 8 bytes 제어 블록 그룹의 전체 길이
diff_length 8 bytes 변경 블록 그룹의 전체 길이
new size 8 bytes 업데이트를 적용한 펌웨어 파일의 전체 길이
상기 표 1을 참조하면, 헤더(211)는 델타 파일의 구성(configuration)을 지시하기 위한 정보를 포함할 수 있다. magic 필드의 데이터는, 델타 파일이 실제 펌웨어 업데이트를 위한 파일인지 여부를 지시할 수 있다. ctrl_length 필드의 데이터는, 제어 블록 그룹(212)의 길이를 지시할 수 있다. diff_length 필드의 데이터는, 변경 블록 그룹(213)의 길이를 지시할 수 있다. new_size 필드의 데이터는, 업데이트를 적용한 펌웨어 파일의 전체 길이를 지시할 수 있다. 즉, new size 필드의 데이터는, 제2 버전 펌웨어에 대한 전체 길이를 지시할 수 있다. 다양한 실시예들에 따라, 제어 블록 그룹(212)은 복수의 제어 블록들을 포함할 수 있다. 도 2를 참조하면, 복수의 제어 블록들은 제1 제어 블록 내지 제4 제어 블록을 포함할 수 있다. 복수의 제어 블록들 각각은, 복수의 업데이트 영역들 각각에 상응할 수 있다. 예를 들어, 제1 제어 블록은 복수의 업데이트 영역들 중 제1 영역에 상응할 수 있고, 제2 제어 블록은 복수의 업데이트 영역들 중 제2 영역에 상응할 수 있고, 제3 제어 블록은 복수의 업데이트 영역들 중 제3 영역에 상응할 수 있고, 제4 제어 블록은 복수의 업데이트 영역들 중 제4 영역에 상응할 수 있다.
각각의 제어 블록들이 포함하는 정보는, 표 2에 상응할 수 있다.
Field Length Description
diff_length 8 bytes 현재 제어 블록에 상응하는 변경 블록의 길이
extra_length 8 bytes 현재 제어 블록에 상응하는 추가 블록의 길이
skip_offset 8 bytes 현재 제어 블록을 처리한 이후, 점프하기 위해 이전 데이터에서 오프셋
상기 표 2를 참조하면, 제어 블록은 전자 장치(20)가 복수의 업데이트 영역들에 대한 업데이트를 수행하는데 요구되는 정보를 포함할 수 있다. diff_length 필드의 데이터는, 현재 제어 블록에 상응하는 변경 블록의 길이를 지시할 수 있다. 예를 들어, 제1 제어 블록은, 제1 변경 블록의 길이를 지시할 수 있다. 제1 변경 블록은 복수의 업데이트 영역들 중 제1 영역에서 펌웨어 업데이트를 통해 변경되는 데이터를 포함할 수 있다. extra_length 필드의 데이터는, 현재 제어 블록에 상응하는 추가 블록의 길이를 지시할 수 있다. 예를 들어, 제1 제어 블록은 제1 추가 블록의 길이를 지시할 수 있다. 제1 추가 블록은 상기 제1 영역 이후에 추가되는 데이터를 포함하고 있는 제1 추가 블록의 길이를 지시할 수 있다. skip_off 필드의 데이터는, 다음 순서의 업데이트 영역의 상대 주소를 지시할 수 있다. 제1 제어 블록의 skip_off 필드 데이터는, 제2 영역의 절대 주소로 점프(jump)하기 위한 길이를 지시할 수 있다. 예를 들어, 제1 제어 블록에 포함된 skip_off 필드의 데이터 길이는 제1 변경 블록의 길이 및 제1 추가 블록의 길이의 합(sum) 연산으로 획득될 수 있다. 상기 절대 주소는, 메모리 위치를 식별하기 위한 값에 대응될 수 있다. 절대 주소는, 상대 주소와 달리, 특정 영역과 무관하게 메모리 내에서 저장된 위치에 기반한 고유의 값을 포함할 수 있다.제1 델타 파일은 헤더(211)부터 제어 블록 그룹(212), 변경 블록 그룹(213) 및 추가 블록 그룹(214)의 순서에 따라 배열되는 복수의 블록들을 포함할 수 있다. 제1 델타 파일을 이용하여 제1 영역에 대한 펌웨어 업데이트를 수행하는 경우, 제1 제어 블록, 제1 변경 블록 및 제1 추가 블록이 필요할 수 있다. 변경 블록 그룹(213) 또는 추가 블록 그룹(214)은 델타 파일의 끝 부분에 위치하기 때문에, 전자 장치(20)는 델타 파일의 전체에 대한 압축 해제를 수행해야 제1 제어 블록, 제1 변경 블록 및 제1 추가 블록을 모두 획득할 수 있다.
다양한 실시예들에 따라, 제1 델타 파일의 복수의 블록들은 재정렬될 수 있다. 유닛 블록 생성부(104)는 제1 델타 파일에 포함된 복수의 블록들을 재정렬함으로써, 복수의 유닛 블록들(222 내지 225)을 생성할 수 있다. 상기 복수의 유닛 블록들(222 내지 225)은, 복수의 업데이트 영역들 각각에 대응하는 블록들을 그룹핑(grouping)함으로써 생성될 수 있다. 즉, 하나의 유닛 블록은, 하나의 업데이트 영역에 대한 펌웨어 업데이트를 수행하기 위해 요구되는 복수의 블록들을 포함할 수 있다. 예를 들어, 복수의 유닛 블록들 중 제1 유닛 블록(222)은, 복수의 업데이트 영역들 중 제1 영역에 상응하는 제1 제어 블록, 제1 변경 블록, 및 제1 추가 블록을 포함할 수 있다. 전자 장치(20)는 제1 제어 블록을 파싱(parsing)하여 제1 버전 펌웨어 중 제1 영역을 식별하고, 식별된 제1 영역을 로드하여 제1 변경 블록과 XOR 연산을 수행하여 업데이트를 수행하고, 제1 추가 블록의 데이터를 제1 영역 이후에 추가함으로써 제1 영역에 대한 업데이트를 수행할 수 있다.
도 3은 업데이트 오류가 발생하는 예시를 나타내는 도면이다.
도 3을 참조하면, 전자 장치(20)는 델타 파일에 대한 부분 압축 해제를 수행하여 복수의 유닛 블록들을 획득할 수 있다. 전자 장치(20)는 델타 파일의 앞 부분부터 압축을 해제하므로, 제1 유닛 블록, 제2 유닛 블록을 순서대로 획득할 수 있다. 전자 장치(20)가 제1 유닛 블록을 획득한 경우, 제1 유닛 블록을 파싱하여 제1 제어 블록, 제1 변경 블록 및 제1 추가 블록을 획득할 수 있다.
전자 장치(20)는 제1 버전 펌웨어 중 제1 영역(A 영역)에 상응하는 데이터를 로드하고, 제1 변경 블록에 포함된 데이터와 XOR 연산을 수행하여 다시 제1 영역(A 영역)에 입력함으로써 업데이트를 수행할 수 있다. 이후, 전자 장치(20)는 제1 추가 블록에 포함된 데이터를 제1 영역 이후의 영역(B 영역)에 복사할 수 있다.
다양한 실시예들에 따라, 제1 추가 블록에 포함된 데이터가 복사되는 영역(B 영역)은 제1 버전 펌웨어의 제2 영역(C 영역)을 포함할 수 있다. 이 경우, 제2 영역(C 영역)의 데이터는, 제1 추가 블록에 포함된 데이터에 의해 덮어씌워질 수 있다(overwrite). 전자 장치(20)는 제1 영역에 대한 업데이트를 수행하고, 복수의 업데이트 영역들 중 제2 영역에 상응하는 데이터를 로드할 수 있다. 다만, 제2 영역에 포함된 제1 버전 펌웨어의 데이터는 제1 추가 블록에 포함된 데이터로 치환되었으므로, 전자 장치(20)는 제1 추가 블록에 포함된 데이터에 기반하여 제2 변경 블록과 XOR 연산을 수행하여, 펌웨어 업데이트 오류를 야기할 수 있다.
도 4는 본 개시의 예시적 실시예에 따른 복수의 스왑 블록들을 이용하여 제1 버전 펌웨어를 재배치하는 예시를 나타내는 도면이다.
도 4를 참조하면, 제3 델타 파일은 헤더(221), 복수의 스왑 블록들(401), 및 복수의 유닛 블록들을 포함할 수 있다. 서버(10)는 복수의 스왑 블록들(401)을 생성하여, 제1 델타 파일에 추가할 수 있다. 복수의 스왑 블록들 각각은, 복수의 업데이트 영역들 각각에 상응할 수 있다. 예를 들어, 복수의 스왑 블락들 중 제1 스왑 블락은 복수의 업데이트 영역들 중 제1 영역과 관련될 수 있다. 복수의 스왑 블락들 중 제2 스왑 블락은 복수의 업데이트 영역들 중 제2 영역과 관련될 수 있다. 복수의 스왑 블락들 각각은, 상응하는 업데이트 영역의 절대 주소를 변경하기 위해 필요한 데이터들을 포함할 수 있다. 스왑 블락이 포함하는 데이터는, 표 3에 상응할 수 있다.
Field Length Description
priv_pos 8 bytes old firmware에서의 상대 주소
ordered_pos 8 bytes ordered firmware로 변경하기 위한 상대 주소
swap_size 8 bytes 이동해야할 block의 크기
상기 표 3을 참조하면, 스왑 블록은 제1 버전 펌웨어에 포함된 복수의 업데이트 영역들을 이동하기 위한 정보들을 포함할 수 있다. priv_pos 필드의 데이터는, old firmware에서 상대 주소를 지시할 수 있다. 상기 상대 주소는, 플래시 스토리지(205)의 물리적 주소 값에 상응할 수 있다. 예를 들어, 제1 스왑 블록의 priv_pos 필드는, 제1 영역의 상대 주소를 지시할 수 있다. 즉, 스왑 블록의 priv_pos 필드 값은 상응하는 업데이트 영역의 시작 주소를 지시할 수 있다.ordered_pos 필드의 데이터는, ordered firmware로 변경하기 위한 상대 주소를 지시할 수 있다. 즉, ordered_pos 필드는, 복수의 업데이트 영역들 각각이 이동되어야 하는 상대 주소를 지시할 수 있다. 예를 들어, 제1 영역의 경우, 상기 제1 영역 이전에 새롭게 추가되는 데이터가 없으므로, 상대 주소가 변경되지 않을 수 있다. 따라서, 제1 스왑 블록의 ordered_pos 필드 값은, priv_pos 필드 값과 동일할 수 있다. 다른 예를 들어, 제1 추가 블록의 길이가 100인 경우, 제2 영역은 100만큼 상대 주소가 증가하도록 이동할 수 있다. 따라서, 제2 스왑 블록의 ordered_pos 필드 값은 제2 스왑 블록의 priv_pos 값보다 100이 클 수 있다. 다만, 제1 추가 블록의 길이가 0이거나, 제1 추가 블록이 존재하지 않는 경우, 재2 영역의 이전에 새롭게 추가되는 데이터가 없기 때문에, 제2 영역은 상대 주소를 유지할 수 있다. 제2 스왑 블록의 ordered_pos 필드 값과 priv_pos 값은 동일할 수 있다. 또 다른 예를 들어, 제1 추가 블록의 길이가 100이고, 제2 추가 블록의 길이가 50인 경우, 제3 영역은 150만큼 상대 주소가 증가하도록 이동할 수 있다. 제3 영역 이전에 배치된 제1 영역 및 제2 영역에 각각 100, 50 길이의 새로운 데이터가 추가되기 때문이다. 따라서, 제3 스왑 블록의 ordered_pos 필드 값은 제3 스왑 블록의 priv_pos 필드 값보다 150이 클 수 있다. swap_size 필드의 데이터는, 이동해야 할 블록의 길이를 지시할 수 있다. 상기 이동해야 할 블록의 길이는, 복수의 업데이트 영역들 각각의 길이에 상응할 수 있다. 예를 들어, 제2 스왑 블록의 swap_size 필드 값은, 제2 영역의 길이를 지시할 수 있다.
다양한 실시예들에 따라, 복수의 스왑 블록들은 헤더와 복수의 유닛 블록들 사이에 추가될 수 있다. 전자 장치(20)가 복수의 유닛 블록들을 먼저 획득하고 펌웨어 업데이트를 수행하는 경우, 도 3에 도시된 오류가 발생할 수 있기 때문이다. 따라서, 복수의 스왑 블록들은, 복수의 유닛 블록들보다 앞에 추가됨으로써, 전자 장치(20)가 복수의 스왑 블록들을 먼저 획득하고, 이에 따라 제1 버전 펌웨어의 복수의 업데이트 영역들의 위치를 재배치함으로써 도 3에 도시된 오류를 회피할 수 있다.
다양한 실시예들에 따라, 제1 버전 펌웨어는 복수의 업데이트 영역들을 포함할 수 있다. 복수의 업데이트 영역들은 제1 영역, 제2 영역, 제3 영역을 포함할 수 있다.
다양한 실시예들에 따라, 제1 영역은 상대 주소를 유지할 수 있다. 제1 영역 이전에 새롭게 추가되는 데이터가 존재하지 않으므로, 제1 영역은 이동하지 않을 수 있다. 즉, 제1 영역에 상응하는 제1 스왑 블록의 priv_pos 필드 값과 ordered_pos 필드 값은 동일할 수 있다.
다양한 실시예들에 따라, 제2 영역은 상대 주소가 증가할 수 있다. 제1 영역 이후에 제1 추가 블록의 데이터가 추가될 수 있다. 따라서, 도 3에 도시된 오류를 회피하기 위하여, 제2 영역의 상대 주소가 변경될 수 있다. 제2 스왑 블록의 priv_pos 필드 값은 제1 버전 펌웨어에서 제2 영역의 시작 주소를 지시할 수 있다. 제2 스왑 블록의 ordered_pos 필드 값은, 제1 영역 이후에 추가되는 제1 추가 블록의 데이터의 끝(end) 주소를 지시할 수 있다. 제2 스왑 블록에 따라, 상대 주소가 변경된 제2 영역의 시작 주소와 제1 영역의 끝 주소간에 데이터 길이는 제1 추가 블록의 데이터 길이와 동일할 수 있다. 즉, 제1 추가 블록의 데이터가 복사될 영역을 확보하기 위하여, 제2 영역의 상대 주소가 증가될 수 있다.
도 5는 본 개시의 예시적 실시예에 따른 서버의 동작 방법을 도시하는 순서도이다.
도 5를 참조하면, 동작 S110에서, 서버(10)는 전자 장치(20)로부터 펌웨어 업데이트를 요청하는 신호를 수신할 수 있다.
동작 S120에서, 서버(10)는 제1 버전 펌웨어와 제2 버전 펌웨어의 차이 값들을 이용하여, 제1 델타 파일을 생성할 수 있다. 도 1을 참조하면, 상기 제1 델타 파일은 서버(10)의 델타 파일 생성부(102)에 의해 생성될 수 있다. 서버(10)는 제1 버전 펌웨어와 제2 버전 펌웨어간에 비교 연산을 수행함으로써, 변경된 데이터를 지시하는 차이 값들을 획득할 수 있다. 서버(10)는 상기 획득된 차이 값들에 기반하여 제1 델타 파일을 생성할 수 있다.
동작 S130에서, 서버(10)는 제1 델타 파일을 재배열할 수 있다. 서버(10)는 헤더(211), 제어 블록 그룹(212), 변경 블록 그룹(213) 및 추가 블록 그룹(214)의 순서로 구성된 제1 델타 파일을 재배열할 수 있다. 상기 재배열된 제1 델타 파일은, 제2 델타 파일로 지칭될 수 있다. 서버(10)는 업데이트 영역마다 상응하는 제어 블록, 변경 블록 및 추가 블록을 그룹핑하여 하나의 유닛 블록을 생성할 수 있다. 복수의 유닛 블록들은, 업데이트 영역들의 순서에 기반하여 정렬될 수 있다.
동작 S140에서, 서버(10)는 재배열된 델타 파일에 스왑 블록들을 추가할 수있다. 서버(10)는 제2 델타 파일에 복수의 스왑 블록들을 추가할 수 있다. 서버(10)는 복수의 스왑 블록들을 생성할 수 있다. 서버(10)는 제1 델타 파일에 포함된 복수의 블록들 중 추가 블록들을 이용하여, 복수의 스왑 블록들을 생성할 수 있다. 복수의 스왑 블록들 각각은, 복수의 업데이트 영역들 각각에 상응할 수 있다. 예를 들어, 제1 스왑 블록은, 복수의 업데이트 영역들 중 제1 영역의 현재 위치와 이동해야하는 위치 및 이동해야하는 데이터 크기에 대한 정보를 포함할 수 있다.
동작 S150에서, 서버(10)는 변경된 델타 파일을 압축하고, 전자 장치(20)에게 송신할 수 있다. 상기 변경된 델타 파일은, 제2 델타 파일에 복수의 스왑 블록들이 추가된 델타 파일에 상응할 수 있다. 다양한 실시예들에서, 상기 변경된 델타 파일은 제3 델타 파일로 지칭될 수 있다. 서버(10)는 제2 델타 파일의 헤더와 복수의 유닛 블록들 사이에 상기 복수의 스왑 블록들을 추가할 수 있다. 복수의 유닛 블록들에 앞서 복수의 스왑 블록들을 추가함으로써, 전자 장치(20)가 부분 압축 해제를 하는 경우, 전자 장치(20)는 복수의 스왑 블록들을 먼저 획득하여 제1 버전 펌웨어를 재배치한 이후에 복수의 유닛 블록들을 획득하여 오류 없이 업데이트를 수행할 수 있다.
도 6은 본 개시의 예시적 실시예에 따른 전자 장치의 동작 방법을 도시하는 순서도이다.
도 6을 참조하면, 동작 S210에서, 전자 장치(20)는 펌웨어 업데이트를 요청하는 신호를 서버(10)에게 송신할 수 있다. 전자 장치(20)는 서버(10)로부터 펌웨어 업데이트에 대한 알림을 수신하거나, 현재 전자 장치(20)에 임베디드된 펌웨어의 정보와 서버(10)로부터 수신받은 펌웨어의 정보를 비교하여, 상기 펌웨어 업데이트를 요청할 수 있다.
동작 S220에서, 전자 장치(20)는 서버(10)로부터 압축 델타 파일을 수신할 수 있다. 상기 압축 델타 파일은, 헤더, 복수의 스왑 블록들, 및 복수의 유닛 블록들을 포함할 수 있다.
동작 S230에서, 전자 장치(20)는 복수의 스왑 블록들을 획득할 수 있다. 전자 장치(20)는 상기 압축 델타 파일에 대한 부분 압축 해제를 수행할 수 있다. 예를 들어, 전자 장치(20)는 압축 델타 파일의 전체를 압축 해제하지 않고, 압축 델타 파일의 적어도 일부를 압축 해제하여, 복수의 스왑 블록들을 획득할 수 있다. 복수의 스왑 블록들 각각은, 제1 버전 펌웨어에 포함된 복수의 업데이트 영역들 각각에 대한 변경된 상대 주소 값을 지시하는 데이터를 포함할 수 있다.
동작 S240에서, 전자 장치(20)는 복수의 스왑 블록들을 이용하여, 제1 버전 펌웨어를 재배치(reposition)할 수 있다. 전자 장치(20)는 복수의 스왑 블록들 각각을 이용하여, 제1 버전 펌웨어에 포함된 복수의 업데이트 영역들의 상대 주소 값을 변경할 수 있다. 복수의 스왑 블록들 각각은, 복수의 업데이트 영역들 각각에 상응할 수 있다. 예를 들어, 복수의 스왑 블록들 중 제1 스왑 블록은 복수의 업데이트 영역들 중 제1 영역과 관련될 수 있다. 복수의 스왑 블록들 중 제2 스왑 블록은 복수의 업데이트 영역들 중 제2 영역과 관련될 수 있다.
동작 S250에서, 전자 장치(20)는 복수의 유닛 블록들을 획득할 수 있다. 복수의 유닛 블록들은 복수의 업데이트 영역들 각각에 상응할 수 있다. 예를 들어, 복수의 유닛 블록들 중 제1 유닛 블록은 복수의 업데이트 영역들 중 제1 영역에 상응할 수 있고, 복수의 유닛 블록들 중 제2 유닛 블록은 복수의 업데이트 영역들 중 제2 영역에 상응할 수 있다. 복수의 유닛 블록들 각각은, 상응하는 영역과 관련되는(associated with) 제어 블록, 변경 블록 및 추가 블록을 포함할 수 있다. 즉, 제1 유닛 블록은, 복수의 업데이트 영역들 중 제1 영역을 지시하는 제1 제어 블록, 제1 버전 펌웨어와 제2 버전 펌웨어의 차이 값들 중 제1 영역의 차이 값에 대한 데이터를 포함하는 제1 변경 블록, 및 제1 영역 이후에 추가되는 데이터를 포함하는 제1 추가 블록을 포함할 수 있다.
동작 S260에서, 전자 장치(20)는 복수의 유닛 블록들을 이용하여, 복수의 업데이트 영역들에 대한 펌웨어 업데이트를 수행할 수 있다. 전자 장치(20)는 제1 제어 블록을 파싱하여 제1 버전 펌웨어 중 제1 변경 블록의 데이터가 적용되어야 할 상대 주소를 획득할 수 있다. 전자 장치(20)는 상기 획득된 상대 주소를 시작 주소로 설정하고, 제1 변경 블록에 포함된 데이터를 적용할 수 있다. 예를 들어, 전자 장치(20)는 제1 영역에 포함된 데이터와 제1 변경 블록에 포함된 데이터간에 XOR 연산을 수행함으로써, 제2 버전 펌웨어의 데이터로 변경할 수 있다. 전자 장치(20)는 제1 영역에 제1 변경 블록에 포함된 데이터를 적용한 이후, 제1 추가 블록의 데이터를 추가할 수 있다. 복수의 업데이트 영역들 중 제2 영역은 제2 스왑 블록이 지시하는 절대 주소로 이동되었으므로, 제1 추가 블록의 데이터를 추가하더라도, 제2 영역에 상응하는 제1 버전 펌웨어의 데이터는 훼손되지 않을 수 있다. 복수의 업데이트 영역들이 제1 영역 내지 제N 내지 영역을 포함하는 경우, 전자 장치(20)는 제N 유닛 블록을 이용한 업데이트를 수행하고, 펌웨어 업데이트 절차를 종료할 수 있다.
도 7은 본 개시의 예시적 실시예들에 따른 서버와 전자 장치간에 신호 교환도를 도시한다. 도 5 및 도 6과 중복되는 기재는 생략될 수 있다.
도 7을 참조하면, 전자 장치(20)는 서버에게 펌웨어 업데이트 요청 신호를 송신(동작 S310)할 수 있다. 서버(10)는 펌웨어 업데이트 요청 신호를 수신하고, 제1 버전 펌웨어와 제2 버전 펌웨어의 차이에 기반한 제1 델타 파일을 생성(동작 S320)할 수 있다. 서버(10)는 펌웨어 업데이트에 요구되는 플래시 메모리 크기를 감소시키기 위하여, 제1 델타 파일을 재구성(reconfiguration)할 수 있다. 서버(10)는 제1 델타 파일에 포함된 복수의 블록들을, 복수의 유닛 블록들로 재배열하여 제2 델타 파일을 생성(동작 S330)할 수 있다. 서버(10)는 복수의 블록들 중 추가 블록들의 길이에 기반하여, 복수의 스왑 블록들을 생성하고, 제2 델타 파일에 추가하여 제3 델타 파일을 생성(동작 S340)할 수 있다. 서버(10)는 복수의 블록들을 재배열하고, 복수의 스왑 블록들을 추가한 상기 제3 델타 파일을 압축(동작 S350)하고, 전자 장치(20)에게 압축 델타 파일을 송신(동작 S360)할 수 있다.
전자 장치(20)는 압축 델타 파일에 대하여 부분 압축 해제를 수행(동작 S370)할 수 있다. 전자 장치(20)는 부분 압축 해제를 수행함으로써, 복수의 스왑 블록들 및 복수의 유닛 블록들을 순서대로 획득할 수 있다. 전자 장치(20)는 복수의 스왑 블록들을 이용하여 제1 버전 펌웨어를 재배치(reposition)할 수 있다. 전자 장치(20)는 복수의 스왑 블록들을 참조하여, 제1 버전 펌웨어에 포함되는 복수의 업데이트 영역들의 상대 주소를 변경할 수 있다. 즉, 전자 장치(20)는 추가 블록들을 제1 버전의 펌웨어에 추가하는 경우, 복수의 업데이트 영역들에 상응하는 제1 버전 펌웨어의 데이터가 덮어씌워질 수 있으므로, 이를 방지하기 위하여 복수의 업데이트 영역들을 미리(in advance) 이동시킬 수 있다. 복수의 스왑 블록들에 기반하여 복수의 업데이트 영역들이 미리 이동되었으므로, 전자 장치(20)는 기존의 업데이트 영역 상으로 추가 블록의 데이터가 덮어씌워지고, 추가된 데이터와 변경 블록의 XOR 연산을 수행하는 오류를 방지할 수 있다. 전자 장치(20)는 복수의 유닛 블록들의 순서에 따라 펌웨어 업데이트를 수행(동작 S390)할 수 있다. 따라서, 전자 장치(20)는 오류 없이 제1 영역부터 제N 영역까지 순차적으로 펌웨어 업데이트를 수행할 수 있다.
전술한 실시예들에서, 펌웨어 업데이트는 전자 장치(20)가 서버(10)에게 업데이트 요청 신호를 송신하거나, 서버(10)로부터 업데이트 요청 신호를 수신한 이후에 수행되는 것으로 기재되었으나, 이에 제한되는 것은 아니다. 다양한 실시예들에서, 서버(10)는 전자 장치(20)로부터 업데이트를 요청하는 신호를 수신하지 않더라도, 델타 파일을 전자 장치(20)에게 송신할 수 있다. 예를 들어, 보안 정책에 대한 정보를 추가하기 위한 업데이트, 치명적인 소프트웨어 오류를 방지하기 위한 업데이트와 같은 중요 업데이트의 경우, 서버(10)는 전자 장치(20)로부터 펌웨어 업데이트 요청 신호를 수신하지 않더라도, 압축 델타 파일을 전자 장치(20)에게 전송함으로써, 펌웨어 업데이트를 수행하도록 지시할 수 있다.
전술한 실시예들에서, 제1 델타 파일 내지 제3 델타 파일은 전자 장치(20)로부터 펌웨어 업데이트 요청 신호를 수신함에 응답하여 생성되는 것으로 기재되었으나, 이에 제한되는 것은 아니다. 다양한 실시예들에서, 서버(10)는 전자 장치(20)의 펌웨어 업데이트 요청을 수신하지 않더라도, 압축 델타 파일을 미리 생성할 수도 있다. 이 경우, 서버(10)는 전자 장치(20)로부터 펌웨어 업데이트 요청을 수신하는 즉시, 기 생성된 압축 델타 파일을 전자 장치(20)에게 송신(동작 S350)할 수 있다.
도 8은 본 개시의 예시적 실시예에 따른 플래시 메모리 저장 공간의 변화를 나타내는 도면이다.
도 8을 참조하면, 스토리지(205)의 저장 공간의 적어도 일부가 개시된다. 스토리지(205)는 부트 로더(boot loader, 이하 BL)(801), OS(operating system)(802), 델타 파일(803), 압축 해제된 델타 파일(804), 새로운 OS(805)를 저장할 수 있다. OS(802)는 전자 장치(20)에 임베디드된 제1 버전 펌웨어에 상응할 수 있다. BL(801)은 전자 장치(20)의 부팅을 수행하는 프로그램을 지칭할 수 있다. BL(801)은 전자 장치(20)의 부팅 시, 시스템 플래그(system flag)를 확인하고, 시스템 플래그에 펌웨어 업데이트 관련 플래그가 설정된 경우, 펌웨어 업데이트를 수행하고, 상기 관련 플래그가 설정되지 않은 경우, 전자 장치(20)에 임베디드된 OS(802)를 구동할 수 있다. 델파 파일(803)은, 서버(10)로부터 수신한 압축 델타 파일에 상응할 수 있다.
다양한 실시예들에 따라, 종래의 제1 델타 파일을 이용하여 펌웨어 업데이트를 수행하는 경우, 제1 델타 파일의 전체를 압축 해제를 수행한 이후에 업데이트를 수행할 수 있기 때문에, 압축 해제된 델타 파일(804)의 저장 공간이 요구된다. 또한, 종래의 제1 델타 파일을 이용하여 펌웨어 업데이트를 수행하는 경우, 전자 장치(20)는 복수의 스왑 블록들을 획득하지 못하므로, 제1 버전 펌웨어를 재배치할 수 없다. 따라서, 제1 버전의 펌웨어에 직접적으로 업데이트를 수행하는 인-플레이스 패칭(in-place patching)을 사용할 수 없다. 따라서, 제2 버전 펌웨어에 상응하는 새로운 OS(805)의 저장 공간이 요구된다.
다양한 실시예들에 따라, 제3 델타 파일을 이용하여 펌웨어 업데이트를 수행하는 경우, 제3 델타 파일은 업데이트 영역 별로 필요한 블록들을 그룹핑함으로써 복수의 유닛 블록들을 포함하기 때문에, 부분 압축 해제를 수행하더라도 펌웨어 업데이트를 수행하는데 필요한 정보들을 획득할 수 있다. 따라서, 전자 장치(20)는 복수의 유닛 블록들을 이용함으로써 압축 해제된 델타 파일(804)을 위한 저장 공간을 절약할 수 있다. 또한, 전자 장치(20)는 제3 델타 파일로부터 복수의 스왑 블록들을 획득하고, 제1 버전 펌웨어를 재배치할 수 있다. 복수의 업데이트 영역들의 위치가 미리 변경되므로, 상기 인-플레이스 패칭을 사용하여, 제1 버전 펌웨어에 즉시 업데이트를 수행할 수 있다. 따라서, 전자 장치(20)는 별도로 새로운 OS(805)를 위한 저장 공간을 절약할 수 있다. 제3 델타 파일은, 제1 델타 파일과 비교하여 복수의 스왑 블록들을 더 포함하기 때문에, 델타 파일을 저장하는데 필요한 공간은 다소 증가할 수 있으나, 압축 해제된 델타 파일(804) 및 새로운 OS(805)를 위한 저장 공간을 절약할 수 있으므로, 펌웨어 업데이트를 수행하는데 요구되는 플래시 메모리의 저장 공간은 감소될 수 있다. 즉, 복수의 스왑 블록들 및 복수의 유닛 블록들을 포함하는 제3 델타 파일을 이용하여 펌웨어 업데이트를 수행함으로써, 절약된 플래시 메모리 공간(806)을 획득할 수 있다. 따라서, 전자 장치(20)는 상기 압축 델타 파일을 이용하여 OS(802) 뿐만 아니라, BL(801)을 제외한 모든 펌웨어 업데이트를 수행할 수 있으므로, 제한된 크기의 플래시 메모리를 가지는 IoT 기기들에 있어서 매우 효과적일 수 있다.
도 9는 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템(900)을 나타내는 블록도이다.
일부 실시예들에서, 펌웨어 업데이트 방법은 도 9의 컴퓨팅 시스템(900)에 의해서 수행될 수 있다. 도 9에 도시된 바와 같이, 컴퓨팅 시스템(900)은 스토리지(910), 버퍼(920), 적어도 하나의 프로세서(930), 통신 인터페이스(940), 및 버스(950)를 포함할 수 있다. 스토리지(910), 버퍼(920), 적어도 하나의 프로세서(930), 통신 인터페이스(940)는 버스(950)를 통해서 상호 통신할 수 있다. 이하에서 도 9는 도 1을 참조하여 설명될 것이다.
스토리지(910)는 비휘발성 메모리 장치를 포함할 수 있고, 적어도 하나의 프로세서(120)가 실행하는 명령어들을 저장할 수 있다. 스토리지(910)는 서버(10) 및/또는 전자 장치(20)에 구현될 수 있다. 스토리지(910)가 서버(10)에 구현되는 경우, 스토리지(910)는 일련의 명령어들의 집합으로서, 델타 파일 생성부(102), 델타 파일 변경부(103), 유닛 블록 생성부(104), 스왑 블록 생성부(105)를 저장할 수 있다. 스토리지(910)가 전자 장치(20)에 구현되는 경우 도 2의 스토리지(205)에 상응할 수 있다. 스토리지(910)는 펌웨어 재정렬부(202), 펌웨어 업데이트부(203)를 저장할 수 있다. 델타 파일 생성부(102), 델타 파일 변경부(103), 유닛 블록 생성부(104), 스왑 블록 생성부(105), 펌웨어 재정렬부(202), 및 펌웨어 업데이트부(203) 각각은 특정 기능을 수행하기 위한 명령어들의 집합으로서, 프로시저, 서브루틴, 소프트웨어 모듈 등으로 지칭될 수 있다. 적어도 하나의 프로세서(20)는 스토리지(910)에 저장된 프로시저를 실행함으로써 특정 기능을 수행할 수 있고, 본 명세서에서, 적어도 하나의 프로세서(930)가 프로시저를 실행함으로써 기능을 수행하는 것은, 프로시저가 기능을 수행하는 것으로 지칭될 수도 있다.
일부 실시예들에서, 스토리지(910)에 저장된 프로시저들은 도 5의 단계들에 대응하는 동작들을 각각 수행할 수 있다. 예를 들면, 델타 파일 생성부(102)는 제1 버전 펌웨어와 제2 버전 펌웨어의 차이 값을 이용하여 제1 델타 파일을 생성할 수 있고, 유닛 블록 생성부(104)는 제1 델타 파일에 포함되는 복수의 블록들을 재정렬함으로써 복수의 유닛 블록들을 포함하는 제2 델타 파일을 생성할 수 있고, 스왑 블록 생성부(105)는 복수의 스왑 블록들을 생성하여 상기 제2 델타 파일에 추가함으로써 제3 델타 파일을 생성할 수 있다.
다른 실시예들에서, 스토리지(910)에 저장된 프로시저들은 도 6의 단계들에 대응하는 동작들을 각각 수행할 수 있다. 예를 들면, 펌웨어 재정렬부(202)는 복수의 스왑 블록들에 기반하여, 전자 장치(20)에 임베디드된 제1 버전 펌웨어의 복수의 업데이트 영역들을 재배치할 수 있고, 펌웨어 업데이트부(203)는 복수의 유닛 블록들을 이용하여, 상기 복수의 업데이트 영역들에 대한 펌웨어 업데이트를 수행할 수 있다.
버퍼(920)는 휘발성 메모리 장치를 포함할 수 있고, 임시적으로 데이터를 저장할 수 있다. 예를 들어, 버퍼(920)가 서버(10)에 구현되는 경우, 버퍼(920)는 제1 델타 파일에 포함되는 복수의 블록들을 재정렬하는 과정에서, 복수의 블록들 중 적어도 일부를 일시적으로 저장할 수 있다. 버퍼(920)는 제3 델타 파일을 생성하기 이전에 기 생성된 복수의 스왑 블록들을 일시적으로 저장할 수도 있다.
통신 인터페이스(940)는 외부 장치와의 데이터 송수신을 제공할 수 있다. 일부 실시예들에서, 서버(10)에 구현되는 통신 인터페이스(940)는 외부 장치(예를 들어, 전자 장치(20))로부터 펌웨어 업데이트를 요청하는 신호를 수신하고, 압축 델타 파일을 송신할 수 있다. 다른 실시예들에서, 전자 장치(20)에 구현되는 통신 인터페이스(940)는 외부 장치(예를 들어, 서버(10))에게 펌웨어 업데이트를 요청하는 신호를 송신하고, 압축 델타 파일을 수신할 수 있다.
도 10은 본 개시의 예시적 실시예에 따른 펌웨어 업데이트 방법을 수행할 수 있는 전자 장치들의 예시를 나타내는 블록도이다.
일부 실시예들에서, 가정용 기기(1000), 가전(1010), 엔터테인먼트 기기(1020) 및 AP(1100)는 IoT(Internet of Things) 네트워크 시스템을 구성할 수 있다. 가정용 기기(1000), 가전(1010), 엔터테인먼트 기기(1020)는 AP(Access Point)(1100)를 경유하여 도 1의 서버(10)에게 접근하고, 본 개시의 예시적 실시예에 따른 델타 파일을 수신함으로써 펌웨어를 업데이트할 수 있다. 가정용 기기(1000), 가전(1010), 엔터테인먼트 기기(1020)는 임베디드된 메모리의 크기를 이용하여 펌웨어 업데이트를 수행할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 펌웨어 업데이트를 위한 서버의 동작 방법에 있어서,
    제1 버전 펌웨어에 포함되는 복수의 업데이트 영역들에 기반하여, 복수의 블록들을 포함하는 제1 델타 파일을 생성하는 단계;
    상기 복수의 업데이트 영역들 각각에 상응하는 제어 블록, 변경 블록 및 추가 블록을 그룹핑(grouping)하여 복수의 유닛 블록들을 생성하도록, 상기 제1 델타 파일에 포함된 상기 복수의 블록들을 재배열(rearrange)함으로써 제2 델타 파일을 생성하는 단계;
    복수의 블록들 중 추가 블록들에 기반하여, 복수의 스왑 블록들을 생성하는 단계; 및
    상기 생성된 복수의 스왑 블록들을, 상기 제2 델타 파일에 추가함으로써 제3 델타 파일을 생성하는 단계를 포함하는 것을 특징으로 하는 서버의 동작 방법.
  2. 제1항에 있어서,
    상기 복수의 업데이트 영역들은, 상기 제1 버전 펌웨어와 제2 버전 펌웨어를 비교하여, 변경된 데이터들을 포함하는 영역들에 상응하고,
    상기 제1 델타 파일은, 헤더, 제어 블록 그룹, 변경 블록 그룹, 및 추가 블록 그룹의 순서에 따라 구성되고,
    상기 복수의 블록들은,
    상기 헤더, 상기 제어 블록 그룹에 포함되는 다수의 제어 블록들, 상기 변경 블록 그룹에 포함되는 다수의 변경 블록들, 및 상기 추가 블록 그룹에 포함되는 다수의 추가 블록들을 포함하는 서버의 동작 방법.
  3. 제2항에 있어서,
    상기 복수의 업데이트 영역들은,
    제1 영역 및 제2 영역을 포함하고,
    상기 복수의 유닛 블록들 중 제1 유닛 블록은,
    상기 제1 영역에 상응하는 제1 제어 블록, 상기 제1 제어 블록이 지시하는 제1 변경 블록, 및 상기 제1 제어 블록이 지시하는 제1 추가 블록을 포함하고,
    상기 복수의 유닛 블록들 중 제2 유닛 블록은,
    상기 제2 영역에 상응하는 제2 제어 블록, 상기 제2 제어 블록이 지시하는 제2 변경 블록 및 상기 제2 제어 블록이 지시하는 제2 추가 블록을 포함하는 것을 특징으로 하는 서버의 동작 방법.
  4. 제1항에 있어서,
    상기 복수의 스왑 블록들은,
    상기 추가 블록들이 상기 제1 버전 펌웨어에 삽입(instert)됨으로써 변경되는 위치에 기반하여, 상기 업데이트 영역들 각각의 변경되는 위치에 대한 상대 주소 값을 포함하는 것을 특징으로 하는 서버의 동작 방법.
  5. 펌웨어 업데이트를 위한 서버 장치에 있어서,
    제1 버전 펌웨어에 포함되는 복수의 업데이트 영역들에 기반하여, 복수의 블록들을 포함하는 제1 델타 파일을 생성하는 델타 파일 생성부; 및
    상기 복수의 업데이트 영역들 각각에 상응하는 제어 블록, 변경 블록 및 추가 블록을 그룹핑(grouping)하여 복수의 유닛 블록들을 생성하도록, 상기 제1 델타 파일에 포함된 상기 복수의 블록들을 재배열(rearrange)함으로써 제2 델타 파일을 생성하는 유닛 블록 생성부; 및
    복수의 블록들 중 추가 블록들에 기반하여, 복수의 스왑 블록들을 생성하는 스왑 블록 생성부를 포함하고,
    상기 생성된 복수의 스왑 블록들을, 상기 제2 델타 파일에 추가함으로써 제3 델타 파일을 생성하는 델타 파일 변경부를 포함하는 것을 특징으로 하는 서버 장치.
  6. 제5항에 있어서,
    상기 복수의 업데이트 영역들은,
    상기 제1 버전 펌웨어와 제2 버전 펌웨어를 비교하여, 변경된 데이터들을 포함하는 영역들에 상응하고,
    상기 제1 델타 파일은,
    헤더, 제어 블록 그룹, 변경 블록 그룹, 및 추가 블록 그룹의 순서에 따라 구성되고,
    상기 복수의 블록들은,
    상기 헤더, 상기 제어 블록 그룹에 포함되는 다수의 제어 블록들, 상기 변경 블록 그룹에 포함되는 다수의 변경 블록들, 및 상기 추가 블록 그룹에 포함되는 다수의 추가 블록들을 포함하는 서버 장치.
  7. 제6항에 있어서,
    상기 복수의 업데이트 영역들은,
    제1 영역 및 제2 영역을 포함하고,
    상기 복수의 유닛 블록들 중 제1 유닛 블록은,
    상기 제1 영역에 상응하는 제1 제어 블록, 상기 제1 제어 블록이 지시하는 제1 변경 블록, 및 상기 제1 제어 블록이 지시하는 제1 추가 블록을 포함하고,
    상기 복수의 유닛 블록들 중 제2 유닛 블록은,
    상기 제2 영역에 상응하는 제2 제어 블록, 상기 제2 제어 블록이 지시하는 제2 변경 블록 및 상기 제2 제어 블록이 지시하는 제2 추가 블록을 포함하는 것을 특징으로 하는 서버 장치.
  8. 제5항에 있어서,
    상기 복수의 스왑 블록들은,
    상기 추가 블록들이 상기 제1 버전 펌웨어에 삽입(instert)됨으로써 변경되는 위치에 기반하여, 상기 업데이트 영역들 각각의 상대 주소 값을 변경할 것을 지시하는 것을 특징으로 하는 서버 장치.
  9. 펌웨어 업데이트를 위한 전자 장치의 동작 방법에 있어서,
    서버로부터 복수의 스왑 블록들 및 복수의 유닛 블록들을 포함하는 압축 델타 파일을 수신하는 단계;
    상기 압축 델타 파일에 대한 부분 압축 해제를 수행하여, 상기 복수의 스왑 블록들을 획득하는 단계;
    상기 획득된 복수의 스왑 블록들 각각을 이용하여, 제1 버전 펌웨어의 복수의 업데이트 영역들 각각의 상대 주소 값을 변경하는 단계;
    상기 압축 델타 파일에 대한 부분 압축 해제를 수행하여, 상기 복수의 유닛 블록들을 획득하는 단계;
    상기 획득된 복수의 유닛 블록들을 이용하여, 상기 복수의 업데이트 영역들에 대한 펌웨어 업데이트를 수행하는 단계를 포함하는 것을 특징으로 하는 전자 장치의 동작 방법.
  10. 제9항에 있어서,
    상기 복수의 스왑 블록들 각각은,
    상기 복수의 업데이트 영역들 각각이 변경되어야 할 상대 주소 및 이동되어야 하는 블록의 길이를 지시하는 정보를 포함하는 것을 특징으로 하는 전자 장치의 동작 방법.
KR1020190006294A 2019-01-17 2019-01-17 펌웨어 업데이트 방법 및 이를 수행하는 장치 KR20200089490A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190006294A KR20200089490A (ko) 2019-01-17 2019-01-17 펌웨어 업데이트 방법 및 이를 수행하는 장치
US16/743,904 US11321079B2 (en) 2019-01-17 2020-01-15 Method and device for updating firmware using a modified delta file
US17/704,610 US11797297B2 (en) 2019-01-17 2022-03-25 Method and device for updating firmware using a modified delta file

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190006294A KR20200089490A (ko) 2019-01-17 2019-01-17 펌웨어 업데이트 방법 및 이를 수행하는 장치

Publications (1)

Publication Number Publication Date
KR20200089490A true KR20200089490A (ko) 2020-07-27

Family

ID=71608883

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190006294A KR20200089490A (ko) 2019-01-17 2019-01-17 펌웨어 업데이트 방법 및 이를 수행하는 장치

Country Status (2)

Country Link
US (2) US11321079B2 (ko)
KR (1) KR20200089490A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11816478B1 (en) * 2022-10-21 2023-11-14 Aurora Labs Ltd. Shrinking delta files based on function analysis

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200089490A (ko) * 2019-01-17 2020-07-27 삼성전자주식회사 펌웨어 업데이트 방법 및 이를 수행하는 장치
CN113641230A (zh) * 2020-04-27 2021-11-12 捷普科技(上海)有限公司 电脑系统
JP2022108624A (ja) * 2021-01-13 2022-07-26 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
US11681659B2 (en) * 2021-05-21 2023-06-20 Red Hat, Inc. Hybrid file compression model
CN113553077A (zh) * 2021-05-31 2021-10-26 宁波三星医疗电气股份有限公司 一种智能电表的固件升级方法及智能电表
CN114780128A (zh) * 2022-05-18 2022-07-22 乐鑫信息科技(上海)股份有限公司 嵌入式设备固件更新方法、嵌入式设备及开发端设备
CN117407037A (zh) * 2022-06-30 2024-01-16 荣耀终端有限公司 差分文件的还原方法及电子设备
CN116360836B (zh) * 2023-05-30 2023-09-05 杭州华塑科技股份有限公司 数据更新方法、装置、存储介质和电子设备

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7587467B2 (en) 1999-12-02 2009-09-08 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US6925467B2 (en) 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US7003534B2 (en) 2002-11-18 2006-02-21 Innopath Software, Inc. Generating difference files using module information of embedded software components
US7149508B2 (en) 2003-02-05 2006-12-12 Samsung Electronics Co., Ltd. System and method for delta-based over-the-air software upgrades for a wireless mobile station
US7529779B2 (en) 2004-06-10 2009-05-05 Samsung Electronics Co., Ltd. Apparatus and method for efficient generation of delta files for over-the-air upgrades in a wireless network
US20060112152A1 (en) 2004-11-22 2006-05-25 Microsoft Corporation Smart patching by targeting particular prior versions of a file
CN101326492B (zh) * 2005-10-06 2013-07-17 雷德本德有限公司 用于更新包括压缩版本的内容的方法和系统
KR20080019454A (ko) 2006-08-28 2008-03-04 웹싱크 주식회사 휴대 단말기의 펌웨어 업데이트용 델타파일 생성 방법과델타파일 및 이를 이용한 펌웨어 업데이트 방법
KR100873327B1 (ko) 2007-01-29 2008-12-10 삼성전자주식회사 이동통신 단말기의 펌웨어 업데이트 방법 및 장치
US8015220B1 (en) * 2008-08-05 2011-09-06 Smith Micro Software, Inc. Block-based differencing algorithm
KR20100081720A (ko) 2009-01-07 2010-07-15 삼성전자주식회사 포타 서비스 방법 및 시스템
US20110119240A1 (en) 2009-11-18 2011-05-19 Dana Shapira Method and system for generating a bidirectional delta file
US20120158657A1 (en) 2010-12-21 2012-06-21 International Business Machines Corporation Role-specific access control to sections of artifact content within a configuration management (cm) system
US8997085B2 (en) 2011-06-24 2015-03-31 International Business Machines Corporation Image delta-based upgrade of complex stack in software appliance
CN102650947B (zh) 2012-04-01 2015-06-24 广东欧珀移动通信有限公司 一种Android手持设备连续增量的空中升级方法
KR102124803B1 (ko) 2013-07-23 2020-06-22 엘지전자 주식회사 델타 파일을 생성하는 장치 및 방법과, 그 델타 파일을 이용하여 펌웨어를 업그레이드하는 수신 단말 및 그 업그레이드 방법
KR101599133B1 (ko) 2014-06-09 2016-03-15 주식회사 엔지스테크널러지 네비게이션 장치의 지도 데이터 제공 방법 및 시스템
US9970771B2 (en) * 2016-02-03 2018-05-15 Here Global B.V. Navigational database update package
KR20200089490A (ko) * 2019-01-17 2020-07-27 삼성전자주식회사 펌웨어 업데이트 방법 및 이를 수행하는 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11816478B1 (en) * 2022-10-21 2023-11-14 Aurora Labs Ltd. Shrinking delta files based on function analysis

Also Published As

Publication number Publication date
US11797297B2 (en) 2023-10-24
US20200233659A1 (en) 2020-07-23
US20220214871A1 (en) 2022-07-07
US11321079B2 (en) 2022-05-03

Similar Documents

Publication Publication Date Title
KR20200089490A (ko) 펌웨어 업데이트 방법 및 이를 수행하는 장치
US20070294685A1 (en) Program upgrade system and method for ota-capable portable device
US8719810B2 (en) Program upgrade system and method for over the air-capable mobile terminal
KR101088192B1 (ko) 플래시 메모리 프로그래밍을 위한 시스템 및 방법
CN107329741B (zh) 一种基于指纹识别的软件分布式升级方法与装置
US20130167133A1 (en) Method, terminal and system for upgrading software version
CN105786542A (zh) 智能设备及其系统升级方法
WO2023221735A1 (zh) 嵌入式设备固件更新方法、嵌入式设备及开发端设备
CN106293849B (zh) 一种应用更新方法和终端
CN111796853A (zh) 固件升级方法、系统、设备及计算机存储介质
KR100747901B1 (ko) 이동통신단말기의 실행 파일 압축 방법
CN114253589A (zh) 补丁加载方法,补丁压缩方法以及相关设备
KR100538627B1 (ko) 무선통신단말기의 소프트웨어 부분 업그레이드 방법
CN110825406A (zh) 一种软件升级的方法及相关设备
CN117311853B (zh) Apk文件的处理方法、装置、计算机设备及存储介质
CN117560285B (zh) 一种智控物联整机ota升级方法、客户端及服务端
EP4345607A1 (en) Computer-implemented method and computer program product for providing a software patch, apparatus and communication system
KR20090103214A (ko) 부분 패치를 이용한 휴대용 단말기 소프트웨어의 부분업그레이드 방법 및 이를 수행하는 휴대용 단말기
CN114676050A (zh) 测试方法、装置、设备和计算机可读存储介质
CN112685097A (zh) 一种数据处理方法和装置
CN116501338A (zh) 一种精简安装包云端生成方法、装置、设备及存储介质